Browse Source

ENH: Attempt to remove cast warnings

Andy Cedilnik 22 years ago
parent
commit
f5cf6676a7
3 changed files with 16 additions and 7 deletions
  1. 6 4
      Source/CTest/Curl/connect.c
  2. 3 1
      Source/CTest/Curl/if2ip.c
  3. 7 2
      Source/CTest/Curl/url.c

+ 6 - 4
Source/CTest/Curl/connect.c

@@ -619,14 +619,14 @@ CURLcode Curl_connecthost(struct connectdata *conn,  /* context */
   /* This is the loop that attempts to connect to all IP-addresses we
      know for the given host. One by one. */
   for(rc=-1, aliasindex=0;
-      rc && (struct in_addr *)remotehost->addr->h_addr_list[aliasindex];
+      rc && (void *)remotehost->addr->h_addr_list[aliasindex];
       aliasindex++) {
     struct sockaddr_in serv_addr;
 
     /* do this nasty work to do the connect */
     memset((char *) &serv_addr, '\0', sizeof(serv_addr));
-    memcpy((char *)&(serv_addr.sin_addr),
-           (struct in_addr *)remotehost->addr->h_addr_list[aliasindex],
+    memcpy(&(serv_addr.sin_addr),
+           remotehost->addr->h_addr_list[aliasindex],
            sizeof(struct in_addr));
     serv_addr.sin_family = remotehost->addr->h_addrtype;
     serv_addr.sin_port = htons((unsigned short)port);
@@ -706,8 +706,10 @@ CURLcode Curl_connecthost(struct connectdata *conn,  /* context */
   /* leave the socket in non-blocking mode */
 
   if(addr)
+    {
     /* this is the address we've connected to */
-    *addr = (struct in_addr *)remotehost->addr->h_addr_list[aliasindex];
+    memcpy(addr, &remotehost->addr->h_addr_list[aliasindex], sizeof(struct in_addr*));
+    }
 #endif
 
   /* allow NULL-pointers to get passed in */

+ 3 - 1
Source/CTest/Curl/if2ip.c

@@ -106,7 +106,9 @@ char *Curl_if2ip(char *interface, char *buf, int buf_size)
     else {
       struct in_addr in;
 
-      struct sockaddr_in *s = (struct sockaddr_in *)&req.ifr_dstaddr;
+      struct sockaddr_in *s;
+      struct sockaddr *sadd = &req.ifr_dstaddr;
+      memcpy(&s, &sadd, sizeof(struct sockaddr_in*));
       memcpy(&in, &(s->sin_addr.s_addr), sizeof(in));
 #if defined(HAVE_INET_NTOA_R)
       ip = inet_ntoa_r(in,buf,buf_size);

+ 7 - 2
Source/CTest/Curl/url.c

@@ -1531,7 +1531,10 @@ static int handleSock5Proxy(
 #endif
   }
 
-  *((unsigned short*)&socksreq[8]) = htons(conn->remote_port);
+  {
+  unsigned short htons_res = htons(conn->remote_port);
+  memcpy(&socksreq[8], &htons_res, sizeof(unsigned short*));
+  }
 
   {
     const int packetsize = 10;
@@ -1554,11 +1557,13 @@ static int handleSock5Proxy(
       return 1;
     }
     if (socksreq[1] != 0) { /* Anything besides 0 is an error */
+        unsigned short ntohs_arg;
+        memcpy(&ntohs_arg, &socksreq[8], sizeof(unsigned short*));
         failf(conn->data,
               "Can't complete SOCKS5 connection to %d.%d.%d.%d:%d. (%d)",
               (unsigned char)socksreq[4], (unsigned char)socksreq[5],
               (unsigned char)socksreq[6], (unsigned char)socksreq[7],
-              (unsigned int)ntohs(*(unsigned short*)(&socksreq[8])),
+              (unsigned int)ntohs(ntohs_arg),
               socksreq[1]);
         return 1;
     }