[prev in list] [next in list] [prev in thread] [next in thread] 

List:       samba-cvs
Subject:    [SCM] Samba Shared Repository - branch v4-17-test updated
From:       Jule Anger <janger () samba ! org>
Date:       2023-02-23 13:38:02
Message-ID: E1pVBnO-0033pS-3I () hrx0 ! samba ! org
[Download RAW message or body]

The branch, v4-17-test has been updated
       via  f4556250b87 lib:util: File descriptor being closed repeatedly.
      from  0b8713e342c vfs_ceph: use fsp_get_pathref_fd in ceph fstatat and close vfs calls

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-17-test


- Log -----------------------------------------------------------------
commit f4556250b87cd166c7516b7ebe28e2a6ca09eb7f
Author: baixiangcpp <baixiangcpp@gmail.com>
Date:   Fri Feb 10 11:01:47 2023 +0800

    lib:util: File descriptor being closed repeatedly.
    
    In file_load()/file_lines_load(), the file's fd is obtained using
    open(), and in fd_load() the fd is converted to a FILE* using
    fdopen(). However, after fclose(), the fd is closed again using
    close().
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=15311
    Signed-off-by: baixiangcpp baixiangcpp@gmail.com
    Reviewed-by: Volker Lendecke <vl@samba.org>
    Reviewed-by: Ralph Boehme <slow@samba.org>
    
    Autobuild-User(master): Volker Lendecke <vl@samba.org>
    Autobuild-Date(master): Thu Feb 16 12:13:05 UTC 2023 on atb-devel-224
    
    (cherry picked from commit 206dcf7d426e9e85c896c54839008e194d9a2824)
    
    Autobuild-User(v4-17-test): Jule Anger <janger@samba.org>
    Autobuild-Date(v4-17-test): Thu Feb 23 13:37:27 UTC 2023 on sn-devel-184

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

Summary of changes:
 lib/util/util_file.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)


Changeset truncated at 500 lines:

diff --git a/lib/util/util_file.c b/lib/util/util_file.c
index af90e4a7621..fa5abadedec 100644
--- a/lib/util/util_file.c
+++ b/lib/util/util_file.c
@@ -175,13 +175,20 @@ _PUBLIC_ char *fd_load(int fd, size_t *psize, size_t maxsize, TALLOC_CTX *mem_ct
 	size_t size = 0;
 	size_t chunk = 1024;
 	int err;
+	int fd_dup;
 
 	if (maxsize == 0) {
 		maxsize = SIZE_MAX;
 	}
 
-	file = fdopen(fd, "r");
+	fd_dup = dup(fd);
+	if (fd_dup == -1) {
+		return NULL;
+	}
+
+	file = fdopen(fd_dup, "r");
 	if (file == NULL) {
+		close(fd_dup);
 		return NULL;
 	}
 


-- 
Samba Shared Repository

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic