All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heinrich Schuchardt <xypron.glpk@gmx.de>
To: Tom Rini <trini@konsulko.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>, u-boot@lists.denx.de
Subject: Re: Fwd: New Defects reported by Coverity Scan for Das U-Boot
Date: Sun, 28 Jan 2024 09:51:35 +0100	[thread overview]
Message-ID: <eb078cd8-a041-4b35-b3f3-def5e1919477@gmx.de> (raw)
In-Reply-To: <70BB005F-709B-4B50-AFDB-85EAD7BFC5E8@gmx.de>

On 1/27/24 21:56, Heinrich Schuchardt wrote:
>
>
> Am 27. Januar 2024 16:40:18 MEZ schrieb Tom Rini <trini@konsulko.com>:
>> Hey, I'll just pass this on directly rather than to the list.
>>
>> ---------- Forwarded message ---------
>> From: <scan-admin@coverity.com>
>> Date: Sat, Jan 27, 2024 at 10:36 AM
>> Subject: New Defects reported by Coverity Scan for Das U-Boot
>> To: <tom.rini@gmail.com>
>>
>>
>> Hi,
>>
>> Please find the latest report on new defect(s) introduced to Das
>> U-Boot found with Coverity Scan.
>>
>> 1 new defect(s) introduced to Das U-Boot found with Coverity Scan.
>>
>>
>> New defect(s) Reported-by: Coverity Scan
>> Showing 1 of 1 defect(s)
>>
>>
>> ** CID 479279:    (TAINTED_SCALAR)
>>
>>
>> ________________________________________________________________________________________________________
>> *** CID 479279:    (TAINTED_SCALAR)
>> /cmd/smbios.c: 180 in do_smbios()
>> 174                             smbios_print_type2((struct smbios_type2 *)pos);
>> 175                             break;
>> 176                     case 127:
>> 177                             smbios_print_type127((struct
>> smbios_type127 *)pos);
>> 178                             break;
>> 179                     default:
>>>>>      CID 479279:    (TAINTED_SCALAR)
>>>>>      Passing tainted expression "pos->length" to "smbios_print_generic", which uses it as a loop boundary.
>> 180                             smbios_print_generic(pos);
>> 181                             break;
>> 182                     }
>> 183             }
>> 184
>> 185             return CMD_RET_SUCCESS;
>> /cmd/smbios.c: 154 in do_smbios()
>> 148                     size = entry2->length;
>> 149                     max_struct_size = entry2->max_struct_size;
>> 150             } else {
>> 151                     log_err("Unknown SMBIOS anchor format\n");
>> 152                     return CMD_RET_FAILURE;
>> 153             }
>>>>>      CID 479279:    (TAINTED_SCALAR)
>>>>>      Passing tainted expression "size" to "table_compute_checksum", which uses it as a loop boundary.
>> 154             if (table_compute_checksum(entry, size)) {
>> 155                     log_err("Invalid anchor checksum\n");
>> 156                     return CMD_RET_FAILURE;
>> 157             }
>> 158             printf("SMBIOS %s present.\n", version);
>> 159
>> /cmd/smbios.c: 174 in do_smbios()
>> 168                            (unsigned long long)map_to_sysmem(pos));
>> 169                     switch (pos->type) {
>> 170                     case 1:
>> 171                             smbios_print_type1((struct smbios_type1 *)pos);
>> 172                             break;
>> 173                     case 2:
>>>>>      CID 479279:    (TAINTED_SCALAR)
>>>>>      Passing tainted expression "((struct smbios_type2 *)pos)->number_contained_objects" to "smbios_print_type2", which uses it as a loop boundary.
>> 174                             smbios_print_type2((struct smbios_type2 *)pos);
>> 175                             break;
>> 176                     case 127:
>> 177                             smbios_print_type127((struct
>> smbios_type127 *)pos);
>> 178                             break;
>> 179                     default:
>> /cmd/smbios.c: 154 in do_smbios()
>> 148                     size = entry2->length;
>> 149                     max_struct_size = entry2->max_struct_size;
>> 150             } else {
>> 151                     log_err("Unknown SMBIOS anchor format\n");
>> 152                     return CMD_RET_FAILURE;
>> 153             }
>>>>>      CID 479279:    (TAINTED_SCALAR)
>>>>>      Passing tainted expression "size" to "table_compute_checksum", which uses it as a loop boundary.
>> 154             if (table_compute_checksum(entry, size)) {
>> 155                     log_err("Invalid anchor checksum\n");
>> 156                     return CMD_RET_FAILURE;
>> 157             }
>> 158             printf("SMBIOS %s present.\n", version);
>> 159
>> /cmd/smbios.c: 180 in do_smbios()
>> 174                             smbios_print_type2((struct smbios_type2 *)pos);
>> 175                             break;
>> 176                     case 127:
>> 177                             smbios_print_type127((struct
>> smbios_type127 *)pos);
>> 178                             break;
>> 179                     default:
>>>>>      CID 479279:    (TAINTED_SCALAR)
>>>>>      Passing tainted expression "pos->length" to "smbios_print_generic", which uses it as a loop boundary.
>> 180                             smbios_print_generic(pos);
>> 181                             break;
>> 182                     }
>> 183             }
>> 184
>> 185             return CMD_RET_SUCCESS;
>> /cmd/smbios.c: 174 in do_smbios()
>> 168                            (unsigned long long)map_to_sysmem(pos));
>> 169                     switch (pos->type) {
>> 170                     case 1:
>> 171                             smbios_print_type1((struct smbios_type1 *)pos);
>> 172                             break;
>> 173                     case 2:
>>>>>      CID 479279:    (TAINTED_SCALAR)
>>>>>      Passing tainted expression "((struct smbios_type2 *)pos)->number_contained_objects" to "smbios_print_type2", which uses it as a loop boundary.
>> 174                             smbios_print_type2((struct smbios_type2 *)pos);
>> 175                             break;
>> 176                     case 127:
>> 177                             smbios_print_type127((struct
>> smbios_type127 *)pos);
>> 178                             break;
>> 179                     default:
>> /cmd/smbios.c: 174 in do_smbios()
>> 168                            (unsigned long long)map_to_sysmem(pos));
>> 169                     switch (pos->type) {
>> 170                     case 1:
>> 171                             smbios_print_type1((struct smbios_type1 *)pos);
>> 172                             break;
>> 173                     case 2:
>>>>>      CID 479279:    (TAINTED_SCALAR)
>>>>>      Passing tainted expression "((struct smbios_type2 *)pos)->number_contained_objects" to "smbios_print_type2", which uses it as a loop boundary.
>> 174                             smbios_print_type2((struct smbios_type2 *)pos);
>> 175                             break;
>> 176                     case 127:
>> 177                             smbios_print_type127((struct
>> smbios_type127 *)pos);
>> 178                             break;
>> 179                     default:
>> /cmd/smbios.c: 180 in do_smbios()
>> 174                             smbios_print_type2((struct smbios_type2 *)pos);
>> 175                             break;
>> 176                     case 127:
>> 177                             smbios_print_type127((struct
>> smbios_type127 *)pos);
>> 178                             break;
>> 179                     default:
>>>>>      CID 479279:    (TAINTED_SCALAR)
>>>>>      Passing tainted expression "pos->length" to "smbios_print_generic", which uses it as a loop boundary.
>> 180                             smbios_print_generic(pos);
>> 181                             break;
>> 182                     }
>> 183             }
>> 184
>> 185             return CMD_RET_SUCCESS;
>> /cmd/smbios.c: 180 in do_smbios()
>> 174                             smbios_print_type2((struct smbios_type2 *)pos);
>> 175                             break;
>> 176                     case 127:
>> 177                             smbios_print_type127((struct
>> smbios_type127 *)pos);
>> 178                             break;
>> 179                     default:
>>>>>      CID 479279:    (TAINTED_SCALAR)
>>>>>      Passing tainted expression "pos->length" to "smbios_print_generic", which uses it as a loop boundary.
>> 180                             smbios_print_generic(pos);
>> 181                             break;
>> 182                     }
>> 183             }
>> 184
>> 185             return CMD_RET_SUCCESS;
>> /cmd/smbios.c: 174 in do_smbios()
>> 168                            (unsigned long long)map_to_sysmem(pos));
>> 169                     switch (pos->type) {
>> 170                     case 1:
>> 171                             smbios_print_type1((struct smbios_type1 *)pos);
>> 172                             break;
>> 173                     case 2:
>>>>>      CID 479279:    (TAINTED_SCALAR)
>>>>>      Passing tainted expression "((struct smbios_type2 *)pos)->number_contained_objects" to "smbios_print_type2", which uses it as a loop boundary.
>> 174                             smbios_print_type2((struct smbios_type2 *)pos);
>> 175                             break;
>> 176                     case 127:
>> 177                             smbios_print_type127((struct
>> smbios_type127 *)pos);
>> 178                             break;
>> 179                     default:
>> /cmd/smbios.c: 180 in do_smbios()
>> 174                             smbios_print_type2((struct smbios_type2 *)pos);
>> 175                             break;
>> 176                     case 127:
>> 177                             smbios_print_type127((struct
>> smbios_type127 *)pos);
>> 178                             break;
>> 179                     default:
>>>>>      CID 479279:    (TAINTED_SCALAR)
>>>>>      Passing tainted expression "pos->length" to "smbios_print_generic", which uses it as a loop boundary.
>> 180                             smbios_print_generic(pos);
>> 181                             break;
>> 182                     }
>> 183             }
>> 184
>> 185             return CMD_RET_SUCCESS;
>> /cmd/smbios.c: 174 in do_smbios()
>> 168                            (unsigned long long)map_to_sysmem(pos));
>> 169                     switch (pos->type) {
>> 170                     case 1:
>> 171                             smbios_print_type1((struct smbios_type1 *)pos);
>> 172                             break;
>> 173                     case 2:
>>>>>      CID 479279:    (TAINTED_SCALAR)
>>>>>      Passing tainted expression "((struct smbios_type2 *)pos)->number_contained_objects" to "smbios_print_type2", which uses it as a loop boundary.
>> 174                             smbios_print_type2((struct smbios_type2 *)pos);
>> 175                             break;
>> 176                     case 127:
>> 177                             smbios_print_type127((struct
>> smbios_type127 *)pos);
>> 178                             break;
>> 179                     default:
>>
>
> The values may come from QEMU, so may be "tainted". We could check the length of the individual structures against the total size of the SMBIOS table.
>

In Coverity I marked this as false positive with the following comment:

"The only case in which the data is tainted is when copying the smbios
table from a prior firmware state when running as EFI app or from QEMU.
Sanity checks should not be in the smbios command but where we import
the table."

Best regards

Heinrich


  reply	other threads:[~2024-01-28  8:51 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20240127154018.GC785631@bill-the-cat>
2024-01-27 20:56 ` Fwd: New Defects reported by Coverity Scan for Das U-Boot Heinrich Schuchardt
2024-01-28  8:51   ` Heinrich Schuchardt [this message]
2026-05-11 22:35 Tom Rini
  -- strict thread matches above, loose matches on Subject: below --
2026-05-08 23:42 Tom Rini
2026-05-14 15:39 ` Lucien.Jheng
2026-04-28 14:04 Tom Rini
2026-04-29  6:31 ` Michal Simek
2026-05-01 22:51   ` Raymond Mao
2026-05-12  8:44 ` Christian Pötzsch
2026-05-12 18:38   ` Tom Rini
2026-04-06 19:12 Tom Rini
2026-03-09 21:23 Tom Rini
2026-03-09 22:05 ` Raphaël Gallais-Pou
2026-03-09 22:13   ` Tom Rini
2026-02-23 19:51 Tom Rini
2026-02-13 22:09 Tom Rini
2026-02-18 23:02 ` Chris Morgan
2026-02-20 16:11   ` Tom Rini
2026-02-20 16:23     ` Chris Morgan
2026-01-16 19:43 Tom Rini
2026-02-09 11:05 ` Guillaume La Roque
2026-02-20 16:11   ` Tom Rini
2026-01-06 20:36 Tom Rini
2026-01-05 23:58 Tom Rini
2026-01-06  9:37 ` Mattijs Korpershoek
2026-01-06 17:15   ` Tom Rini
2026-01-06 10:03 ` Heiko Schocher
2025-12-08 19:38 Tom Rini
2025-11-23 19:03 Tom Rini
2025-11-10 18:55 Tom Rini
2025-10-11 18:06 Tom Rini
2025-10-12 14:22 ` Mikhail Kshevetskiy
2025-10-12 19:07   ` Tom Rini
2025-11-01  6:32     ` Mikhail Kshevetskiy
2025-11-03 15:17       ` Tom Rini
2025-11-03 15:24         ` Michael Nazzareno Trimarchi
2025-08-06 18:35 Tom Rini
2025-08-07  9:17 ` Heiko Schocher
2025-08-08  3:37   ` Maniyam, Dinesh
2025-08-08  4:01     ` Heiko Schocher
2025-07-29 16:32 Tom Rini
2025-07-25 13:26 Tom Rini
2025-07-25 13:34 ` Michal Simek
2025-08-04  9:11 ` Alexander Dahl
2025-07-14 23:29 Tom Rini
2025-07-15 13:45 ` Rasmus Villemoes
2025-07-08 14:10 Tom Rini
2025-04-28 21:59 Tom Rini
2025-04-29 12:07 ` Jerome Forissier
2025-04-30 16:50 ` Marek Vasut
2025-04-30 17:01   ` Tom Rini
2025-04-30 18:23 ` Heinrich Schuchardt
2025-04-30 19:14   ` Tom Rini
2025-03-11  1:49 Tom Rini
2025-02-25  2:39 Tom Rini
2025-02-25  6:06 ` Heiko Schocher
2025-02-25 10:48   ` Quentin Schulz
2025-02-25 10:54     ` Heiko Schocher
2025-02-10 22:26 Tom Rini
2025-02-11  6:14 ` Heiko Schocher
2025-02-11 22:30   ` Tom Rini
2024-12-31 13:55 Tom Rini
2024-12-24 17:14 Tom Rini
2024-11-15 13:27 Tom Rini
2024-11-12  2:11 Tom Rini
2024-10-28  3:11 Tom Rini
2024-10-19 16:16 Tom Rini
2024-10-16  3:47 Tom Rini
2024-10-16  5:56 ` Tudor Ambarus
2024-10-07 17:15 Tom Rini
2024-07-23 14:18 Tom Rini
2024-07-24  9:21 ` Mattijs Korpershoek
2024-07-24  9:45   ` Heinrich Schuchardt
2024-07-24  9:56     ` Mattijs Korpershoek
2024-07-24 10:06       ` Heinrich Schuchardt
2024-07-24 22:40         ` Tom Rini
2024-07-25  8:04           ` Mattijs Korpershoek
2024-07-25 17:16             ` Tom Rini
2024-07-24  9:53   ` Mattijs Korpershoek
2024-04-22 21:48 Tom Rini
2024-01-29 23:55 Tom Rini
2024-01-30  8:14 ` Heinrich Schuchardt
2024-01-22 23:52 Tom Rini
2024-01-22 23:30 Tom Rini
2024-01-23  8:15 ` Hugo Cornelis
     [not found] <65a933ab652b3_da12cbd3e77f998728e5@prd-scan-dashboard-0.mail>
2024-01-19  8:47 ` Heinrich Schuchardt
2024-01-18 14:35 Tom Rini
2024-01-08 17:45 Tom Rini
2024-01-09  5:26 ` Sean Anderson
2024-01-09 22:18   ` Tom Rini
2023-08-21 21:09 Tom Rini
2023-08-24  9:27 ` Abdellatif El Khlifi
2023-08-28 16:09   ` Alvaro Fernando García
2023-08-28 16:11     ` Tom Rini
2023-10-20 11:57 ` Abdellatif El Khlifi
2023-10-25 14:57   ` Tom Rini
2023-10-25 15:12     ` Abdellatif El Khlifi
2023-10-25 15:15       ` Tom Rini
2023-10-31 14:21         ` Abdellatif El Khlifi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=eb078cd8-a041-4b35-b3f3-def5e1919477@gmx.de \
    --to=xypron.glpk@gmx.de \
    --cc=ilias.apalodimas@linaro.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.