The branch, master has been updated
       via  3e128df1ef4 samr: Fix CID 1035506: close slave fd (REASOURCE_LEAK)
      from  6cf1bf540e7 selftest: Do not use wrappers for samba.tests.docs

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 3e128df1ef4ce6f633aa61a7141a9998cd7d13bc
Author: Shachar Sharon <[email protected]>
Date:   Tue Aug 19 11:34:13 2025 +0300

    samr: Fix CID 1035506: close slave fd (REASOURCE_LEAK)
    
    In the case of (unlikely) failure of dup2 on one of the standard file
    descriptors, close 'slave' fd upon return.
    
    Signed-off-by: Shachar Sharon <[email protected]>
    Reviewed-by: Andreas Schneider <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    
    Autobuild-User(master): Anoop C S <[email protected]>
    Autobuild-Date(master): Thu Sep 11 13:29:37 UTC 2025 on atb-devel-224

-----------------------------------------------------------------------

Summary of changes:
 source3/rpc_server/samr/srv_samr_chgpasswd.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/rpc_server/samr/srv_samr_chgpasswd.c 
b/source3/rpc_server/samr/srv_samr_chgpasswd.c
index 6c0c0da0cfc..000f6c2b87d 100644
--- a/source3/rpc_server/samr/srv_samr_chgpasswd.c
+++ b/source3/rpc_server/samr/srv_samr_chgpasswd.c
@@ -201,18 +201,24 @@ static int dochild(int master, const char *slavedev, 
const struct passwd *pass,
 
        /* Make slave stdin/out/err of child. */
 
-       if (dup2(slave, STDIN_FILENO) != STDIN_FILENO)
+       if ((slave != STDIN_FILENO) &&
+           (dup2(slave, STDIN_FILENO) != STDIN_FILENO))
        {
+               close(slave);
                DEBUG(3, ("Could not re-direct stdin\n"));
                return (False);
        }
-       if (dup2(slave, STDOUT_FILENO) != STDOUT_FILENO)
+       if ((slave != STDOUT_FILENO) &&
+           (dup2(slave, STDOUT_FILENO) != STDOUT_FILENO))
        {
+               close(slave);
                DEBUG(3, ("Could not re-direct stdout\n"));
                return (False);
        }
-       if (dup2(slave, STDERR_FILENO) != STDERR_FILENO)
+       if ((slave != STDERR_FILENO) &&
+           (dup2(slave, STDERR_FILENO) != STDERR_FILENO))
        {
+               close(slave);
                DEBUG(3, ("Could not re-direct stderr\n"));
                return (False);
        }


-- 
Samba Shared Repository

Reply via email to