* lib/shadowmem.c: Only copy the required fields of the struct

spwd. (start with the primitive types)
	* lib/shadowmem.c: Avoid memzero() on a possibly NULL pointer.
	* lib/groupmem.c: Only copy the required fields of the struct
	group. (start with the primitive types)
	* lib/groupmem.c: Avoid memzero() on a possibly NULL pointer.
	* lib/groupmem.c: Free gr_mem in addition to its elements.
	* lib/sgroupio.c: The struct sgrp has no primitive types to be
	copied initially.
	* lib/sgroupio.c: Avoid memzero() on a possibly NULL pointer.
	* lib/sgroupio.c: Free sg_mem and sg_add in addition to their
	elements.
	* lib/pwmem.c: Only copy the required fields of the struct
	passwd. (start with the primitive types)
This commit is contained in:
nekral-guest
2009-09-07 19:08:10 +00:00
parent 1a86dc913f
commit d346c7c6a7
5 changed files with 57 additions and 22 deletions

View File

@ -48,7 +48,8 @@
if (NULL == pw) {
return NULL;
}
*pw = *pwent;
pw->pw_uid = pwent->pw_uid;
pw->pw_gid = pwent->pw_gid;
pw->pw_name = strdup (pwent->pw_name);
if (NULL == pw->pw_name) {
free(pw);
@ -91,8 +92,10 @@
void pw_free (/*@out@*/ /*@only@*/struct passwd *pwent)
{
free (pwent->pw_name);
memzero (pwent->pw_passwd, strlen (pwent->pw_passwd));
free (pwent->pw_passwd);
if (pwent->pw_passwd) {
memzero (pwent->pw_passwd, strlen (pwent->pw_passwd));
free (pwent->pw_passwd);
}
free (pwent->pw_gecos);
free (pwent->pw_dir);
free (pwent->pw_shell);