diff options
Diffstat (limited to 'net/nbd-server/files/patch-nbd-server.c')
-rw-r--r-- | net/nbd-server/files/patch-nbd-server.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/net/nbd-server/files/patch-nbd-server.c b/net/nbd-server/files/patch-nbd-server.c new file mode 100644 index 000000000000..383f8961562c --- /dev/null +++ b/net/nbd-server/files/patch-nbd-server.c @@ -0,0 +1,26 @@ +diff -urN nbd-2.8.2.orig/nbd-server.c nbd-2.8.2/nbd-server.c +--- nbd-2.8.2.orig/nbd-server.c Wed Nov 9 22:38:44 2005 ++++ nbd-server.c Thu Dec 22 16:04:47 2005 +@@ -363,11 +363,11 @@ + * is severely wrong) + **/ + void sigchld_handler(int s) { +- int* status=NULL; ++ int status; + int* i; + pid_t pid; + +- while((pid=wait(status)) > 0) { ++ while ((pid = waitpid(-1, &status, WNOHANG)) > 0) { + if(WIFEXITED(status)) { + msg3(LOG_INFO, "Child exited with %d", WEXITSTATUS(status)); + } +@@ -684,7 +684,7 @@ + + if (request.magic != htonl(NBD_REQUEST_MAGIC)) + err("Not enough magic."); +- if (len > BUFSIZE) ++ if (len > (BUFSIZE-sizeof(struct nbd_reply))) + err("Request too big!"); + #ifdef DODBG + printf("%s from %Lu (%Lu) len %d, ", request.type ? "WRITE" : |