From: Alan T. DeKok Date: Wed, 27 Dec 2017 16:02:00 +0000 (-0500) Subject: create state on Access-Challenge, if it isn't already there X-Git-Tag: release_3_0_16~18 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a2401688fde0d20a96828ee4e2728d1a57165d52;p=thirdparty%2Ffreeradius-server.git create state on Access-Challenge, if it isn't already there --- diff --git a/src/main/state.c b/src/main/state.c index b195a7caadb..3676e838170 100644 --- a/src/main/state.c +++ b/src/main/state.c @@ -449,7 +449,30 @@ bool fr_state_put_vps(REQUEST *request, RADIUS_PACKET *original, RADIUS_PACKET * fr_state_t *state = &global_state; if (!request->state) { + size_t i; + uint32_t x; + VALUE_PAIR *vp; + uint8_t buffer[16]; + RDEBUG3("session-state: Nothing to cache"); + + if (packet->code != PW_CODE_ACCESS_CHALLENGE) return true; + + vp = fr_pair_find_by_num(packet->vps, PW_STATE, 0, TAG_ANY); + if (vp) return true; + + /* + * + */ + for (i = 0; i < sizeof(buffer) / sizeof(x); i++) { + x = fr_rand(); + memcpy(buffer + (i * 4), &x, sizeof(x)); + } + + vp = fr_pair_afrom_num(packet, PW_STATE, 0); + fr_pair_value_memcpy(vp, buffer, sizeof(buffer)); + fr_pair_add(&packet->vps, vp); + return true; }