]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/plugins/radius/sendserver.c
Merge pull request #297 from mjeveritt/patch-11-test-pr
[ppp.git] / pppd / plugins / radius / sendserver.c
index f68aa67f0380617b5941c1c574b9201b2731b30d..f6012868e2dbbbcb6de5f3a4806088d0c9f761a9 100644 (file)
@@ -104,7 +104,7 @@ static int rc_pack_list (VALUE_PAIR *vp, char *secret, AUTH_HDR *auth)
                    memcpy ((char *) passbuf, vp->strvalue, (size_t) length);
 
                    secretlen = strlen (secret);
-                   vector = (char *)auth->vector;
+                   vector = auth->vector;
                    for(i = 0; i < padded_length; i += AUTH_VECTOR_LEN) {
                        /* Calculate the MD5 digest*/
                        strcpy ((char *) md5buf, secret);
@@ -200,10 +200,10 @@ int rc_send_server (SEND_DATA *data, char *msg, REQUEST_INFO *info)
        AUTH_HDR       *auth, *recv_auth;
        UINT4           auth_ipaddr;
        char           *server_name;    /* Name of server to query */
-       int             salen;
+       socklen_t       salen;
        int             result;
        int             total_length;
-       int             length;
+       socklen_t       length;
        int             retry_max;
        int             secretlen;
        char            secret[MAX_SECRET_LENGTH + 1];
@@ -228,6 +228,7 @@ int rc_send_server (SEND_DATA *data, char *msg, REQUEST_INFO *info)
        {
                if (rc_find_server (server_name, &auth_ipaddr, secret) != 0)
                {
+                       memset (secret, '\0', sizeof (secret));
                        return (ERROR_RC);
                }
        }
@@ -272,7 +273,7 @@ int rc_send_server (SEND_DATA *data, char *msg, REQUEST_INFO *info)
                memset((char *) auth->vector, 0, AUTH_VECTOR_LEN);
                secretlen = strlen (secret);
                memcpy ((char *) auth + total_length, secret, secretlen);
-               rc_md5_calc (vector, (char *) auth, total_length + secretlen);
+               rc_md5_calc (vector, (unsigned char *) auth, total_length + secretlen);
                memcpy ((char *) auth->vector, (char *) vector, AUTH_VECTOR_LEN);
        }
        else
@@ -302,7 +303,7 @@ int rc_send_server (SEND_DATA *data, char *msg, REQUEST_INFO *info)
                FD_SET (sockfd, &readfds);
                if (select (sockfd + 1, &readfds, NULL, NULL, &authtime) < 0)
                {
-                       if (errno == EINTR)
+                       if (errno == EINTR && !got_sigterm)
                                continue;
                        error("rc_send_server: select: %m");
                        memset (secret, '\0', sizeof (secret));
@@ -362,7 +363,7 @@ int rc_send_server (SEND_DATA *data, char *msg, REQUEST_INFO *info)
        {
                if ((vp = rc_avpair_get(vp, PW_REPLY_MESSAGE)))
                {
-                       strcat(msg, vp->strvalue);
+                       strcat(msg, (char*) vp->strvalue);
                        strcat(msg, "\n");
                        vp = vp->next;
                }
@@ -428,7 +429,7 @@ static int rc_check_reply (AUTH_HDR *auth, int bufferlen, char *secret,
        memcpy ((char *) reply_digest, (char *) auth->vector, AUTH_VECTOR_LEN);
        memcpy ((char *) auth->vector, (char *) vector, AUTH_VECTOR_LEN);
        memcpy ((char *) auth + totallen, secret, secretlen);
-       rc_md5_calc (calc_digest, (char *) auth, totallen + secretlen);
+       rc_md5_calc (calc_digest, (unsigned char *) auth, totallen + secretlen);
 
 #ifdef DIGEST_DEBUG
        {