if (error)
{
+ CFRetainSafe(temp);
*error = temp;
}
result = (temp == NULL);
if (error)
{
- *error = temp;
- }
- else
- {
- if (temp)
- {
- CFRelease(temp);
- }
+ CFRetainSafe(temp);
+ *error = temp;
}
return result;
Transform* transform = (Transform*) CoreFoundationHolder::ObjectFromCFType(transformRef);
if (transform->mIsActive) {
- return CreateSecTransformErrorRef(kSecTransformTransformIsExecuting, "Can not get the value of attributes during execution (attempt to fetch %@/%@)", transform->GetName(), key);
+ CFErrorRef error = CreateSecTransformErrorRef(kSecTransformTransformIsExecuting, "Can not get the value of attributes during execution (attempt to fetch %@/%@)", transform->GetName(), key);
+ CFAutorelease(error);
+ return error;
}
return transform->GetAttribute(key);
}
}
else
{
- CFRelease(localError);
+ CFReleaseNull(localError);
}
return (CFTypeRef)NULL;
releaseTheGroup = true;
+#ifdef __clang_analyzer__
+ // we've already asserted that collectTransform is non-NULL, but clang doesn't know that, we skip use of it for the analyzer
+ SecGroupTransformRef connectResult = NULL;
+#else
SecGroupTransformRef connectResult =
SecTransformConnectTransforms(transformRef,
kSecTransformOutputAttributeName,
collectTransform,
kSecTransformInputAttributeName,
theGroup, errorRef);
+#endif
if (NULL == connectResult)
{
SecTransformRef outputTransform = myGroup->FindLastTransform();
+#ifdef __clang_analyzer__
+ // we've already asserted that collectTransform is non-NULL, but clang doesn't know that, we skip use of it for the analyzer
+ SecGroupTransformRef connectResult = NULL;
+#else
SecGroupTransformRef connectResult =
SecTransformConnectTransforms(outputTransform,
kSecTransformOutputAttributeName,
if (NULL == connectResult)
{
- CFRelease(collectTransform);
+ CFReleaseNull(collectTransform);
if (releaseTheGroup)
{
- CFRelease(theGroup);
+ CFReleaseNull(theGroup);
}
return (CFTypeRef)NULL;
}
+#endif // __clang_analyzer__
}
__block CFTypeRef myResult = NULL;
{
if (NULL != errorRef)
{
- CFRetain(error);
+ CFRetainSafe(error);
*errorRef = error;
}
if (NULL != myResult)
{
- CFRelease(myResult);
+ CFReleaseNull(myResult);
myResult = NULL;
}
}
if (NULL != message)
{
myResult = message;
- CFRetain(myResult);
+ CFRetainSafe(myResult);
}
if (isFinal)
*error = CreateSecTransformErrorRef(kSecTransformErrorInvalidInputDictionary,
"Out of memory, or damaged input dictonary (duplicate label %@?)", xName);
}
+ CFSafeRelease(aTransform);
return NULL;
}
}