fix
authorMiklos Szeredi <miklos@szeredi.hu>
Fri, 2 Dec 2005 11:05:41 +0000 (11:05 +0000)
committerMiklos Szeredi <miklos@szeredi.hu>
Fri, 2 Dec 2005 11:05:41 +0000 (11:05 +0000)
ChangeLog
lib/fuse.c

index ca86052b83cdfb20da931ca036678164f321a1e9..cc490145e5c7281e7cc75672f23f94a01891392c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-12-02  Miklos Szeredi <miklos@szeredi.hu>
+
+       * Fix memory leak in fuse_read_cmd()/fuse_process_cmd().  Bug
+       reported by Vincenzo Ciancia
+
+       * Handle exit-by-umount in fuse_read_cmd()
+
 2005-11-29  Miklos Szeredi <miklos@szeredi.hu>
 
        * Check if '-msoft-float' option is supported by compiler when
index 4146d418b0fdcd69033fce5bf1e06eb1e7de5c69..8733164a98f5326017a63f41e0ec2308c7b48407 100644 (file)
@@ -1742,6 +1742,7 @@ static void free_cmd(struct fuse_cmd *cmd)
 void fuse_process_cmd(struct fuse *f, struct fuse_cmd *cmd)
 {
     fuse_session_process(f->se, cmd->buf, cmd->buflen, cmd->ch);
+    free_cmd(cmd);
 }
 
 int fuse_exited(struct fuse *f)
@@ -1779,6 +1780,8 @@ struct fuse_cmd *fuse_read_cmd(struct fuse *f)
         int res = fuse_chan_receive(ch, cmd->buf, bufsize);
         if (res <= 0) {
             free_cmd(cmd);
+            if (res == -1)
+                fuse_exit(f);
             return NULL;
         }
         cmd->buflen = res;