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