File CVE-2012-1663.patch of Package gnutls.openSUSE_12.1_Update
Index: gnutls-3.0.3/lib/auth/cert.c
===================================================================
--- gnutls-3.0.3.orig/lib/auth/cert.c
+++ gnutls-3.0.3/lib/auth/cert.c
@@ -1157,6 +1157,7 @@ _gnutls_proc_x509_server_certificate (gn
if (ret < 0)
{
gnutls_assert ();
+ peer_certificate_list_size = j;
goto cleanup;
}
Index: gnutls-3.0.3/lib/gnutls_pcert.c
===================================================================
--- gnutls-3.0.3.orig/lib/gnutls_pcert.c
+++ gnutls-3.0.3/lib/gnutls_pcert.c
@@ -89,6 +89,7 @@ size_t sz;
if (ret < 0)
{
gnutls_pubkey_deinit(pcert->pubkey);
+ pcert->pubkey = NULL;
ret = gnutls_assert_val(ret);
goto cleanup;
}
@@ -96,7 +97,7 @@ size_t sz;
return 0;
cleanup:
- gnutls_free(pcert->cert.data);
+ _gnutls_free_datum(&pcert->cert);
return ret;
}
@@ -278,6 +279,7 @@ size_t sz;
if (ret < 0)
{
gnutls_pubkey_deinit(pcert->pubkey);
+ pcert->pubkey = NULL;
ret = gnutls_assert_val(ret);
goto cleanup;
}
@@ -285,7 +287,7 @@ size_t sz;
return 0;
cleanup:
- gnutls_free(pcert->cert.data);
+ _gnutls_free_datum(&pcert->cert);
return ret;
}
@@ -368,8 +370,7 @@ gnutls_pcert_deinit (gnutls_pcert_st *pc
{
gnutls_pubkey_deinit(pcert->pubkey);
pcert->pubkey = NULL;
- gnutls_free(pcert->cert.data);
- pcert->cert.data = NULL;
+ _gnutls_free_datum(&pcert->cert);
}
/* Converts the first certificate for the cert_auth_info structure