X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fbn%2Fbn.h;h=5f16fbad00c326470304dddab99f8e8d2b4d6fca;hp=326aeca9f9ff4f6f47ed32e904a4d2bc9bdebdf7;hb=5734bebe05949bf1e7b94dcf225d297389347bb2;hpb=657a9195983badf9f0a45d32bd8199bab27f0e01 diff --git a/crypto/bn/bn.h b/crypto/bn/bn.h index 326aeca9f9..5f16fbad00 100644 --- a/crypto/bn/bn.h +++ b/crypto/bn/bn.h @@ -635,12 +635,14 @@ int RAND_pseudo_bytes(unsigned char *buf,int num); do { \ const BIGNUM *_bnum1 = (a); \ if(_bnum1->top < _bnum1->dmax) { \ + unsigned char _tmp_char; \ /* We cast away const without the compiler knowing, any \ * *genuinely* constant variables that aren't mutable \ * wouldn't be constructed with top!=dmax. */ \ BN_ULONG *_not_const; \ memcpy(&_not_const, &_bnum1->d, sizeof(BN_ULONG*)); \ - RAND_pseudo_bytes((unsigned char *)(_not_const + _bnum1->top), \ + RAND_pseudo_bytes(&_tmp_char, 1); \ + memset((unsigned char *)(_not_const + _bnum1->top), _tmp_char, \ (_bnum1->dmax - _bnum1->top) * sizeof(BN_ULONG)); \ } \ } while(0)