When compiled with gcc -fanalyzer, it reports:
cert.c: In function '_gnutls_pcert_to_auth_info':
cert.c:85:17: error: dereference of NULL 'info' [CWE-476] [-Werror=analyzer-null-dereference]
85 | if (info->raw_certificate_list != NULL) {
Signed-off-by: Daiki Ueno <ueno@gnu.org>
_gnutls_free_auth_info(session);
- session->key.auth_info = calloc(1, size);
+ session->key.auth_info = gnutls_calloc(1, size);
if (session->key.auth_info == NULL) {
gnutls_assert();
return GNUTLS_E_MEMORY_ERROR;
}
info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
+ if (unlikely(!info)) {
+ gnutls_assert();
+ return ret;
+ }
if (data == NULL || data_size == 0) {
gnutls_assert();
}
ret = _gnutls_auth_info_init(session, GNUTLS_CRD_CERTIFICATE,
- sizeof(cert_auth_info_st), 1);
+ sizeof(cert_auth_info_st), 1);
if (ret < 0) {
gnutls_assert();
goto cleanup;
}
info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
+ if (unlikely(!info)) {
+ gnutls_assert();
+ goto cleanup;
+ }
/* Copy our imported certificate into the auth info structure
* and free our temporary cert storage peer_certificate.