Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/openssl/openssl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2020-01-22 16:00:21 +0300
committerRichard Levitte <levitte@openssl.org>2020-01-23 19:17:47 +0300
commitc24937d5e71a990763f227be229ad41aab44728f (patch)
tree045fff71c29ad7e98c4f57c2d8d4c94ae2d4e372
parenta88aef32c902b79261c53a16546f4adbf6b3a617 (diff)
Add internal maxsize macros
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)
-rw-r--r--include/internal/sizes.h20
-rw-r--r--providers/implementations/asymciphers/rsa_enc.c5
-rw-r--r--providers/implementations/signature/dsa.c4
3 files changed, 25 insertions, 4 deletions
diff --git a/include/internal/sizes.h b/include/internal/sizes.h
new file mode 100644
index 0000000000..fab5cbdec7
--- /dev/null
+++ b/include/internal/sizes.h
@@ -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
diff --git a/providers/implementations/asymciphers/rsa_enc.c b/providers/implementations/asymciphers/rsa_enc.c
index 53fc6de265..77f807e7ef 100644
--- a/providers/implementations/asymciphers/rsa_enc.c
+++ b/providers/implementations/asymciphers/rsa_enc.c
@@ -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;
diff --git a/providers/implementations/signature/dsa.c b/providers/implementations/signature/dsa.c
index c656a45fd7..9892e6d5e4 100644
--- a/providers/implementations/signature/dsa.c
+++ b/providers/implementations/signature/dsa.c
@@ -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;