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
1 changed files with 2 additions and 1 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue