[asan] Don't crash on fclose(NULL)

It's explicitly forbidden to call fclose with NULL, but at least on Darwin, this succeeds and doesn't segfault. To maintain binary compatibility, ASan should survice fclose(NULL) as well.

Differential Revision: https://reviews.llvm.org/D40053

llvm-svn: 319347
This commit is contained in:
Kuba Mracek 2017-11-29 19:43:11 +00:00
parent 4d2c703492
commit e73d1f13b6
2 changed files with 14 additions and 1 deletions

View File

@ -273,7 +273,7 @@ UNUSED static const FileMetadata *GetInterceptorMetadata(
MetadataHashMap::Handle h(interceptor_metadata_map, (uptr)addr,
/* remove */ false,
/* create */ false);
if (h.exists()) {
if (addr && h.exists()) {
CHECK(!h.created());
CHECK(h->type == CommonInterceptorMetadata::CIMT_FILE);
return &h->file;

View File

@ -0,0 +1,13 @@
// RUN: %clang_asan %s -o %t
// RUN: %run %t 2>&1 | FileCheck %s
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[]) {
fclose(NULL);
fprintf(stderr, "Finished.\n");
return 0;
}
// CHECK: Finished.