Lars Hjemli <hjemli@xxxxxxxxx> writes: > diff --git a/shared.c b/shared.c > index d7b2d5a..a27ab30 100644 > --- a/shared.c > +++ b/shared.c > @@ -406,12 +406,17 @@ int readfile(const char *path, char **buf, size_t *size) > fd = open(path, O_RDONLY); > if (fd == -1) > return errno; > - if (fstat(fd, &st)) > + if (fstat(fd, &st)) { > + close(fd); > return errno; The close call can clobber errno. > - if (!S_ISREG(st.st_mode)) > + } > + if (!S_ISREG(st.st_mode)) { > + close(fd); > return EISDIR; > + } > *buf = xmalloc(st.st_size + 1); > *size = read_in_full(fd, *buf, st.st_size); > (*buf)[*size] = '\0'; > + close(fd); > return (*size == st.st_size ? 0 : errno); Likewise. Andreas. -- Andreas Schwab, schwab@xxxxxxxxxxxxxx GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html