CFIndex size = mDigestLength;
CFNumberRef nr = CFNumberCreate(NULL, kCFNumberCFIndexType, &size);
CFDictionaryAddValue(dr, kSecDigestLengthAttribute, nr);
- CFRelease(nr);
+ CFReleaseNull(nr);
return dr;
}
default:
{
CFErrorRef result = CreateSecTransformErrorRef(kSecTransformErrorInvalidLength, "%d is an invalid digest size (use 224, 256, 384, 512, or 0).", length);
+ CFAutorelease(result);
return result;
}
}
default:
{
CFErrorRef result = CreateSecTransformErrorRef(kSecTransformErrorInvalidLength, "%d is an invalid digest size (use 224, 256, 384, 512, or 0).", length);
- return result;
+ CFAutorelease(result);
+ return result;
}
}
}
else
{
CFErrorRef result = CreateSecTransformErrorRef(kSecTransformErrorInvalidAlgorithm, "%@ is not a supported digest algorithm (use kSecDigestSHA2, kSecDigestMD2, kSecDigestMD5, kSecDigestSHA or kSecDigestSHA2", digestType);
- return result;
+ CFAutorelease(result);
+ return result;
}
}
long lengthInt = mDigest->DigestLength();
CFNumberRef lengthNumber = CFNumberCreate(NULL, kCFNumberLongType, &lengthInt);
SendAttribute(kSecDigestLengthAttribute, lengthNumber);
- CFRelease(lengthNumber);
+ CFReleaseNull(lengthNumber);
return NULL;
}
static CFStringRef gDigestTransformName = CFSTR("SecDigestTransform");
-CFTypeRef DigestTransform::Make()
+CFTypeRef DigestTransform::Make() CF_RETURNS_RETAINED
{
DigestTransform* dt = new DigestTransform();
return CoreFoundationHolder::MakeHolder(gDigestTransformName, dt);
// send the result
CFDataRef resultRef = CFDataCreate(NULL, (UInt8*) result, mDigest->DigestLength());
SendAttribute(kSecTransformOutputAttributeName, resultRef);
- CFRelease(resultRef);
+ CFReleaseNull(resultRef);
// send the EOS
SendAttribute(kSecTransformOutputAttributeName, NULL);
{
CFStringRef idType = CFCopyTypeIDDescription(valueType);
CFErrorRef result = CreateSecTransformErrorRef(kSecTransformErrorInvalidType, "value is not a CFDataRef -- it's a %@ instead", idType);
- CFRelease(idType);
+ CFReleaseNull(idType);
SetAttributeNoCallback(kSecTransformOutputAttributeName, result);
}
else