]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
siv: add more assertions
authorMiroslav Lichvar <mlichvar@redhat.com>
Tue, 14 Jul 2020 15:04:30 +0000 (17:04 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Thu, 16 Jul 2020 14:02:16 +0000 (16:02 +0200)
Make sure the returned tag and key lengths are sane.

siv_gnutls.c
siv_nettle.c

index d909acb021fa63c0ba49a85af696c820eef358dc..bc93f015de75b53b1e4bb83bb87399d04427f2fb 100644 (file)
@@ -134,11 +134,17 @@ int
 SIV_GetKeyLength(SIV_Algorithm algorithm)
 {
   gnutls_cipher_algorithm_t calgo = get_cipher_algorithm(algorithm);
+  int len;
 
   if (calgo == 0)
     return 0;
 
-  return gnutls_cipher_get_key_size(calgo);
+  len = gnutls_cipher_get_key_size(calgo);
+
+  if (len < 1 || len > SIV_MAX_KEY_LENGTH)
+    LOG_FATAL("Invalid key length");
+
+  return len;
 }
 
 /* ================================================== */
@@ -177,7 +183,14 @@ SIV_SetKey(SIV_Instance instance, const unsigned char *key, int length)
 int
 SIV_GetTagLength(SIV_Instance instance)
 {
-  return gnutls_cipher_get_tag_size(instance->algorithm);
+  int len;
+
+  len = gnutls_cipher_get_tag_size(instance->algorithm);
+
+  if (len < 1 || len > SIV_MAX_TAG_LENGTH)
+    LOG_FATAL("Invalid tag length");
+
+  return len;
 }
 
 /* ================================================== */
index a08a8d1bfbccd9993d4d57b63e8d0b5278b8a234..43a84b808e04b046d2ece0125613103703bd6bca 100644 (file)
@@ -69,6 +69,8 @@ SIV_DestroyInstance(SIV_Instance instance)
 int
 SIV_GetKeyLength(SIV_Algorithm algorithm)
 {
+  assert(32 <= SIV_MAX_KEY_LENGTH);
+
   if (algorithm == AEAD_AES_SIV_CMAC_256)
     return 32;
   return 0;
@@ -92,6 +94,8 @@ SIV_SetKey(SIV_Instance instance, const unsigned char *key, int length)
 int
 SIV_GetTagLength(SIV_Instance instance)
 {
+  assert(SIV_DIGEST_SIZE <= SIV_MAX_TAG_LENGTH);
+
   return SIV_DIGEST_SIZE;
 }