mirror of
https://github.com/openssl/openssl.git
synced 2024-11-21 01:15:20 +08:00
Unsigned chars can't be negative
Fix a problem where an unsigned char was being checked to see if it was negative. Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
parent
36c6f0ad0f
commit
235f932930
@ -243,6 +243,7 @@ unsigned char *OPENSSL_hexstr2buf(const char *str, long *len)
|
||||
{
|
||||
unsigned char *hexbuf, *q;
|
||||
unsigned char ch, cl;
|
||||
int chi, cli;
|
||||
const unsigned char *p;
|
||||
size_t s;
|
||||
|
||||
@ -262,14 +263,14 @@ unsigned char *OPENSSL_hexstr2buf(const char *str, long *len)
|
||||
OPENSSL_free(hexbuf);
|
||||
return NULL;
|
||||
}
|
||||
cl = OPENSSL_hexchar2int(cl);
|
||||
ch = OPENSSL_hexchar2int(ch);
|
||||
if (cl < 0 || ch < 0) {
|
||||
cli = OPENSSL_hexchar2int(cl);
|
||||
chi = OPENSSL_hexchar2int(ch);
|
||||
if (cli < 0 || chi < 0) {
|
||||
OPENSSL_free(hexbuf);
|
||||
CRYPTOerr(CRYPTO_F_OPENSSL_HEXSTR2BUF, CRYPTO_R_ILLEGAL_HEX_DIGIT);
|
||||
return NULL;
|
||||
}
|
||||
*q++ = (ch << 4) | cl;
|
||||
*q++ = (unsigned char)((chi << 4) | cli);
|
||||
}
|
||||
|
||||
if (len)
|
||||
|
Loading…
Reference in New Issue
Block a user