svn commit: trunk/uClibc/libc/sysdeps/linux/common
vapier at uclibc.org
vapier at uclibc.org
Wed Dec 28 21:20:00 UTC 2005
Author: vapier
Date: 2005-12-28 13:19:58 -0800 (Wed, 28 Dec 2005)
New Revision: 12998
Log:
make sure we handle the (malloc(0)==NULL) case as Aubrey points out via the e-mail list
Modified:
trunk/uClibc/libc/sysdeps/linux/common/getgroups.c
trunk/uClibc/libc/sysdeps/linux/common/setgroups.c
Changeset:
Modified: trunk/uClibc/libc/sysdeps/linux/common/getgroups.c
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/common/getgroups.c 2005-12-28 21:16:11 UTC (rev 12997)
+++ trunk/uClibc/libc/sysdeps/linux/common/getgroups.c 2005-12-28 21:19:58 UTC (rev 12998)
@@ -32,7 +32,7 @@
size = MIN(size, sysconf(_SC_NGROUPS_MAX));
kernel_groups = (__kernel_gid_t *)malloc(sizeof(*kernel_groups) * size);
- if (kernel_groups == NULL)
+ if (size && kernel_groups == NULL)
goto ret_error;
ngids = __syscall_getgroups(size, kernel_groups);
@@ -41,7 +41,9 @@
groups[i] = kernel_groups[i];
}
}
- free(kernel_groups);
+
+ if (kernel_groups)
+ free(kernel_groups);
return ngids;
}
}
Modified: trunk/uClibc/libc/sysdeps/linux/common/setgroups.c
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/common/setgroups.c 2005-12-28 21:16:11 UTC (rev 12997)
+++ trunk/uClibc/libc/sysdeps/linux/common/setgroups.c 2005-12-28 21:19:58 UTC (rev 12998)
@@ -26,11 +26,13 @@
return -1;
} else {
size_t i;
- __kernel_gid_t *kernel_groups;
+ __kernel_gid_t *kernel_groups = NULL;
- kernel_groups = (__kernel_gid_t *)malloc(sizeof(*kernel_groups) * size);
- if (kernel_groups == NULL)
- goto ret_error;
+ if (size) {
+ kernel_groups = (__kernel_gid_t *)malloc(sizeof(*kernel_groups) * size);
+ if (kernel_groups == NULL)
+ goto ret_error;
+ }
for (i = 0; i < size; i++) {
kernel_groups[i] = (groups)[i];
@@ -40,7 +42,8 @@
}
i = __syscall_setgroups(size, kernel_groups);
- free(kernel_groups);
+ if (kernel_groups)
+ free(kernel_groups);
return i;
}
}
More information about the uClibc-cvs
mailing list