diff --git a/lib/pwmem.c b/lib/pwmem.c index 17d2eb21..9f184d5e 100644 --- a/lib/pwmem.c +++ b/lib/pwmem.c @@ -93,14 +93,16 @@ void pw_free (/*@out@*/ /*@only@*/struct passwd *pwent) { - free (pwent->pw_name); - if (pwent->pw_passwd) { - memzero (pwent->pw_passwd, strlen (pwent->pw_passwd)); - free (pwent->pw_passwd); + if (pwent != NULL) { + free (pwent->pw_name); + 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); + free (pwent); } - free (pwent->pw_gecos); - free (pwent->pw_dir); - free (pwent->pw_shell); - free (pwent); } diff --git a/lib/shadowmem.c b/lib/shadowmem.c index 8989598f..1d047cc0 100644 --- a/lib/shadowmem.c +++ b/lib/shadowmem.c @@ -79,11 +79,13 @@ void spw_free (/*@out@*/ /*@only@*/struct spwd *spent) { - free (spent->sp_namp); - if (NULL != spent->sp_pwdp) { - memzero (spent->sp_pwdp, strlen (spent->sp_pwdp)); - free (spent->sp_pwdp); + if (spent != NULL) { + free (spent->sp_namp); + if (NULL != spent->sp_pwdp) { + memzero (spent->sp_pwdp, strlen (spent->sp_pwdp)); + free (spent->sp_pwdp); + } + free (spent); } - free (spent); }