Commit f3cf2251 authored by Kurt Roeckx's avatar Kurt Roeckx
Browse files

Avoid creating illegal pointers



Found by tis-interpreter

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

GH: #1179
parent 0a320653
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -565,9 +565,9 @@ BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret)
    if (ret == NULL)
        return (NULL);
    bn_check_top(ret);
    s += len - 1;
    s += len;
    /* Skip trailing zeroes. */
    for ( ; len > 0 && *s == 0; s--, len--)
    for ( ; len > 0 && s[-1] == 0; s--, len--)
        continue;
    n = len;
    if (n == 0) {
@@ -584,7 +584,8 @@ BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret)
    ret->neg = 0;
    l = 0;
    while (n--) {
        l = (l << 8L) | *(s--);
        s--;
        l = (l << 8L) | *s;
        if (m-- == 0) {
            ret->d[--i] = l;
            l = 0;
@@ -610,10 +611,11 @@ int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen)
    /* Add trailing zeroes if necessary */
    if (tolen > i)
        memset(to + i, 0, tolen - i);
    to += i - 1;
    to += i;
    while (i--) {
        l = a->d[i / BN_BYTES];
        *(to--) = (unsigned char)(l >> (8 * (i % BN_BYTES))) & 0xff;
        to--;
        *to = (unsigned char)(l >> (8 * (i % BN_BYTES))) & 0xff;
    }
    return tolen;
}