]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
lib: check NULL before freeing passwd data 446/head
authorIker Pedrosa <ipedrosa@redhat.com>
Thu, 18 Nov 2021 15:48:26 +0000 (16:48 +0100)
committerIker Pedrosa <ipedrosa@redhat.com>
Fri, 19 Nov 2021 11:09:59 +0000 (12:09 +0100)
Add an additional NULL check condition in spw_free() and pw_free() to
avoid freeing an already empty pointer.

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
lib/pwmem.c
lib/shadowmem.c

index 17d2eb2198792f57037bbb9760f6e8c467724a7b..9f184d5e173839e6b371e0628c8e9671fadfe79e 100644 (file)
 
 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);
 }
 
index 8989598f8bbd85e96533f2eea75fc0a90034d616..1d047cc046d13abb96034eb817ae8a5f3164fb80 100644 (file)
 
 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);
 }