windows-afsd-xdr-free-20090401
authorJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 1 Apr 2009 17:35:29 +0000 (17:35 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 1 Apr 2009 17:35:29 +0000 (17:35 +0000)
LICENSE MIT

make use of xdr_free() to release memory allocated within afsrpc.dll.
this prevents crashes when the library is built with a different
runtime library version than the application.

fix signed/unsigned warnings in the same code snippet

src/WINNT/afsd/cm_volume.c

index 03862b8..e41d05a 100644 (file)
@@ -163,7 +163,8 @@ long cm_UpdateVolumeLocation(struct cm_cell *cellp, cm_user_t *userp, cm_req_t *
                     cm_volume_t *volp)
 {
     cm_conn_t *connp;
-    int i, j, k;
+    int i;
+    afs_uint32 j, k;
     cm_serverRef_t *tsrp;
     cm_server_t *tsp;
     struct sockaddr_in tsockAddr;
@@ -412,7 +413,7 @@ long cm_UpdateVolumeLocation(struct cm_cell *cellp, cm_user_t *userp, cm_req_t *
                         serverUUID[j] = uuid;
                     }
 
-                    free(addrs.bulkaddrs_val);  /* This is wrong */
+                    xdr_free(addrs.bulkaddrs_val, addrs.bulkaddrs_len * sizeof(*addrs.bulkaddrs_val));
 
                     if (nentries == 0)
                         code = CM_ERROR_INVAL;