commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hurd] 13/37: Make sure to free content dir in procfs


From: Samuel Thibault
Subject: [hurd] 13/37: Make sure to free content dir in procfs
Date: Mon, 09 Feb 2015 09:59:09 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to annotated tag upstream/hurd/0.5.git20150208
in repository hurd.

commit 5fe615a4d66f4dea48812ed9e4f250010a8f9298
Author: Lancelot SIX <address@hidden>
Date:   Thu Dec 25 22:01:53 2014 +0100

    Make sure to free content dir in procfs
    
    In procfs/netfs.c:netfs_get_dirents, make sure to free the memory
    allocated with the "get_contents" callback of nodes.
---
 procfs/netfs.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/procfs/netfs.c b/procfs/netfs.c
index 276c57c..737abbc 100644
--- a/procfs/netfs.c
+++ b/procfs/netfs.c
@@ -161,6 +161,8 @@ error_t netfs_get_dirents (struct iouser *cred, struct node 
*dir,
                           vm_size_t bufsize, int *amt)
 {
   char *contents;
+  char *first_content; // Keep pointer to the dir content's buffer to free it
+                       // at the end of the procedure
   ssize_t contents_len;
   error_t err;
 
@@ -170,6 +172,7 @@ error_t netfs_get_dirents (struct iouser *cred, struct node 
*dir,
   err = procfs_get_contents (dir, &contents, &contents_len);
   if (err)
     return err;
+  first_content = contents;
 
   /* We depend on the fact that CONTENTS is terminated. */
   assert (contents_len == 0 || contents[contents_len - 1] == '\0');
@@ -188,7 +191,10 @@ error_t netfs_get_dirents (struct iouser *cred, struct 
node *dir,
     {
       char *n = mmap (0, *datacnt, PROT_READ | PROT_WRITE, MAP_ANONYMOUS, 0, 
0);
       if (n == MAP_FAILED)
-       return ENOMEM;
+        {
+         free (first_content);
+         return ENOMEM;
+       }
 
       *data = n;
     }
@@ -196,6 +202,7 @@ error_t netfs_get_dirents (struct iouser *cred, struct node 
*dir,
   /* Do the actual conversion. */
   *amt = putentries (contents, contents_len, nentries, *data, datacnt);
 
+  free (first_content);
   return 0;
 }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]