Use vp_octets in more places. "char" may be signed on some platforms,
authoraland <aland>
Thu, 1 Sep 2005 22:10:42 +0000 (22:10 +0000)
committeraland <aland>
Thu, 1 Sep 2005 22:10:42 +0000 (22:10 +0000)
so doing array[vp->vp_strvalue[0]] may result in negative indices
to arrays

src/modules/rlm_eap/eap.c

index 2ed870c..7ed9732 100644 (file)
@@ -539,7 +539,7 @@ int eap_compose(EAP_HANDLER *handler)
                 * This memory gets freed up when request is freed up
                 */
                eap_msg = paircreate(PW_EAP_MESSAGE, PW_TYPE_OCTETS);
-               memcpy(eap_msg->vp_strvalue, ptr, len);
+               memcpy(eap_msg->vp_octets, ptr, len);
                eap_msg->length = len;
                pairadd(&(request->reply->vps), eap_msg);
                ptr += len;
@@ -556,7 +556,7 @@ int eap_compose(EAP_HANDLER *handler)
        vp = pairfind(request->reply->vps, PW_MESSAGE_AUTHENTICATOR);
        if (!vp) {
                vp = paircreate(PW_MESSAGE_AUTHENTICATOR, PW_TYPE_OCTETS);
-               memset(vp->vp_strvalue, 0, AUTH_VECTOR_LEN);
+               memset(vp->vp_octets, 0, AUTH_VECTOR_LEN);
                vp->length = AUTH_VECTOR_LEN;
                pairadd(&(request->reply->vps), vp);
        }
@@ -723,7 +723,7 @@ int eap_start(rlm_eap_t *inst, REQUEST *request)
         */
        vp = paircreate(PW_EAP_TYPE, PW_TYPE_INTEGER);
        if (vp) {
-               vp->lvalue = eap_msg->vp_strvalue[4];
+               vp->lvalue = eap_msg->vp_octets[4];
                pairadd(&(request->packet->vps), vp);
        }
 
@@ -745,13 +745,13 @@ int eap_start(rlm_eap_t *inst, REQUEST *request)
         *      We're allowed only a few codes.  Request, Response,
         *      Success, or Failure.
         */
-       if ((eap_msg->vp_strvalue[0] == 0) ||
-           (eap_msg->vp_strvalue[0] > PW_EAP_MAX_CODES)) {
+       if ((eap_msg->vp_octets[0] == 0) ||
+           (eap_msg->vp_octets[0] > PW_EAP_MAX_CODES)) {
                DEBUG2("  rlm_eap: Unknown EAP packet");
        } else {
                DEBUG2("  rlm_eap: EAP packet type %s id %d length %d",
-                      eap_codes[eap_msg->vp_strvalue[0]],
-                      eap_msg->vp_strvalue[1],
+                      eap_codes[eap_msg->vp_octets[0]],
+                      eap_msg->vp_octets[1],
                       eap_msg->length);
        }
 
@@ -761,8 +761,8 @@ int eap_start(rlm_eap_t *inst, REQUEST *request)
         *      sending success/fail packets to us, as it doesn't make
         *      sense.
         */
-       if ((eap_msg->vp_strvalue[0] != PW_EAP_REQUEST) &&
-           (eap_msg->vp_strvalue[0] != PW_EAP_RESPONSE)) {
+       if ((eap_msg->vp_octets[0] != PW_EAP_REQUEST) &&
+           (eap_msg->vp_octets[0] != PW_EAP_RESPONSE)) {
                DEBUG2("  rlm_eap: Ignoring EAP packet which we don't know how to handle.");
                return EAP_FAIL;
        }
@@ -775,11 +775,11 @@ int eap_start(rlm_eap_t *inst, REQUEST *request)
         *      EAP-Identity, Notification, and NAK are all handled
         *      internally, so they never have handlers.
         */
-       if ((eap_msg->vp_strvalue[4] >= PW_EAP_MD5) &&
+       if ((eap_msg->vp_octets[4] >= PW_EAP_MD5) &&
            inst->ignore_unknown_eap_types &&
-           ((eap_msg->vp_strvalue[4] == 0) ||
-            (eap_msg->vp_strvalue[4] > PW_EAP_MAX_TYPES) ||
-            (inst->types[eap_msg->vp_strvalue[4]] == NULL))) {
+           ((eap_msg->vp_octets[4] == 0) ||
+            (eap_msg->vp_octets[4] > PW_EAP_MAX_TYPES) ||
+            (inst->types[eap_msg->vp_octets[4]] == NULL))) {
                DEBUG2("  rlm_eap:  Ignoring Unknown EAP type");
                return EAP_NOOP;
        }
@@ -799,12 +799,12 @@ int eap_start(rlm_eap_t *inst, REQUEST *request)
         *      returns NOOP, and another module may choose to proxy
         *      the request.
         */
-       if ((eap_msg->vp_strvalue[4] == PW_EAP_NAK) &&
+       if ((eap_msg->vp_octets[4] == PW_EAP_NAK) &&
            (eap_msg->length >= (EAP_HEADER_LEN + 2)) &&
            inst->ignore_unknown_eap_types &&
-           ((eap_msg->vp_strvalue[5] == 0) ||
-            (eap_msg->vp_strvalue[5] > PW_EAP_MAX_TYPES) ||
-            (inst->types[eap_msg->vp_strvalue[5]] == NULL))) {
+           ((eap_msg->vp_octets[5] == 0) ||
+            (eap_msg->vp_octets[5] > PW_EAP_MAX_TYPES) ||
+            (inst->types[eap_msg->vp_octets[5]] == NULL))) {
                DEBUG2("  rlm_eap: Ignoring NAK with request for unknown EAP type");
                return EAP_NOOP;
        }