]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
check for zero values when import DH parameters.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 15 Jun 2013 14:38:10 +0000 (16:38 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 15 Jun 2013 14:38:10 +0000 (16:38 +0200)
lib/gnutls_dh_primes.c

index 03e7c4bf386b52a888d6262e136d461aa4195671..328f6ebf62b7e21623feaface98e2308aa9f2b9e 100644 (file)
@@ -188,7 +188,7 @@ gnutls_dh_params_generate2 (gnutls_dh_params_t params, unsigned int bits)
 {
   int ret;
   gnutls_group_st group;
-
+  
   ret = _gnutls_mpi_generate_group (&group, bits);
   if (ret < 0)
     {
@@ -302,6 +302,12 @@ gnutls_dh_params_import_pkcs3 (gnutls_dh_params_t params,
       return result;
     }
 
+  if (_gnutls_mpi_cmp_ui(params->params[0], 0) == 0)
+    {
+      asn1_delete_structure (&c2);
+      return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER);
+    }
+
   /* read the generator
    */
   result = _gnutls_x509_read_int (c2, "base", &params->params[1]);
@@ -313,6 +319,13 @@ gnutls_dh_params_import_pkcs3 (gnutls_dh_params_t params,
       return result;
     }
 
+  if (_gnutls_mpi_cmp_ui(params->params[1], 0) == 0)
+    {
+      asn1_delete_structure (&c2);
+      _gnutls_mpi_release (&params->params[0]);
+      return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER);
+    }
+
   asn1_delete_structure (&c2);
 
   return 0;