[PATCH] tools: imagetool: Remove unnecessary check from toc0_verify_cert_item()
Andre Przywara
andre.przywara at arm.com
Thu Aug 1 14:56:25 CEST 2024
On Thu, 1 Aug 2024 18:46:33 +0900
"Seung-Woo Kim" <sw0312.kim at samsung.com> wrote:
> Hi,
>
> > -----Original Message-----
> > From: Andre Przywara <andre.przywara at arm.com>
> > Sent: Thursday, August 1, 2024 6:28 PM
> > Subject: Re: [PATCH] tools: imagetool: Remove unnecessary check from
> > toc0_verify_cert_item()
> >
> > On Thu, 1 Aug 2024 10:01:00 +0900
> > Seung-Woo Kim <sw0312.kim at samsung.com> wrote:
> >
> > Hi,
> >
> > > Remove unnecessary null check from toc0_verify_cert_item() because the
> > > array digest is always not null.
> >
> > Do you mean it's always not NULL *as currently used*? Because digest is a
> > function parameter, so within the scope of this function definition can be
> > NULL.
> > I agree that *currently* there is only one caller, and this passes the
> > addresses of a local variable from the stack, though it's never NULL.
> >
> > But I don't think this check hurts (looks like the compiler removes it
> > anyway), and it makes the code more robust. So is there any problem with
> > this check? Why do you want it to be removed?
>
> Because in my gcc-14 environment, it gives -Wnonnull-compare warning.
Ah, I see, it's GCC 14 reporting this now. And after some digging I found
digest cannot be NULL, as the digest parameter is declared as
"digest[static SHA256_DIGEST_LENGTH]" (mind the "static" within the
brackets).
So yes, the patch is correct. I will amend the commit message while
applying.
> tools/sunxi_toc0.c: In function 'toc0_verify_cert_item':
> tools/sunxi_toc0.c:447:12: warning: 'nonnull' argument 'digest' compared to
> NULL [-Wnonnull-compare]
> 447 | if (digest && memcmp(&extension->digest, digest,
> SHA256_DIGEST_LENGTH)) {
> | ^
>
> Regards,
> - Seung-Woo Kim
>
> >
> > Cheers,
> > Andre
> >
> > >
> > > Signed-off-by: Seung-Woo Kim <sw0312.kim at samsung.com>
Reviewed-by: Andre Przywara <andre.przywara at arm.com>
Cheers,
Andre
> > > ---
> > > tools/sunxi_toc0.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/tools/sunxi_toc0.c b/tools/sunxi_toc0.c index
> > > 292649fe90f1..76693647a095 100644
> > > --- a/tools/sunxi_toc0.c
> > > +++ b/tools/sunxi_toc0.c
> > > @@ -444,7 +444,7 @@ static int toc0_verify_cert_item(const uint8_t
> > > *buf, uint32_t len, RSA *fw_key,
> > >
> > > /* If a digest was provided, compare it to the embedded digest. */
> > > extension = &totalSequence->mainSequence.explicit3.extension;
> > > - if (digest && memcmp(&extension->digest, digest,
> > SHA256_DIGEST_LENGTH)) {
> > > + if (memcmp(&extension->digest, digest, SHA256_DIGEST_LENGTH)) {
> > > pr_err("Wrong firmware digest in certificate\n");
> > > goto err;
> > > }
>
>
More information about the U-Boot
mailing list