forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
// 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}}
 | 
						|
}
 | 
						|
 |