From: Alan T. DeKok Date: Tue, 5 Jan 2010 11:52:00 +0000 (+0100) Subject: Correctly handle large attributes X-Git-Tag: release_2_1_9~100 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5854629fd5774503b26129b1c226e1a6d4fcb348;p=thirdparty%2Ffreeradius-server.git Correctly handle large attributes --- diff --git a/src/lib/vqp.c b/src/lib/vqp.c index 76672936b4c..ed5cecaee2a 100644 --- a/src/lib/vqp.c +++ b/src/lib/vqp.c @@ -374,7 +374,7 @@ RADIUS_PACKET *vqp_recv(int sockfd) rad_free(&packet); return NULL; } - attrlen = ptr[5]; + attrlen = (ptr[4] << 8) | ptr[5]; ptr += 6 + attrlen; length -= (6 + attrlen); } @@ -507,8 +507,8 @@ int vqp_decode(RADIUS_PACKET *packet) case PW_TYPE_OCTETS: case PW_TYPE_STRING: vp->length = (length > MAX_VMPS_LEN) ? MAX_VMPS_LEN : length; - memcpy(vp->vp_octets, ptr, length); - vp->vp_octets[length] = '\0'; + memcpy(vp->vp_octets, ptr, vp->length); + vp->vp_octets[vp->length] = '\0'; break; } ptr += length;