1 2 3void test() { 4 unsigned int *ptr = 0; 5 UInt32 length; 6 7 SecKeychainItemFreeContent(ptr, &length); 8 // warn: trying to free data which has not been allocated 9} 10 11void test() { 12 unsigned int *ptr = 0; 13 UInt32 *length = 0; 14 void *outData; 15 16 OSStatus st = 17 SecKeychainItemCopyContent(2, ptr, ptr, length, outData); 18 // warn: data is not released 19} 20 21void test() { 22 unsigned int *ptr = 0; 23 UInt32 *length = 0; 24 void *outData; 25 26 OSStatus st = 27 SecKeychainItemCopyContent(2, ptr, ptr, length, &outData); 28 29 SecKeychainItemFreeContent(ptr, outData); 30 // warn: only call free if a non-NULL buffer was returned 31} 32 33void test() { 34 unsigned int *ptr = 0; 35 UInt32 *length = 0; 36 void *outData; 37 38 OSStatus st = 39 SecKeychainItemCopyContent(2, ptr, ptr, length, &outData); 40 41 st = SecKeychainItemCopyContent(2, ptr, ptr, length, &outData); 42 // warn: release data before another call to the allocator 43 44 if (st == noErr) 45 SecKeychainItemFreeContent(ptr, outData); 46} 47 48void test() { 49 SecKeychainItemRef itemRef = 0; 50 SecKeychainAttributeInfo *info = 0; 51 SecItemClass *itemClass = 0; 52 SecKeychainAttributeList *attrList = 0; 53 UInt32 *length = 0; 54 void *outData = 0; 55 56 OSStatus st = 57 SecKeychainItemCopyAttributesAndData(itemRef, info, 58 itemClass, &attrList, 59 length, &outData); 60 61 SecKeychainItemFreeContent(attrList, outData); 62 // warn: deallocator doesn't match the allocator 63} 64 65