← Commit list

76d2852550

Daniel Stenberg
Daniel Stenberg
2025-10-21
SUCCESS Duration: 151s

Subject

hmac: free memory properly on errors

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/hmac.c+6 -2
@@ -74,7 +74,7 @@ Curl_HMAC_init(const struct HMAC_params *hashparams,
/* If the key is too long, replace it by its hash digest. */
if(keylen > hashparams->maxkeylen) {
if(hashparams->hinit(ctxt->hashctxt1))
- return NULL;
+ goto fail;
hashparams->hupdate(ctxt->hashctxt1, key, keylen);
hkey = (unsigned char *) ctxt->hashctxt2 + hashparams->ctxtsize;
hashparams->hfinal(hkey, ctxt->hashctxt1);
@@ -85,7 +85,7 @@ Curl_HMAC_init(const struct HMAC_params *hashparams,
/* Prime the two hash contexts with the modified key. */
if(hashparams->hinit(ctxt->hashctxt1) ||
hashparams->hinit(ctxt->hashctxt2))
- return NULL;
+ goto fail;
for(i = 0; i < keylen; i++) {
b = (unsigned char)(*key ^ hmac_ipad);
@@ -101,6 +101,10 @@ Curl_HMAC_init(const struct HMAC_params *hashparams,
/* Done, return pointer to HMAC context. */
return ctxt;
+
+fail:
+ free(ctxt);
+ return NULL;
}
int Curl_HMAC_update(struct HMAC_context *ctxt,