Comment Comment by axylone Looks like they also introduced a reference leak on allocation failure: @@ -198,10 +198,8 @@ sslDebugLog("SSLEncodeRSAKeyParams: modulus len=%ld, exponent len=%ld\n", modulusLength, exponentLength); OSStatus err; - if ((err = SSLAllocBuffer(keyParams, - modulusLength + exponentLength + 4)) != 0) { - CFReleaseSafe(exponent); - CFReleaseSafe(modulus); + if ((err = SSLAllocBuffer(keyParams, + modulusLength + exponentLength + 4, ctx)) != 0) { return err; } uint8_t *charPtr = keyParams->data; Note the removed CFReleaseSafe(exponent) and modulus. All other return paths in SSLEncodeRSAKeyParams() call CFRelease(exponent) and modulus.This is why you use goto fail and not early returns. parent axylone 12 years ago
This is why you use goto fail and not early returns.