Handle invalid arguments to close()/fclose() better.

This commit is contained in:
Simon Ruderich
2013-06-13 21:19:15 +02:00
parent 7adfbfd2cf
commit 37cb5686de
2 changed files with 16 additions and 2 deletions

View File

@@ -396,14 +396,20 @@ static int (*real_close)(int);
int close(int fd) {
DLSYM_FUNCTION(real_close, "close");
close_fd(fd);
if (fd >= 0) {
close_fd(fd);
}
return real_close(fd);
}
static int (*real_fclose)(FILE *);
int fclose(FILE *fp) {
int fd;
DLSYM_FUNCTION(real_fclose, "fclose");
close_fd(fileno(fp));
if (fp != NULL && (fd = fileno(fp)) >= 0) {
close_fd(fd);
}
return real_fclose(fp);
}