Assign a value to serve when using modern protocol
authorWouter Verhelst <w@uter.be>
Sat, 12 Feb 2011 18:50:29 +0000 (19:50 +0100)
committerWouter Verhelst <w@uter.be>
Sat, 12 Feb 2011 18:54:11 +0000 (19:54 +0100)
We dereference this pointer later on, so need to make sure it's
actually valid.

As an added precaution, initialize it to NULL, so that we catch any
further incorrect dereferences, too.

nbd-server.c

index edb3eee..ec5b84f 100644 (file)
@@ -1745,7 +1745,7 @@ int serveloop(GArray* servers) {
                memcpy(&rset, &mset, sizeof(fd_set));
                if(select(max+1, &rset, NULL, NULL, NULL)>0) {
                        int net = 0;
-                       SERVER* serve;
+                       SERVER* serve=NULL;
 
                        DEBUG("accept, ");
                        if(FD_ISSET(modernsock, &rset)) {
@@ -1757,6 +1757,7 @@ int serveloop(GArray* servers) {
                                        close(net);
                                        net=0;
                                }
+                               serve = client->server;
                        }
                        for(i=0;i<servers->len && !net;i++) {
                                serve=&(g_array_index(servers, SERVER, i));