bn/bn_intern.c: const-ify bn_set_{static}_words.
authorAndy Polyakov <appro@openssl.org>
Wed, 18 Jul 2018 13:13:27 +0000 (15:13 +0200)
committerAndy Polyakov <appro@openssl.org>
Sun, 22 Jul 2018 13:23:45 +0000 (15:23 +0200)
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6738)

(cherry picked from commit f40e0a342cbca8bb71d0fe3f19e1b4bfd853aff1)

crypto/bn/bn_intern.c
crypto/include/internal/bn_int.h

index 2c970647defd5efec7d925c92f8daad61671f748..92f1cb71ddb462085c9e3a7d664e2b468b1e3f8d 100644 (file)
@@ -177,16 +177,20 @@ BN_ULONG *bn_get_words(const BIGNUM *a)
     return a->d;
 }
 
-void bn_set_static_words(BIGNUM *a, BN_ULONG *words, int size)
+void bn_set_static_words(BIGNUM *a, const BN_ULONG *words, int size)
 {
-    a->d = words;
+    /*
+     * |const| qualifier omission is compensated by BN_FLG_STATIC_DATA
+     * flag, which effectively means "read-only data".
+     */
+    a->d = (BN_ULONG *)words;
     a->dmax = a->top = size;
     a->neg = 0;
     a->flags |= BN_FLG_STATIC_DATA;
     bn_correct_top(a);
 }
 
-int bn_set_words(BIGNUM *a, BN_ULONG *words, int num_words)
+int bn_set_words(BIGNUM *a, const BN_ULONG *words, int num_words)
 {
     if (bn_wexpand(a, num_words) == NULL) {
         BNerr(BN_F_BN_SET_WORDS, ERR_R_MALLOC_FAILURE);
index 9c984ba78183c247c59b86153b54704fe920b27d..4e0c9a423a0d47758f4781b3db1c78c2652e3ae9 100644 (file)
@@ -53,7 +53,7 @@ BN_ULONG *bn_get_words(const BIGNUM *a);
  * Set the internal data words in a to point to words which contains size
  * elements. The BN_FLG_STATIC_DATA flag is set
  */
-void bn_set_static_words(BIGNUM *a, BN_ULONG *words, int size);
+void bn_set_static_words(BIGNUM *a, const BN_ULONG *words, int size);
 
 /*
  * Copy words into the BIGNUM |a|, reallocating space as necessary.
@@ -64,7 +64,7 @@ void bn_set_static_words(BIGNUM *a, BN_ULONG *words, int size);
  * |num_words| is int because bn_expand2 takes an int. This is an internal
  * function so we simply trust callers not to pass negative values.
  */
-int bn_set_words(BIGNUM *a, BN_ULONG *words, int num_words);
+int bn_set_words(BIGNUM *a, const BN_ULONG *words, int num_words);
 
 size_t bn_sizeof_BIGNUM(void);