Add internal maxsize macros
authorRichard Levitte <levitte@openssl.org>
Wed, 22 Jan 2020 13:00:21 +0000 (14:00 +0100)
committerRichard Levitte <levitte@openssl.org>
Thu, 23 Jan 2020 16:17:47 +0000 (17:17 +0100)
We've started to see "magic" numbers being used for certain sizes,
such as algorithm names and property query strings.

This change takes care of the few items where buffers for algorithm
names and property query strings are used.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/10928)

include/internal/sizes.h [new file with mode: 0644]
providers/implementations/asymciphers/rsa_enc.c
providers/implementations/signature/dsa.c

diff --git a/include/internal/sizes.h b/include/internal/sizes.h
new file mode 100644 (file)
index 0000000..fab5cbd
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the Apache License 2.0 (the "License").  You may not use
+ * this file except in compliance with the License.  You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+#ifndef OSSL_INTERNAL_SIZES_H
+# define OSSL_INTERNAL_SIZES_H
+
+/*
+ * Max sizes used to allocate buffers with a fixed sizes, for example for
+ * stack allocations, structure fields, ...
+ */
+# define OSSL_MAX_NAME_SIZE           50 /* Algorithm name */
+# define OSSL_MAX_PROPQUERY_SIZE     256 /* Property query strings */
+
+#endif
index 53fc6de26554e888b4153eda1e355bf683542b9a..77f807e7ef4308f103a599bc357929f4906416bf 100644 (file)
@@ -17,6 +17,7 @@
 /* Just for SSL_MAX_MASTER_KEY_LENGTH */
 #include <openssl/ssl.h>
 #include "internal/constant_time.h"
+#include "internal/sizes.h"
 #include "crypto/rsa.h"
 #include "prov/providercommonerr.h"
 #include "prov/provider_ctx.h"
@@ -322,8 +323,8 @@ static int rsa_set_ctx_params(void *vprsactx, const OSSL_PARAM params[])
 {
     PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
     const OSSL_PARAM *p;
-    /* Should be big enough */
-    char mdname[80], mdprops[80] = { '\0' };
+    char mdname[OSSL_MAX_NAME_SIZE];
+    char mdprops[OSSL_MAX_PROPQUERY_SIZE] = { '\0' };
     char *str = mdname;
     int pad_mode;
 
index c656a45fd7a1fcedd1ae53cc43af2f8ebb782c13..9892e6d5e4379db580c19ea1792d214adf8b9e9e 100644 (file)
@@ -13,6 +13,7 @@
 #include <openssl/dsa.h>
 #include <openssl/params.h>
 #include <openssl/evp.h>
+#include "internal/sizes.h"
 #include "prov/implementations.h"
 #include "prov/provider_ctx.h"
 #include "crypto/dsa.h"
@@ -49,8 +50,7 @@ typedef struct {
     OPENSSL_CTX *libctx;
     DSA *dsa;
     size_t mdsize;
-    /* Should be big enough */
-    char mdname[80];
+    char mdname[OSSL_MAX_NAME_SIZE];
     EVP_MD *md;
     EVP_MD_CTX *mdctx;
 } PROV_DSA_CTX;