gmem.c: array is only paritally filled by memcpy
authorThomas Hindoe Paaboel Andersen <phomes@gmail.com>
Mon, 20 Aug 2012 14:41:42 +0000 (16:41 +0200)
committerThomas Hindoe Paaboel Andersen <phomes@gmail.com>
Mon, 20 Aug 2012 14:41:42 +0000 (16:41 +0200)
The size of the local_data arrray is too large. It should not be
multiplied by the sizeof guint.

The memcpy of profile_data to local_data later will only fill a part of the
array.

Spotted with the PVS-Studio static analyzer

https://bugzilla.gnome.org/show_bug.cgi?id=681501

glib/gmem.c

index 3283f2b..c221453 100644 (file)
@@ -714,7 +714,7 @@ profile_print_locked (guint   *local_data,
 void
 g_mem_profile (void)
 {
-  guint local_data[(MEM_PROFILE_TABLE_SIZE + 1) * 8 * sizeof (profile_data[0])];
+  guint local_data[(MEM_PROFILE_TABLE_SIZE + 1) * 8];
   gsize local_allocs;
   gsize local_zinit;
   gsize local_frees;