]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
src/usermod.c: update_gshadow_file(): Fix RESOURCE_LEAK (CWE-772)
authorAlejandro Colomar <alx@kernel.org>
Fri, 17 May 2024 00:15:15 +0000 (02:15 +0200)
committerIker Pedrosa <ikerpedrosam@gmail.com>
Mon, 20 May 2024 07:37:01 +0000 (09:37 +0200)
Report:
> shadow-4.15.0/src/usermod.c:864:3: alloc_fn: Storage is returned from allocation function "__sgr_dup".
> shadow-4.15.0/src/usermod.c:864:3: var_assign: Assigning: "nsgrp" = storage returned from "__sgr_dup(sgrp)".
> shadow-4.15.0/src/usermod.c:964:1: leaked_storage: Variable "nsgrp" going out of scope leaks the storage it points to.
> 962|                   free (nsgrp);
> 963|           }
> 964|-> }
> 965|   #endif                                /* SHADOWGRP */
> 966|

Link: https://issues.redhat.com/browse/RHEL-35383
Reported-by: Iker Pedrosa <ipedrosa@redhat.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
src/usermod.c

index e0cfdd837f1c90ce682dd9eeb8ec57a5ba5b2568..bb5d35355e2dadaee10494c8e64c46595411e11a 100644 (file)
@@ -921,9 +921,8 @@ update_gshadow_file(void)
                        SYSLOG ((LOG_INFO, "add '%s' to shadow group '%s'",
                                 user_newname, nsgrp->sg_name));
                }
-               if (!changed) {
-                       continue;
-               }
+               if (!changed)
+                       goto free_nsgrp;
 
                changed = false;
 
@@ -939,6 +938,7 @@ update_gshadow_file(void)
                        fail_exit (E_GRP_UPDATE);
                }
 
+free_nsgrp:
                free (nsgrp);
        }
 }