Browse Source

Don't let close(2) clobber errno. Some calls were already protected

but not all.  From Peter J. Philipp.
OPENBSD_6_3
millert 7 years ago
parent
commit
97fa8ef41e
1 changed files with 5 additions and 1 deletions
  1. +5
    -1
      src/lib/libc/hash/helper.c

+ 5
- 1
src/lib/libc/hash/helper.c View File

@ -1,4 +1,4 @@
/* $OpenBSD: helper.c,v 1.16 2016/09/21 04:38:57 guenther Exp $ */
/* $OpenBSD: helper.c,v 1.17 2017/10/23 14:33:07 millert Exp $ */
/* /*
* Copyright (c) 2000 Poul-Henning Kamp <phk@FreeBSD.org> * Copyright (c) 2000 Poul-Henning Kamp <phk@FreeBSD.org>
@ -71,13 +71,17 @@ HASHFileChunk(const char *filename, char *buf, off_t off, off_t len)
return (NULL); return (NULL);
if (len == 0) { if (len == 0) {
if (fstat(fd, &sb) == -1) { if (fstat(fd, &sb) == -1) {
save_errno = errno;
close(fd); close(fd);
errno = save_errno;
return (NULL); return (NULL);
} }
len = sb.st_size; len = sb.st_size;
} }
if (off > 0 && lseek(fd, off, SEEK_SET) < 0) { if (off > 0 && lseek(fd, off, SEEK_SET) < 0) {
save_errno = errno;
close(fd); close(fd);
errno = save_errno;
return (NULL); return (NULL);
} }


Loading…
Cancel
Save