Commit f8571ce8 authored by Matt Caswell's avatar Matt Caswell
Browse files

Fixed valgrind complaint due to BN_consttime_swap reading uninitialised data.

This is actually ok for this function, but initialised to zero anyway if
PURIFY defined.

This does have the impact of masking any *real* unitialised data reads in bn though.

Patch based on approach suggested by Rich Salz.

PR#3415
parent 924e5eda
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -324,6 +324,15 @@ static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words)
		BNerr(BN_F_BN_EXPAND_INTERNAL,ERR_R_MALLOC_FAILURE);
		return(NULL);
		}
#ifdef PURIFY
	/* Valgrind complains in BN_consttime_swap because we process the whole
	 * array even if it's not initialised yet. This doesn't matter in that
	 * function - what's important is constant time operation (we're not
	 * actually going to use the data)
	*/
	memset(a, 0, sizeof(BN_ULONG)*words);
#endif

#if 1
	B=b->d;
	/* Check if the previous number needs to be copied */