mirror of
https://github.com/samba-team/samba.git
synced 2025-02-03 13:47:25 +03:00
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-18-test): Jule Anger <janger@samba.org> Autobuild-Date(v4-18-test): Fri Feb 24 09:50:59 UTC 2023 on atb-devel-224
This commit is contained in:
parent
6191dbda19
commit
b829940535
@ -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 size = 0;
|
||||||
size_t chunk = 1024;
|
size_t chunk = 1024;
|
||||||
int err;
|
int err;
|
||||||
|
int fd_dup;
|
||||||
|
|
||||||
if (maxsize == 0) {
|
if (maxsize == 0) {
|
||||||
maxsize = SIZE_MAX;
|
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) {
|
if (file == NULL) {
|
||||||
|
close(fd_dup);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user