]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/plugins/radius/sendserver.c
Fixing CLang -Wpointer-sign warnings in sendserver.c
[ppp.git] / pppd / plugins / radius / sendserver.c
index 3612b8d57a88a8f291bd8b84635c5838f7390b09..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);
                }
        }
@@ -244,7 +245,7 @@ int rc_send_server (SEND_DATA *data, char *msg, REQUEST_INFO *info)
        sin = (struct sockaddr_in *) & salocal;
        memset ((char *) sin, '\0', (size_t) length);
        sin->sin_family = AF_INET;
-       sin->sin_addr.s_addr = htonl(INADDR_ANY);
+       sin->sin_addr.s_addr = htonl(rc_own_bind_ipaddress());
        sin->sin_port = htons ((unsigned short) 0);
        if (bind (sockfd, (struct sockaddr *) sin, length) < 0 ||
                   getsockname (sockfd, (struct sockaddr *) sin, &length) < 0)
@@ -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
        {