commit-hurd
[Top][All Lists]
Advanced

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

[hurd] 39/87: libports: avoid realloc(3) corner case


From: Samuel Thibault
Subject: [hurd] 39/87: libports: avoid realloc(3) corner case
Date: Sun, 09 Nov 2014 11:05:02 +0000

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

sthibault pushed a commit to branch upstream
in repository hurd.

commit 8821d8a213008eb723414c6c70de384830ea10d7
Author: Justus Winter <address@hidden>
Date:   Mon Jun 16 17:34:22 2014 +0200

    libports: avoid realloc(3) corner case
    
    If the size argument is 0, realloc may either return NULL, or return a
    pointer that is only valid for use with free(3).  In either case, the
    memory is freed.  So if realloc would return NULL (it does not on
    GNU), the current code would double free p.
    
    Found using the Clang Static Analyzer.
    
    * libports/bucket-iterate.c (_ports_bucket_class_iterate): Avoid
    calling realloc if no ports were matched.
---
 libports/bucket-iterate.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libports/bucket-iterate.c b/libports/bucket-iterate.c
index babc204..2d1b00d 100644
--- a/libports/bucket-iterate.c
+++ b/libports/bucket-iterate.c
@@ -65,7 +65,7 @@ _ports_bucket_class_iterate (struct port_bucket *bucket,
     }
   pthread_mutex_unlock (&_ports_lock);
 
-  if (n != nr_items)
+  if (n != 0 && n != nr_items)
     {
       /* We allocated too much.  Release unused memory.  */
       void **new = realloc (p, n * sizeof *p);

-- 
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]