mirror of
git://git.musl-libc.org/musl
synced 2025-02-05 13:31:31 +00:00
fix fd leak in tmpfile when the fdopen operation fails
this condition could only happen due to malloc failure. the fdopen operation is also moved to take place after the unlink to minimize the window during which a link to the file exists in the directory table.
This commit is contained in:
parent
2abb70c302
commit
60158bff74
@ -16,12 +16,13 @@ FILE *tmpfile(void)
|
||||
__randname(s+13);
|
||||
fd = sys_open(s, O_RDWR|O_CREAT|O_EXCL, 0600);
|
||||
if (fd >= 0) {
|
||||
f = __fdopen(fd, "w+");
|
||||
#ifdef SYS_unlink
|
||||
__syscall(SYS_unlink, s);
|
||||
#else
|
||||
__syscall(SYS_unlinkat, AT_FDCWD, s, 0);
|
||||
#endif
|
||||
f = __fdopen(fd, "w+");
|
||||
if (!f) __syscall(SYS_close, fd);
|
||||
return f;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user