Fix Debian bug #675824

* lib/groupmem.c (__gr_dup): Support libc which define other
	fields in struct group.
	* lib/pwmem.c: Likewise for struct passwd.
	* lib/shadowmem.c: Likewise for struct spwd.
	* lib/sgroupio.c: Apply same logic, even if this structure is
	defined internally.
This commit is contained in:
Nicolas François 2013-08-06 16:30:38 +02:00
parent 5d491ef9da
commit fcb7222b1a
5 changed files with 19 additions and 0 deletions

View File

@ -1,3 +1,13 @@
2013-08-06 Nicolas François <nicolas.francois@centraliens.net>
Fix Debian bug #675824
* lib/groupmem.c (__gr_dup): Support libc which define other
fields in struct group.
* lib/pwmem.c: Likewise for struct passwd.
* lib/shadowmem.c: Likewise for struct spwd.
* lib/sgroupio.c: Apply same logic, even if this structure is
defined internally.
2013-08-05 Nicolas François <nicolas.francois@centraliens.net>
* lib/groupio.c: Revert change from 2013-07-29. The length of the

View File

@ -48,6 +48,8 @@
if (NULL == gr) {
return NULL;
}
/* The libc might define other fields. They won't be copied. */
memset (gr, 0, sizeof *gr);
gr->gr_gid = grent->gr_gid;
gr->gr_name = strdup (grent->gr_name);
if (NULL == gr->gr_name) {

View File

@ -48,6 +48,8 @@
if (NULL == pw) {
return NULL;
}
/* The libc might define other fields. They won't be copied. */
memset (pw, 0, sizeof *pw);
pw->pw_uid = pwent->pw_uid;
pw->pw_gid = pwent->pw_gid;
pw->pw_name = strdup (pwent->pw_name);

View File

@ -51,6 +51,9 @@
if (NULL == sg) {
return NULL;
}
/* Do the same as the other _dup function, even if we know the
* structure. */
memset (sg, 0, sizeof *sg);
sg->sg_name = strdup (sgent->sg_name);
if (NULL == sg->sg_name) {
free (sg);

View File

@ -49,6 +49,8 @@
if (NULL == sp) {
return NULL;
}
/* The libc might define other fields. They won't be copied. */
memset (sp, 0, sizeof *sp);
sp->sp_lstchg = spent->sp_lstchg;
sp->sp_min = spent->sp_min;
sp->sp_max = spent->sp_max;