diff options
author | Carlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au> | 2012-10-15 17:10:06 +1100 |
---|---|---|
committer | Carlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au> | 2012-10-15 17:10:06 +1100 |
commit | be1de4be954c80875ad4108e0a33e8e131b2f2c0 (patch) | |
tree | 1fbbecf276bf7c7bdcbb4dd446099d6d90eaa516 /clang/test/Analysis/malloc.m | |
parent | c4626a62754862d20b41e8a46a3574264ea80e6d (diff) | |
parent | f1bd2e48c5324d3f7cda4090c87f8a5b6f463ce2 (diff) |
Merge branch 'master' of ssh://bitbucket.org/czan/honours
Diffstat (limited to 'clang/test/Analysis/malloc.m')
-rw-r--r-- | clang/test/Analysis/malloc.m | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/clang/test/Analysis/malloc.m b/clang/test/Analysis/malloc.m new file mode 100644 index 0000000..6c94118 --- /dev/null +++ b/clang/test/Analysis/malloc.m @@ -0,0 +1,37 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc -analyzer-store=region -verify -Wno-objc-root-class %s +#include "system-header-simulator-objc.h" + +@class NSString; +typedef __typeof(sizeof(int)) size_t; +void *malloc(size_t); +void free(void *); + +// RDar10579586 - Test use of malloc() with Objective-C string literal as a +// test condition. Not really a malloc() issue, but this also exercises +// the check that malloc() returns uninitialized memory. +@interface RDar10579586 +struct rdar0579586_str { + char str_c; +}; +@end + +void rdar10579586(char x); + +@implementation RDar10579586 ++ (NSString *)foobar +{ + struct rdar0579586_str *buffer = ((void*)0); + NSString *error = ((void*)0); + + if ((buffer = malloc(sizeof(struct rdar0579586_str))) == ((void*)0)) + error = @"buffer allocation failure"; + + if (error != ((void*)0)) + return error; + + rdar10579586(buffer->str_c); // expected-warning {{Function call argument is an uninitialized value}} + free(buffer); + return ((void*)0); +} +@end + |