diff --git a/lib/isc/log.c b/lib/isc/log.c index 523fd2d6bb..b18edaa7fe 100644 --- a/lib/isc/log.c +++ b/lib/isc/log.c @@ -1076,8 +1076,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 && @@ -1223,8 +1225,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 &&