Avoid creating an illegal pointer

Found by tis-interpreter

Reviewed-by: Rich Salz <rsalz@openssl.org>

GH: #1106
This commit is contained in:
Kurt Roeckx 2016-05-21 16:32:15 +02:00
parent 169a8e391e
commit acc600928d

View File

@ -278,6 +278,9 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
res->top--; res->top--;
} }
/* Increase the resp pointer so that we never create an invalid pointer. */
resp++;
/* /*
* if res->top == 0 then clear the neg value otherwise decrease the resp * if res->top == 0 then clear the neg value otherwise decrease the resp
* pointer * pointer
@ -287,7 +290,7 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
else else
resp--; resp--;
for (i = 0; i < loop - 1; i++, wnump--, resp--) { for (i = 0; i < loop - 1; i++, wnump--) {
BN_ULONG q, l0; BN_ULONG q, l0;
/* /*
* the first part of the loop uses the top two words of snum and sdiv * the first part of the loop uses the top two words of snum and sdiv
@ -393,6 +396,7 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
(*wnump)++; (*wnump)++;
} }
/* store part of the result */ /* store part of the result */
resp--;
*resp = q; *resp = q;
} }
bn_correct_top(snum); bn_correct_top(snum);