+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
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) {
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);
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);
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;