Commit b64722fd by Carlos Martín Nieto

SecureTransport: handle NULL trust on success

The `SSLCopyPeerTrust` call can succeed but fail to return a trust
object if it can't load the certificate chain and thus cannot check the
validity of a certificate. This can lead to us calling `CFRelease` on a
`NULL` trust object, causing a crash.

Handle this by returning ECERTIFICATE.
parent 1fafead5
...@@ -67,6 +67,9 @@ int stransport_connect(git_stream *stream) ...@@ -67,6 +67,9 @@ int stransport_connect(git_stream *stream)
if ((ret = SSLCopyPeerTrust(st->ctx, &trust)) != noErr) if ((ret = SSLCopyPeerTrust(st->ctx, &trust)) != noErr)
goto on_error; goto on_error;
if (!trust)
return GIT_ECERTIFICATE;
if ((ret = SecTrustEvaluate(trust, &sec_res)) != noErr) if ((ret = SecTrustEvaluate(trust, &sec_res)) != noErr)
goto on_error; goto on_error;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment