Commit bee02b7d50 for openssl.org
commit bee02b7d509bbd6b49d70a2174f0a8a591883cc1
Author: Igor Ustinov <igus@openssl.foundation>
Date: Mon Jul 13 13:14:19 2026 +0200
Correct the wrong comment.
Assisted-by: Claude:claude-opus-4-8
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
Reviewed-by: Andrew Dinh <andrewd@openssl.org>
MergeDate: Wed Aug 12 02:34:08 2026
(Merged from https://github.com/openssl/openssl/pull/31931)
diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c
index ee4a45b7e0..3d432fb317 100644
--- a/crypto/bn/bn_lib.c
+++ b/crypto/bn/bn_lib.c
@@ -979,12 +979,15 @@ void BN_consttime_swap(BN_ULONG condition, BIGNUM *a, BIGNUM *b, int nwords)
b->neg ^= t;
/*-
- * BN_FLG_STATIC_DATA: indicates that data may not be written to. Intention
- * is actually to treat it as it's read-only data, and some (if not most)
- * of it does reside in read-only segment. In other words observation of
- * BN_FLG_STATIC_DATA in BN_consttime_swap should be treated as fatal
- * condition. It would either cause SEGV or effectively cause data
- * corruption.
+ * BN_FLG_STATIC_DATA: indicates that d points to a buffer that this
+ * BIGNUM does not own, so it must never be reallocated or freed through
+ * the BIGNUM. The flag by itself does not forbid writing to the words,
+ * but much of the data marked this way is compiled-in and does reside in
+ * a read-only segment. Since BN_consttime_swap writes to d, observing
+ * BN_FLG_STATIC_DATA here should be treated as a fatal condition: it
+ * would either cause SEGV or effectively cause data corruption. The flag
+ * is therefore never swapped, as it describes the storage of each d
+ * buffer, which is not exchanged.
*
* BN_FLG_MALLOCED: refers to BN structure itself, and hence must be
* preserved.