mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-08 18:52:07 -04:00
Check the result of dirfd() before calling unlinkat()
Instead of directly using the result of dirfd() in the unlinkat() call, check whether the returned file descriptor is actually valid. That doesn't really change the logic as the unlinkat() would fail with invalid descriptor anyway, but this is cleaner and will report the right error returned directly by dirfd() instead of EBADF from unlinkat().
This commit is contained in:
parent
8071384324
commit
59f4fdebc0
1 changed files with 8 additions and 4 deletions
|
|
@ -1037,8 +1037,10 @@ greatest_version(isc_logfile_t *file, int versions, int *greatestp) {
|
|||
* Remove any backup files that exceed versions.
|
||||
*/
|
||||
if (*digit_end == '\0' && version >= versions) {
|
||||
int n = unlinkat(dirfd(dir.handle),
|
||||
dir.entry.name, 0);
|
||||
int n = dirfd(dir.handle);
|
||||
if (n >= 0) {
|
||||
n = unlinkat(n, dir.entry.name, 0);
|
||||
}
|
||||
if (n < 0) {
|
||||
result = isc_errno_toresult(errno);
|
||||
if (result != ISC_R_SUCCESS &&
|
||||
|
|
@ -1184,8 +1186,10 @@ remove_old_tsversions(isc_logfile_t *file, int versions) {
|
|||
* Remove any backup files that exceed versions.
|
||||
*/
|
||||
if (*digit_end == '\0' && version < last) {
|
||||
int n = unlinkat(dirfd(dir.handle),
|
||||
dir.entry.name, 0);
|
||||
int n = dirfd(dir.handle);
|
||||
if (n >= 0) {
|
||||
n = unlinkat(n, dir.entry.name, 0);
|
||||
}
|
||||
if (n < 0) {
|
||||
result = isc_errno_toresult(errno);
|
||||
if (result != ISC_R_SUCCESS &&
|
||||
|
|
|
|||
Loading…
Reference in a new issue