[{"id":3062817,"web_url":"http://patchwork.ozlabs.org/comment/3062817/","msgid":"<CAJaLiFypmUY6zEWceZhsnFZyo-2+9_Y0PxQBJJmp04AFJHAMvg@mail.gmail.com>","list_archive_url":null,"date":"2023-02-22T05:51:12","subject":"Re: [PATCH RFC u-boot-mvebu 19/59] tools: kwboot: Show image type and\n error parsing reasons","submitter":{"id":74035,"url":"http://patchwork.ozlabs.org/api/people/74035/","name":"Tony Dinh","email":"mibodhi@gmail.com"},"content":"On Tue, Feb 21, 2023 at 12:22 PM Pali Rohár <pali@kernel.org> wrote:\n>\n> Show image type and version during parsing of kwbimage.\n> And show reasons in error messages when parsing failed.\n> This can help to debug issues with invalid images.\n>\n> Signed-off-by: Pali Rohár <pali@kernel.org>\n> ---\n>  tools/kwboot.c | 39 ++++++++++++++++++++++++++++++++++-----\n>  1 file changed, 34 insertions(+), 5 deletions(-)\n>\n> diff --git a/tools/kwboot.c b/tools/kwboot.c\n> index cb31d5b858ce..7c666486f31f 100644\n> --- a/tools/kwboot.c\n> +++ b/tools/kwboot.c\n> @@ -1976,6 +1976,21 @@ _inject_baudrate_change_code(void *img, size_t *size, int for_data,\n>         }\n>  }\n>\n> +static const char *\n> +kwboot_img_type(uint8_t blockid)\n> +{\n> +       switch (blockid) {\n> +       case IBR_HDR_I2C_ID: return \"I2C\";\n> +       case IBR_HDR_SPI_ID: return \"SPI\";\n> +       case IBR_HDR_NAND_ID: return \"NAND\";\n> +       case IBR_HDR_SATA_ID: return \"SATA\";\n> +       case IBR_HDR_PEX_ID: return \"PEX\";\n> +       case IBR_HDR_UART_ID: return \"UART\";\n> +       case IBR_HDR_SDIO_ID: return \"SDIO\";\n> +       default: return \"unknown\";\n> +       }\n> +}\n> +\n>  static int\n>  kwboot_img_patch(void *img, size_t *size, int baudrate)\n>  {\n> @@ -1989,8 +2004,10 @@ kwboot_img_patch(void *img, size_t *size, int baudrate)\n>\n>         hdr = img;\n>\n> -       if (*size < sizeof(struct main_hdr_v1))\n> +       if (*size < sizeof(struct main_hdr_v1)) {\n> +               fprintf(stderr, \"Invalid image header size\\n\");\n>                 goto err;\n> +       }\n>\n>         image_ver = kwbimage_version(img);\n>         if (image_ver != 0 && image_ver != 1) {\n> @@ -2000,12 +2017,18 @@ kwboot_img_patch(void *img, size_t *size, int baudrate)\n>\n>         hdrsz = kwbheader_size(hdr);\n>\n> -       if (*size < hdrsz)\n> +       if (*size < hdrsz) {\n> +               fprintf(stderr, \"Invalid image header size\\n\");\n>                 goto err;\n> +       }\n> +\n> +       kwboot_printv(\"Detected kwbimage v%d with %s boot signature\\n\", image_ver, kwboot_img_type(hdr->blockid));\n>\n>         csum = kwboot_hdr_csum8(hdr) - hdr->checksum;\n> -       if (csum != hdr->checksum)\n> +       if (csum != hdr->checksum) {\n> +               fprintf(stderr, \"Image has invalid header checksum stored in image header\\n\");\n>                 goto err;\n> +       }\n>\n>         srcaddr = le32_to_cpu(hdr->srcaddr);\n>\n> @@ -2028,9 +2051,15 @@ kwboot_img_patch(void *img, size_t *size, int baudrate)\n>                 break;\n>         }\n>\n> -       if (hdrsz > le32_to_cpu(hdr->srcaddr) ||\n> -           *size < le32_to_cpu(hdr->srcaddr) + le32_to_cpu(hdr->blocksize))\n> +       if (hdrsz > le32_to_cpu(hdr->srcaddr)) {\n> +               fprintf(stderr, \"Image has invalid data offset stored in image header\\n\");\n> +               goto err;\n> +       }\n> +\n> +       if (*size < le32_to_cpu(hdr->srcaddr) + le32_to_cpu(hdr->blocksize)) {\n> +               fprintf(stderr, \"Image has invalid data size stored in image header\\n\");\n>                 goto err;\n> +       }\n>\n>         for_each_opt_hdr_v1 (ohdr, hdr) {\n>                 if (!opt_hdr_v1_valid_size(ohdr, (const uint8_t *)hdr + hdrsz)) {\n> --\n> 2.20.1\n>\nNominal cases (no error) with Armada 385 and KIrkwood 6192:\n\nDetected kwbimage v1 with SPI boot signature\nDetected kwbimage v0 with NAND boot signature\n\nTested-by: Tony Dinh <mibodhi@gmail.com>\n\nAll the best,\nTony","headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=<UNKNOWN>)","legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20210112 header.b=pkWF3v0q;\n\tdkim-atps=neutral","phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=gmail.com","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.b=\"pkWF3v0q\";\n\tdkim-atps=neutral","phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=gmail.com","phobos.denx.de;\n spf=pass smtp.mailfrom=mibodhi@gmail.com"],"Received":["from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature ECDSA (P-384))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4PM4zC03qpz23j7\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Feb 2023 16:51:34 +1100 (AEDT)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id C73FC8338B;\n\tWed, 22 Feb 2023 06:51:29 +0100 (CET)","by phobos.denx.de (Postfix, from userid 109)\n id E768E80F72; Wed, 22 Feb 2023 06:51:27 +0100 (CET)","from mail-vs1-xe32.google.com (mail-vs1-xe32.google.com\n [IPv6:2607:f8b0:4864:20::e32])\n (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id CCF1D8338B\n for <u-boot@lists.denx.de>; Wed, 22 Feb 2023 06:51:24 +0100 (CET)","by mail-vs1-xe32.google.com with SMTP id j14so7414829vse.3\n for <u-boot@lists.denx.de>; Tue, 21 Feb 2023 21:51:24 -0800 (PST)"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,SPF_HELO_NONE,\n SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=6Z+/Ygr5Uozd5mReNoWmDci5kykbuY22UPMD6KvkDl4=;\n b=pkWF3v0qRi8lBue1TjQOdtAanX3EX36emwJ3GdPyQprhbDnMQZyGx8MLCg0nEXxigZ\n Svh8SS3WfDMThyqsQRmDD9HCivmQV+o8os1iUIifg+xQq2B+62nxgVqFE+5GhTh7M5lM\n qyU3zi04SJ8TrCUFNimz7nUHzt8CQLKkRMMFHUmoyTRma5GIJtPnKOfn8hYocXsfnITV\n WX92po/iBf2GBMOlsruHSYXNzn5wQBqcCfMMc+umoXmwDDT/DnwNzlquR20BmE0szXTZ\n R3PPbT7zv9IEMh1sdcSNFc4kj+Rw0zbvve22Dg6q8hqT5Cw5hPbkeT+KpowhY46xsJb5\n thfg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20210112;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc\n :subject:date:message-id:reply-to;\n bh=6Z+/Ygr5Uozd5mReNoWmDci5kykbuY22UPMD6KvkDl4=;\n b=uFFP1tNINByrsXyodAfUhdTdNSZF1PkRsYYzTMt29HTUb9vJYnhgTHSn638oQvCWLx\n 3yQdPJ6q3/Rcqqsp/I2xVCE6uxm3y5Y8GpKLcYdecD8c2CbbEZhDVVCWOr+9NkqivkWy\n uVgg1wp/2Ewrc5oGHJGU/wLaSjl/3iQJ5IK0sdcKrKz8ycMKJygiOp09CGXNmowIsn74\n Dc/GiIlEReeKHllgOiEKGQIuZ0mGvn5Ovp9U5lsrw/yPU7priCOveTWRS1t9cBgLMBu7\n mviN9J8lGtIpjnIzQjm0JeGBDxfXOAIMAcxRiWvotX8ZB0e6tpgYxLIgb6v4HRAAPp2B\n VRUQ==","X-Gm-Message-State":"AO0yUKVVZVJtxz7zS0D+f9AtNlNvEKoGsCJ02DEX3Q8BZr/B3fxy/sly\n OAEnA28nuuBhVAJOCNO7l/nxgP5guKNRkjXbzEo=","X-Google-Smtp-Source":"\n AK7set9IvKSfZVV+f+au3mz+8kLfiq9EtpUKzKqeeIokkqMY/5ltXZ+PMw9NVLAZT1C2AAfj4ILEKs/gp1knFz8WmMA=","X-Received":"by 2002:a05:6102:f98:b0:401:1444:817c with SMTP id\n e24-20020a0561020f9800b004011444817cmr2351615vsv.17.1677045083612; Tue, 21\n Feb 2023 21:51:23 -0800 (PST)","MIME-Version":"1.0","References":"<20230221201925.9644-1-pali@kernel.org>\n <20230221201925.9644-20-pali@kernel.org>","In-Reply-To":"<20230221201925.9644-20-pali@kernel.org>","From":"Tony Dinh <mibodhi@gmail.com>","Date":"Tue, 21 Feb 2023 21:51:12 -0800","Message-ID":"\n <CAJaLiFypmUY6zEWceZhsnFZyo-2+9_Y0PxQBJJmp04AFJHAMvg@mail.gmail.com>","Subject":"Re: [PATCH RFC u-boot-mvebu 19/59] tools: kwboot: Show image type and\n error parsing reasons","To":"=?utf-8?q?Pali_Roh=C3=A1r?= <pali@kernel.org>","Cc":"u-boot@lists.denx.de, Stefan Roese <sr@denx.de>,\n Josua Mayer <josua@solid-run.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.6 at phobos.denx.de","X-Virus-Status":"Clean"}}]