]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
src/usermod.c: update_group_file(): Fix RESOURCE_LEAK (CWE-772)
authorAlejandro Colomar <alx@kernel.org>
Thu, 16 May 2024 11:54:06 +0000 (13:54 +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:734:3: alloc_fn: Storage is returned from allocation function "__gr_dup".
> shadow-4.15.0/src/usermod.c:734:3: var_assign: Assigning: "ngrp" = storage returned from "__gr_dup(grp)".
> shadow-4.15.0/src/usermod.c:815:1: leaked_storage: Variable "ngrp" going out of scope leaks the storage it points to.
> 813|                   gr_free(ngrp);
> 814|           }
> 815|-> }
> 816|
> 817|   #ifdef SHADOWGRP

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 3048f8013d6cc6753ef7d0d23e208b55e675c3a9..e0cfdd837f1c90ce682dd9eeb8ec57a5ba5b2568 100644 (file)
@@ -780,9 +780,8 @@ update_group_file(void)
                        SYSLOG ((LOG_INFO, "add '%s' to group '%s'",
                                 user_newname, ngrp->gr_name));
                }
-               if (!changed) {
-                       continue;
-               }
+               if (!changed)
+                       goto free_ngrp;
 
                changed = false;
                if (gr_update (ngrp) == 0) {
@@ -793,6 +792,7 @@ update_group_file(void)
                        fail_exit (E_GRP_UPDATE);
                }
 
+free_ngrp:
                gr_free(ngrp);
        }
 }