|  | // 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}} | 
|  | } | 
|  |  |