From mboxrd@z Thu Jan 1 00:00:00 1970 From: AKASHI Takahiro Date: Fri, 8 May 2020 08:53:22 +0900 Subject: efi_loader: pkcs7_parse_message() returns error pointer In-Reply-To: <17238d2d-6f48-d23b-9cab-2c30e8da0110@gmx.de> References: <20200507001714.GA6487@nox.fritz.box> <17238d2d-6f48-d23b-9cab-2c30e8da0110@gmx.de> Message-ID: <20200507235322.GC30323@laputa> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Heinrich, On Thu, May 07, 2020 at 04:47:22PM +0200, Heinrich Schuchardt wrote: > On 07.05.20 02:17, Patrick Wildt wrote: > > Since pkcs7_parse_message() returns an error pointer, we must not > > check for NULL. We have to explicitly set msg to NULL in the error > > case, otherwise the call to pkcs7_free_message() on the goto err > > path will assume it's a valid object. > > @Takahiro > I think we should start documenting the library functions properly. The Generally I agree, but > description in lib/crypto/pkcs7_parser.c does not conform to > https://www.kernel.org/doc/html/latest/doc-guide/kernel-doc.html#function-documentation > Especially we should describe how errors are returned. Remember that this file, as well as others under lib/crypto, was imported from linux kernel source. I made a minimum set of changes to align it with U-Boot code. So I'm rather reluctant to modify the file. Thanks, -Takahiro Akashi > Best regards > > Heinrich > > > > > Signed-off-by: Patrick Wildt > > > > diff --git a/lib/efi_loader/efi_image_loader.c b/lib/efi_loader/efi_image_loader.c > > index 5a9a6424cc..43a53d3dd1 100644 > > --- a/lib/efi_loader/efi_image_loader.c > > +++ b/lib/efi_loader/efi_image_loader.c > > @@ -538,8 +538,9 @@ static bool efi_image_authenticate(void *efi, size_t efi_size) > > } > > msg = pkcs7_parse_message((void *)wincert + sizeof(*wincert), > > wincert->dwLength - sizeof(*wincert)); > > - if (!msg) { > > + if (IS_ERR(msg)) { > > debug("Parsing image's signature failed\n"); > > + msg = NULL; > > goto err; > > } > > > > >