BN_FLG_FREE is of extremely dubious usefulness, and is only referred to
authorGeoff Thorpe <geoff@openssl.org>
Tue, 2 Dec 2003 03:16:56 +0000 (03:16 +0000)
committerGeoff Thorpe <geoff@openssl.org>
Tue, 2 Dec 2003 03:16:56 +0000 (03:16 +0000)
once in the source (where it is set for the benefit of no other code
whatsoever). I've deprecated the declaration in the header and likewise
made the use of the flag conditional in bn_lib.c. Note, this change also
NULLs the 'd' pointer in a BIGNUM when it is reset but not deallocated.

crypto/bn/bn.h
crypto/bn/bn_lib.c

index 5346a353ab9cd7dc4a8607f7e92c622b9aee79f6..f58d5f55a07bd58420ce6d63bf5254b317e4f6c3 100644 (file)
@@ -254,7 +254,9 @@ extern "C" {
 
 #define BN_FLG_MALLOCED                0x01
 #define BN_FLG_STATIC_DATA     0x02
+#ifndef OPENSSL_NO_DEPRECATED
 #define BN_FLG_FREE            0x8000  /* used for debuging */
+#endif
 #define BN_set_flags(b,n)      ((b)->flags|=(n))
 #define BN_get_flags(b,n)      ((b)->flags&(n))
 
index 3ecf83ddf28447a538835d79288aa664178efcad..3bc67f9de2c267a5a9a4f5f23a38b284cae1bc80 100644 (file)
@@ -278,9 +278,15 @@ void BN_free(BIGNUM *a)
        if (a == NULL) return;
        if ((a->d != NULL) && !(BN_get_flags(a,BN_FLG_STATIC_DATA)))
                OPENSSL_free(a->d);
-       a->flags|=BN_FLG_FREE; /* REMOVE? */
        if (a->flags & BN_FLG_MALLOCED)
                OPENSSL_free(a);
+       else
+               {
+#ifndef OPENSSL_NO_DEPRECATED
+               a->flags|=BN_FLG_FREE;
+#endif
+               a->d = NULL;
+               }
        }
 
 void BN_init(BIGNUM *a)