diff --git a/crypto/ec/ec_print.c b/crypto/ec/ec_print.c index 4b9b88266..f7c8a303a 100644 --- a/crypto/ec/ec_print.c +++ b/crypto/ec/ec_print.c @@ -139,7 +139,7 @@ char *EC_POINT_point2hex(const EC_GROUP *group, { char *ret, *p; size_t buf_len=0,i; - unsigned char *buf; + unsigned char *buf, *pbuf; buf_len = EC_POINT_point2oct(group, point, form, NULL, 0, ctx); @@ -162,14 +162,17 @@ char *EC_POINT_point2hex(const EC_GROUP *group, return NULL; } p = ret; + pbuf = buf; for (i=buf_len; i > 0; i--) { - int v = (int) *(buf++); + int v = (int) *(pbuf++); *(p++)=HEX_DIGITS[v>>4]; *(p++)=HEX_DIGITS[v&0x0F]; } *p='\0'; + OPENSSL_free(buf); + return ret; }