Avoid creating an illegal pointer.

Found by tis-interpreter

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

GH: #1230
This commit is contained in:
Kurt Roeckx 2016-06-18 19:50:11 +02:00
parent 5b8fa431ae
commit 5388b8d4e8

View File

@ -115,21 +115,21 @@ static size_t i2c_ibuf(const unsigned char *b, size_t blen, int neg,
memcpy(p, b, blen);
else {
/* Begin at the end of the encoding */
n = b + blen - 1;
p += blen - 1;
n = b + blen;
p += blen;
i = blen;
/* Copy zeros to destination as long as source is zero */
while (!*n && i > 1) {
*(p--) = 0;
while (!n[-1] && i > 1) {
*(--p) = 0;
n--;
i--;
}
/* Complement and increment next octet */
*(p--) = ((*(n--)) ^ 0xff) + 1;
*(--p) = ((*(--n)) ^ 0xff) + 1;
i--;
/* Complement any octets left */
for (; i > 0; i--)
*(p--) = *(n--) ^ 0xff;
*(--p) = *(--n) ^ 0xff;
}
*pp += ret;