| // RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=osx.SecKeychainAPI -analyzer-store=region -analyzer-output=text -verify %s |
| |
| // This file is for testing enhanced diagnostics produced by the default SecKeychainAPI checker. |
| |
| typedef unsigned int OSStatus; |
| typedef unsigned int SecKeychainAttributeList; |
| typedef unsigned int SecKeychainItemRef; |
| typedef unsigned int SecItemClass; |
| typedef unsigned int UInt32; |
| enum { |
| noErr = 0, |
| GenericError = 1 |
| }; |
| OSStatus SecKeychainItemCopyContent ( |
| SecKeychainItemRef itemRef, |
| SecItemClass *itemClass, |
| SecKeychainAttributeList *attrList, |
| UInt32 *length, |
| void **outData |
| ); |
| |
| void DellocWithCFStringCreate4() { |
| unsigned int *ptr = 0; |
| OSStatus st = 0; |
| UInt32 length; |
| char *bytes; |
| char *x; |
| st = SecKeychainItemCopyContent(2, ptr, ptr, &length, (void **)&bytes); // expected-note {{Data is allocated here}} |
| x = bytes; |
| if (st == noErr) // expected-note {{Assuming 'st' is equal to noErr}} // expected-note{{Taking true branch}} |
| x = bytes;; |
| |
| length++; // expected-warning {{Allocated data is not released}} // expected-note{{Allocated data is not released}} |
| } |
| |