gtlscertificate: Hold a ref on the root certificate when building chains

This is unlikely to be a bug in practice, as the certificate pointed to
by `root` should have a ref held on it as the issuer of another
certificate in the chain.

However, we can’t guarantee that’s how the `GTlsCertificate`
implementation behaves, so keep a temporary ref on `root` until it’s no
longer needed.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Coverity CID: #1489985

(cherry-picked from commit 2c75c392eb76a12c3fd18b63508b1f971a3afecd)
This commit is contained in:
Philip Withnall 2022-06-21 12:10:06 +01:00 committed by Marco Trevisan (Treviño)
parent 8434e704f1
commit e52494c49b

View File

@ -624,7 +624,7 @@ create_certificate_chain_from_list (GSList *pem_list,
/* root will point to the last certificate in the file. */
if (!root)
root = cert;
root = g_object_ref (cert);
pem = g_slist_next (pem);
}
@ -639,6 +639,8 @@ create_certificate_chain_from_list (GSList *pem_list,
g_clear_object (&cert);
}
g_clear_object (&root);
return cert;
}