diff --git a/lib/util_mosq.c b/lib/util_mosq.c index 6f6bb49a..55e65e9e 100644 --- a/lib/util_mosq.c +++ b/lib/util_mosq.c @@ -327,19 +327,33 @@ int _mosquitto_hex2bin(const char *hex, unsigned char *bin, int bin_max_len) { BIGNUM *bn = NULL; int len; + int leading_zero = 0; + int start = 0; + int i = 0; + + /* Count the number of leading zero */ + for(i=0; i bin_max_len){ + if(BN_num_bytes(bn) + leading_zero > bin_max_len){ BN_free(bn); return 0; } - len = BN_bn2bin(bn, bin); + len = BN_bn2bin(bn, bin + leading_zero); BN_free(bn); - return len; + return len + leading_zero; } #endif