crypto: n2 - Silence gcc format-truncation false positive warnings
authorHerbert Xu <herbert@gondor.apana.org.au>
Fri, 27 Oct 2023 10:44:34 +0000 (18:44 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 17 Nov 2023 11:16:28 +0000 (19:16 +0800)
The heuristics used by gcc triggers false positive truncation
warnings in hifn_alg_alloc.

Add checks on snprintf calls to silence these warnings, including
the one for cra_driver_name even though it does not currently trigger
a gcc warning.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/n2_core.c

index caea98622c33628915aecd9db275f9d16f4003fd..37d958cfa9bbceca8f410b04ea46647368dddd15 100644 (file)
@@ -1382,8 +1382,12 @@ static int __n2_register_one_hmac(struct n2_ahash_alg *n2ahash)
        ahash->setkey = n2_hmac_async_setkey;
 
        base = &ahash->halg.base;
-       snprintf(base->cra_name, CRYPTO_MAX_ALG_NAME, "hmac(%s)", p->child_alg);
-       snprintf(base->cra_driver_name, CRYPTO_MAX_ALG_NAME, "hmac-%s-n2", p->child_alg);
+       if (snprintf(base->cra_name, CRYPTO_MAX_ALG_NAME, "hmac(%s)",
+                    p->child_alg) >= CRYPTO_MAX_ALG_NAME)
+               goto out_free_p;
+       if (snprintf(base->cra_driver_name, CRYPTO_MAX_ALG_NAME, "hmac-%s-n2",
+                    p->child_alg) >= CRYPTO_MAX_ALG_NAME)
+               goto out_free_p;
 
        base->cra_ctxsize = sizeof(struct n2_hmac_ctx);
        base->cra_init = n2_hmac_cra_init;
@@ -1394,6 +1398,7 @@ static int __n2_register_one_hmac(struct n2_ahash_alg *n2ahash)
        if (err) {
                pr_err("%s alg registration failed\n", base->cra_name);
                list_del(&p->derived.entry);
+out_free_p:
                kfree(p);
        } else {
                pr_info("%s alg registered\n", base->cra_name);