[glib: 1/2] glib-unix.c: fix heap corruption in g_unix_get_passwd_entry



commit 473b3b4ce409063bbb28cacdf26e74bf8ac084c3
Author: Alexander Kanavin <alex kanavin gmail com>
Date:   Wed Apr 1 00:51:39 2020 +0200

    glib-unix.c: fix heap corruption in g_unix_get_passwd_entry
    
    malloc() was given too small value (size of pointer,
    rather than struct it points to), and subsequent call
    getpwnam_r() wrote past the end of allocated block - easily
    seen with valgrind.
    
    Signed-off-by: Alexander Kanavin <alex kanavin gmail com>

 glib/glib-unix.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
---
diff --git a/glib/glib-unix.c b/glib/glib-unix.c
index 87fa57ae8..608fbd6e6 100644
--- a/glib/glib-unix.c
+++ b/glib/glib-unix.c
@@ -485,7 +485,7 @@ g_unix_get_passwd_entry (const gchar  *user_name,
        * loop until it’s big enough). Add 6 extra bytes to work around a bug in
        * macOS < 10.3. See #156446.
        */
-      buffer = g_malloc0 (sizeof (buffer) + string_buffer_size + 6);
+      buffer = g_malloc0 (sizeof (*buffer) + string_buffer_size + 6);
 
       errno = 0;
       retval = getpwnam_r (user_name, &buffer->pwd, buffer->string_buffer,


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