| // RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=osx.SecKeychainAPI -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(void) { | 
 |     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}} | 
 | } | 
 |  |