[scan-admin at coverity.com: New Defects reported by Coverity Scan for Das U-Boot]
Tom Rini
trini at konsulko.com
Sat Mar 5 19:27:56 CET 2022
So I've updated to the latest tool and that's why there's so many new
defects found in old code.
----- Forwarded message from scan-admin at coverity.com -----
Date: Sat, 05 Mar 2022 17:28:09 +0000 (UTC)
From: scan-admin at coverity.com
To: tom.rini at gmail.com
Subject: New Defects reported by Coverity Scan for Das U-Boot
Hi,
Please find the latest report on new defect(s) introduced to Das U-Boot found with Coverity Scan.
43 new defect(s) introduced to Das U-Boot found with Coverity Scan.
3 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan.
New defect(s) Reported-by: Coverity Scan
Showing 20 of 43 defect(s)
** CID 350448: Insecure data handling (TAINTED_SCALAR)
________________________________________________________________________________________________________
*** CID 350448: Insecure data handling (TAINTED_SCALAR)
/cmd/abootimg.c: 90 in abootimg_get_dtb_load_addr()
84 goto exit;
85 }
86
87 if (argc == 0)
88 printf("%lx\n", (ulong)hdr->dtb_addr);
89 else
>>> CID 350448: Insecure data handling (TAINTED_SCALAR)
>>> Passing tainted expression "hdr->dtb_addr" to "env_set_hex", which uses it as an offset.
90 env_set_hex(argv[0], (ulong)hdr->dtb_addr);
91
92 exit:
93 unmap_sysmem(hdr);
94 return res;
95 }
** CID 350447: Integer handling issues (OVERFLOW_BEFORE_WIDEN)
/drivers/nvme/nvme.c: 772 in nvme_blk_rw()
________________________________________________________________________________________________________
*** CID 350447: Integer handling issues (OVERFLOW_BEFORE_WIDEN)
/drivers/nvme/nvme.c: 772 in nvme_blk_rw()
766 c.rw.prp1 = cpu_to_le64(temp_buffer);
767 c.rw.prp2 = cpu_to_le64(prp2);
768 status = nvme_submit_sync_cmd(dev->queues[NVME_IO_Q],
769 &c, NULL, IO_TIMEOUT);
770 if (status)
771 break;
>>> CID 350447: Integer handling issues (OVERFLOW_BEFORE_WIDEN)
>>> Potentially overflowing expression "(u32)lbas << ns->lba_shift" with type "u32" (32 bits, unsigned) is evaluated using 32-bit arithmetic, and then used in a context that expects an expression of type "u64" (64 bits, unsigned).
772 temp_len -= (u32)lbas << ns->lba_shift;
773 temp_buffer += lbas << ns->lba_shift;
774 }
775
776 if (read)
777 invalidate_dcache_range((unsigned long)buffer,
** CID 350446: (TAINTED_SCALAR)
________________________________________________________________________________________________________
*** CID 350446: (TAINTED_SCALAR)
/fs/fat/fat.c: 1016 in fat_itr_next()
1010 }
1011
1012 /* short file name */
1013 break;
1014 }
1015
>>> CID 350446: (TAINTED_SCALAR)
>>> Passing tainted expression "dent->nameext" to "get_name", which uses it as an offset.
1016 get_name(dent, itr->s_name);
1017 if (!itr->name)
1018 itr->name = itr->s_name;
1019
1020 return 1;
1021 }
/fs/fat/fat.c: 1016 in fat_itr_next()
1010 }
1011
1012 /* short file name */
1013 break;
1014 }
1015
>>> CID 350446: (TAINTED_SCALAR)
>>> Passing tainted expression "dent->nameext" to "get_name", which uses it as an offset.
1016 get_name(dent, itr->s_name);
1017 if (!itr->name)
1018 itr->name = itr->s_name;
1019
1020 return 1;
1021 }
/fs/fat/fat.c: 1016 in fat_itr_next()
1010 }
1011
1012 /* short file name */
1013 break;
1014 }
1015
>>> CID 350446: (TAINTED_SCALAR)
>>> Passing tainted expression "dent->nameext" to "get_name", which uses it as an offset.
1016 get_name(dent, itr->s_name);
1017 if (!itr->name)
1018 itr->name = itr->s_name;
1019
1020 return 1;
1021 }
** CID 350445: (TAINTED_SCALAR)
________________________________________________________________________________________________________
*** CID 350445: (TAINTED_SCALAR)
/tools/kwbimage.c: 2452 in kwbimage_extract_subimage()
2446 fprintf(stderr, " -p N - Nth binary header image (totally: %d)\n",
2447 cur_idx - 1);
2448 return -1;
2449 }
2450 }
2451
>>> CID 350445: (TAINTED_SCALAR)
>>> Passing tainted expression "size" to "imagetool_save_subimage", which uses it as an offset.
2452 return imagetool_save_subimage(params->outfile, image, size);
2453 }
2454
2455 /*
2456 * Report Error if xflag is set in addition to default
2457 */
/tools/kwbimage.c: 2452 in kwbimage_extract_subimage()
2446 fprintf(stderr, " -p N - Nth binary header image (totally: %d)\n",
2447 cur_idx - 1);
2448 return -1;
2449 }
2450 }
2451
>>> CID 350445: (TAINTED_SCALAR)
>>> Passing tainted expression "size" to "imagetool_save_subimage", which uses it as an offset.
2452 return imagetool_save_subimage(params->outfile, image, size);
2453 }
2454
2455 /*
2456 * Report Error if xflag is set in addition to default
2457 */
/tools/kwbimage.c: 2452 in kwbimage_extract_subimage()
2446 fprintf(stderr, " -p N - Nth binary header image (totally: %d)\n",
2447 cur_idx - 1);
2448 return -1;
2449 }
2450 }
2451
>>> CID 350445: (TAINTED_SCALAR)
>>> Passing tainted expression "size" to "imagetool_save_subimage", which uses it as an offset.
2452 return imagetool_save_subimage(params->outfile, image, size);
2453 }
2454
2455 /*
2456 * Report Error if xflag is set in addition to default
2457 */
/tools/kwbimage.c: 2452 in kwbimage_extract_subimage()
2446 fprintf(stderr, " -p N - Nth binary header image (totally: %d)\n",
2447 cur_idx - 1);
2448 return -1;
2449 }
2450 }
2451
>>> CID 350445: (TAINTED_SCALAR)
>>> Passing tainted expression "size" to "imagetool_save_subimage", which uses it as an offset.
2452 return imagetool_save_subimage(params->outfile, image, size);
2453 }
2454
2455 /*
2456 * Report Error if xflag is set in addition to default
2457 */
** CID 350444: Insecure data handling (TAINTED_SCALAR)
/boot/image-android.c: 354 in android_image_get_dtb_by_index()
________________________________________________________________________________________________________
*** CID 350444: Insecure data handling (TAINTED_SCALAR)
/boot/image-android.c: 354 in android_image_get_dtb_by_index()
348 /* Find out the address of DTB with specified index in concat blobs */
349 hdr = map_sysmem(hdr_addr, sizeof(*hdr));
350 dtb_img_size = hdr->dtb_size;
351 unmap_sysmem(hdr);
352 i = 0;
353 dtb_addr = dtb_img_addr;
>>> CID 350444: Insecure data handling (TAINTED_SCALAR)
>>> Using tainted variable "dtb_img_addr + dtb_img_size" as a loop boundary.
354 while (dtb_addr < dtb_img_addr + dtb_img_size) {
355 const struct fdt_header *fdt;
356 u32 dtb_size;
357
358 fdt = map_sysmem(dtb_addr, sizeof(*fdt));
359 if (fdt_check_header(fdt) != 0) {
** CID 350443: (TAINTED_SCALAR)
/drivers/nvme/nvme.c: 862 in nvme_init()
________________________________________________________________________________________________________
*** CID 350443: (TAINTED_SCALAR)
/drivers/nvme/nvme.c: 862 in nvme_init()
856 id = memalign(ndev->page_size, sizeof(struct nvme_id_ns));
857 if (!id) {
858 ret = -ENOMEM;
859 goto free_queue;
860 }
861
>>> CID 350443: (TAINTED_SCALAR)
>>> Using tainted variable "ndev->nn" as a loop boundary.
862 for (int i = 1; i <= ndev->nn; i++) {
863 struct udevice *ns_udev;
864 char name[20];
865
866 memset(id, 0, sizeof(*id));
867 if (nvme_identify(ndev, i, 0, (dma_addr_t)(long)id)) {
/drivers/nvme/nvme.c: 889 in nvme_init()
883 ret = blk_create_devicef(udev, "nvme-blk", name, IF_TYPE_NVME,
884 -1, 512, 0, &ns_udev);
885 if (ret)
886 goto free_id;
887 }
888
>>> CID 350443: (TAINTED_SCALAR)
>>> Passing tainted expression "*id" to "dlfree", which uses it as an offset.
889 free(id);
890 return 0;
891
892 free_id:
893 free(id);
894 free_queue:
/drivers/nvme/nvme.c: 893 in nvme_init()
887 }
888
889 free(id);
890 return 0;
891
892 free_id:
>>> CID 350443: (TAINTED_SCALAR)
>>> Passing tainted expression "*id" to "dlfree", which uses it as an offset.
893 free(id);
894 free_queue:
895 free((void *)ndev->queues);
896 free_nvme:
897 return ret;
898 }
** CID 350442: Memory - corruptions (OVERRUN)
/env/common.c: 103 in eth_env_set_enetaddr()
________________________________________________________________________________________________________
*** CID 350442: Memory - corruptions (OVERRUN)
/env/common.c: 103 in eth_env_set_enetaddr()
97 {
98 char buf[ARP_HLEN_ASCII + 1];
99
100 if (eth_env_get_enetaddr(name, (uint8_t *)buf))
101 return -EEXIST;
102
>>> CID 350442: Memory - corruptions (OVERRUN)
>>> "sprintf" will overrun its first argument "buf" which can accommodate 18 bytes. The number of bytes written may be 20 bytes, including the terminating null.
103 sprintf(buf, "%pM", enetaddr);
104
105 return env_set(name, buf);
106 }
107
108 /*
** CID 350441: (TAINTED_SCALAR)
/tools/ifwitool.c: 1888 in ifwi_dir_extract()
________________________________________________________________________________________________________
*** CID 350441: (TAINTED_SCALAR)
/tools/ifwitool.c: 1907 in ifwi_dir_extract()
1901
1902 DEBUG("Splicing buffer at 0x%x size 0x%x\n", s->e[i].offset,
1903 s->e[i].length);
1904 buffer_splice(&dst, &ifwi_image.subpart_buf[type], s->e[i].offset,
1905 s->e[i].length);
1906
>>> CID 350441: (TAINTED_SCALAR)
>>> Passing tainted expression "dst.size" to "buffer_write_file", which uses it as an offset.
1907 if (buffer_write_file(&dst, param.file_name))
1908 return COMMAND_ERR;
1909
1910 printf("Sub-Partition %s(%d), entry(%s) stored in %s.\n",
1911 param.subpart_name, type, param.dentry_name, param.file_name);
1912
/tools/ifwitool.c: 1888 in ifwi_dir_extract()
1882 parse_subpart_dir(&subpart_dir_buff, &ifwi_image.subpart_buf[type],
1883 subparts[type].name);
1884
1885 uint32_t i;
1886 struct subpart_dir *s = buffer_get(&subpart_dir_buff);
1887
>>> CID 350441: (TAINTED_SCALAR)
>>> Using tainted variable "s->h.num_entries" as a loop boundary.
1888 for (i = 0; i < s->h.num_entries; i++) {
1889 if (!strncmp((char *)s->e[i].name, param.dentry_name,
1890 sizeof(s->e[i].name)))
1891 break;
1892 }
1893
** CID 350440: Memory - corruptions (OVERRUN)
________________________________________________________________________________________________________
*** CID 350440: Memory - corruptions (OVERRUN)
/drivers/block/ide.c: 615 in ide_ident()
609 #endif
610
611 ide_input_swap_data(device, (ulong *)&iop, ATA_SECTORWORDS);
612
613 ident_cpy((unsigned char *)dev_desc->revision, iop.fw_rev,
614 sizeof(dev_desc->revision));
>>> CID 350440: Memory - corruptions (OVERRUN)
>>> Overrunning array "iop.model" of 40 bytes by passing it to a function which accesses it at byte offset 40 using argument "41U".
615 ident_cpy((unsigned char *)dev_desc->vendor, iop.model,
616 sizeof(dev_desc->vendor));
617 ident_cpy((unsigned char *)dev_desc->product, iop.serial_no,
618 sizeof(dev_desc->product));
619
620 if ((iop.config & 0x0080) == 0x0080)
** CID 350439: Insecure data handling (TAINTED_SCALAR)
________________________________________________________________________________________________________
*** CID 350439: Insecure data handling (TAINTED_SCALAR)
/disk/part_efi.c: 257 in part_print_efi()
251 printf("\ttype:\t%pUl\n", uuid);
252 uuid = (unsigned char *)gpt_pte[i].unique_partition_guid.b;
253 printf("\tguid:\t%pUl\n", uuid);
254 }
255
256 /* Remember to free pte */
>>> CID 350439: Insecure data handling (TAINTED_SCALAR)
>>> Passing tainted expression "*gpt_pte" to "dlfree", which uses it as an offset.
257 free(gpt_pte);
258 return;
259 }
260
261 int part_get_info_efi(struct blk_desc *dev_desc, int part,
262 struct disk_partition *info)
** CID 350438: (TAINTED_SCALAR)
________________________________________________________________________________________________________
*** CID 350438: (TAINTED_SCALAR)
/disk/part_efi.c: 281 in part_get_info_efi()
275 return -1;
276
277 if (part > le32_to_cpu(gpt_head->num_partition_entries) ||
278 !is_pte_valid(&gpt_pte[part - 1])) {
279 debug("%s: *** ERROR: Invalid partition number %d ***\n",
280 __func__, part);
>>> CID 350438: (TAINTED_SCALAR)
>>> Passing tainted expression "*gpt_pte" to "dlfree", which uses it as an offset.
281 free(gpt_pte);
282 return -1;
283 }
284
285 /* The 'lbaint_t' casting may limit the maximum disk size to 2 TB */
286 info->start = (lbaint_t)le64_to_cpu(gpt_pte[part - 1].starting_lba);
/disk/part_efi.c: 309 in part_get_info_efi()
303 #endif
304
305 debug("%s: start 0x" LBAF ", size 0x" LBAF ", name %s\n", __func__,
306 info->start, info->size, info->name);
307
308 /* Remember to free pte */
>>> CID 350438: (TAINTED_SCALAR)
>>> Passing tainted expression "*gpt_pte" to "dlfree", which uses it as an offset.
309 free(gpt_pte);
310 return 0;
311 }
312
313 static int part_test_efi(struct blk_desc *dev_desc)
314 {
** CID 350437: Insecure data handling (TAINTED_SCALAR)
________________________________________________________________________________________________________
*** CID 350437: Insecure data handling (TAINTED_SCALAR)
/disk/part_efi.c: 687 in gpt_verify_headers()
681 printf("%s: *** ERROR: Invalid GPT ***\n",
682 __func__);
683 return -1;
684 }
685
686 /* Free pte before allocating again */
>>> CID 350437: Insecure data handling (TAINTED_SCALAR)
>>> Passing tainted expression "**gpt_pte" to "dlfree", which uses it as an offset.
687 free(*gpt_pte);
688
689 /*
690 * Check that the alternate_lba entry points to the last LBA
691 */
692 if (le64_to_cpu(gpt_head->alternate_lba) != (dev_desc->lba - 1)) {
** CID 350436: Insecure data handling (TAINTED_SCALAR)
/tools/ifwitool.c: 1456 in bpdt_fixup_write_buffer()
________________________________________________________________________________________________________
*** CID 350436: Insecure data handling (TAINTED_SCALAR)
/tools/ifwitool.c: 1456 in bpdt_fixup_write_buffer()
1450 offset = fix_member(&h->ifwi_version, offset, sizeof(h->ifwi_version));
1451 offset = fix_member(&h->fit_tool_version, offset,
1452 sizeof(h->fit_tool_version));
1453
1454 uint32_t i;
1455
>>> CID 350436: Insecure data handling (TAINTED_SCALAR)
>>> Using tainted variable "count" as a loop boundary.
1456 for (i = 0; i < count; i++) {
1457 offset = fix_member(&e[i].type, offset, sizeof(e[i].type));
1458 offset = fix_member(&e[i].flags, offset, sizeof(e[i].flags));
1459 offset = fix_member(&e[i].offset, offset, sizeof(e[i].offset));
1460 offset = fix_member(&e[i].size, offset, sizeof(e[i].size));
1461 }
** CID 350435: Insecure data handling (TAINTED_SCALAR)
________________________________________________________________________________________________________
*** CID 350435: Insecure data handling (TAINTED_SCALAR)
/cmd/extension_board.c: 56 in extension_apply()
50
51 blob = map_sysmem(overlay_addr, 0);
52 if (!fdt_valid(&blob))
53 return CMD_RET_FAILURE;
54
55 /* apply method prints messages on error */
>>> CID 350435: Insecure data handling (TAINTED_SCALAR)
>>> Passing tainted expression "*blob" to "fdt_overlay_apply_verbose", which uses it as an offset.
56 if (fdt_overlay_apply_verbose(working_fdt, blob))
57 return CMD_RET_FAILURE;
58
59 return CMD_RET_SUCCESS;
60 }
61
** CID 350434: Uninitialized variables (UNINIT)
________________________________________________________________________________________________________
*** CID 350434: Uninitialized variables (UNINIT)
/lib/efi_loader/efi_device_path_to_text.c: 435 in efi_convert_device_path_to_text()
429 str = efi_convert_single_device_node_to_text(
430 str, device_path);
431 }
432 *(u8 **)&device_path += device_path->length;
433 }
434
>>> CID 350434: Uninitialized variables (UNINIT)
>>> Using uninitialized value "*buffer" when calling "efi_str_to_u16".
435 text = efi_str_to_u16(buffer);
436
437 out:
438 EFI_EXIT(EFI_SUCCESS);
439 return text;
440 }
** CID 350433: Memory - corruptions (OVERRUN)
________________________________________________________________________________________________________
*** CID 350433: Memory - corruptions (OVERRUN)
/drivers/block/ide.c: 613 in ide_ident()
607 if (retries == 2) /* Not found */
608 return;
609 #endif
610
611 ide_input_swap_data(device, (ulong *)&iop, ATA_SECTORWORDS);
612
>>> CID 350433: Memory - corruptions (OVERRUN)
>>> Overrunning array "iop.fw_rev" of 8 bytes by passing it to a function which accesses it at byte offset 8 using argument "9U".
613 ident_cpy((unsigned char *)dev_desc->revision, iop.fw_rev,
614 sizeof(dev_desc->revision));
615 ident_cpy((unsigned char *)dev_desc->vendor, iop.model,
616 sizeof(dev_desc->vendor));
617 ident_cpy((unsigned char *)dev_desc->product, iop.serial_no,
618 sizeof(dev_desc->product));
** CID 350432: (TAINTED_SCALAR)
________________________________________________________________________________________________________
*** CID 350432: (TAINTED_SCALAR)
/cmd/gpt.c: 650 in gpt_verify()
644 /* Check partition layout with provided pattern */
645 ret = gpt_verify_partitions(blk_dev_desc, partitions, part_count,
646 gpt_head, &gpt_pte);
647 free(str_disk_guid);
648 free(partitions);
649 out:
>>> CID 350432: (TAINTED_SCALAR)
>>> Passing tainted expression "*gpt_pte" to "dlfree", which uses it as an offset.
650 free(gpt_pte);
651 return ret;
652 }
653
654 /**
655 * gpt_enumerate() - Enumerate partition names into environment variable.
/cmd/gpt.c: 650 in gpt_verify()
644 /* Check partition layout with provided pattern */
645 ret = gpt_verify_partitions(blk_dev_desc, partitions, part_count,
646 gpt_head, &gpt_pte);
647 free(str_disk_guid);
648 free(partitions);
649 out:
>>> CID 350432: (TAINTED_SCALAR)
>>> Passing tainted expression "*gpt_pte" to "dlfree", which uses it as an offset.
650 free(gpt_pte);
651 return ret;
652 }
653
654 /**
655 * gpt_enumerate() - Enumerate partition names into environment variable.
/cmd/gpt.c: 650 in gpt_verify()
644 /* Check partition layout with provided pattern */
645 ret = gpt_verify_partitions(blk_dev_desc, partitions, part_count,
646 gpt_head, &gpt_pte);
647 free(str_disk_guid);
648 free(partitions);
649 out:
>>> CID 350432: (TAINTED_SCALAR)
>>> Passing tainted expression "*gpt_pte" to "dlfree", which uses it as an offset.
650 free(gpt_pte);
651 return ret;
652 }
653
654 /**
655 * gpt_enumerate() - Enumerate partition names into environment variable.
/cmd/gpt.c: 650 in gpt_verify()
644 /* Check partition layout with provided pattern */
645 ret = gpt_verify_partitions(blk_dev_desc, partitions, part_count,
646 gpt_head, &gpt_pte);
647 free(str_disk_guid);
648 free(partitions);
649 out:
>>> CID 350432: (TAINTED_SCALAR)
>>> Passing tainted expression "*gpt_pte" to "dlfree", which uses it as an offset.
650 free(gpt_pte);
651 return ret;
652 }
653
654 /**
655 * gpt_enumerate() - Enumerate partition names into environment variable.
** CID 350431: (TAINTED_SCALAR)
________________________________________________________________________________________________________
*** CID 350431: (TAINTED_SCALAR)
/tools/ifwitool.c: 1974 in ifwi_print()
1968
1969 bpdt_print_header(&b->h, "BPDT");
1970 bpdt_print_entries(&b->e[0], b->h.descriptor_count, "BPDT");
1971
1972 b = buffer_get(&ifwi_image.subpart_buf[S_BPDT_TYPE]);
1973 bpdt_print_header(&b->h, "S-BPDT");
>>> CID 350431: (TAINTED_SCALAR)
>>> Passing tainted expression "b->h.descriptor_count" to "bpdt_print_entries", which uses it as a loop boundary.
1974 bpdt_print_entries(&b->e[0], b->h.descriptor_count, "S-BPDT");
1975
1976 if (param.dir_ops == 0) {
1977 verbose -= 2;
1978 return NO_ACTION_REQUIRED;
1979 }
/tools/ifwitool.c: 1970 in ifwi_print()
1964 {
1965 verbose += 2;
1966
1967 struct bpdt *b = buffer_get(&ifwi_image.bpdt);
1968
1969 bpdt_print_header(&b->h, "BPDT");
>>> CID 350431: (TAINTED_SCALAR)
>>> Passing tainted expression "b->h.descriptor_count" to "bpdt_print_entries", which uses it as a loop boundary.
1970 bpdt_print_entries(&b->e[0], b->h.descriptor_count, "BPDT");
1971
1972 b = buffer_get(&ifwi_image.subpart_buf[S_BPDT_TYPE]);
1973 bpdt_print_header(&b->h, "S-BPDT");
1974 bpdt_print_entries(&b->e[0], b->h.descriptor_count, "S-BPDT");
1975
/tools/ifwitool.c: 1989 in ifwi_print()
1983
1984 for (i = 0; i < MAX_SUBPARTS ; i++) {
1985 if (!(subparts[i].attr & CONTAINS_DIR) ||
1986 (buffer_size(&ifwi_image.subpart_buf[i]) == 0))
1987 continue;
1988
>>> CID 350431: (TAINTED_SCALAR)
>>> Passing tainted expression "*subpart_dir_buf.data" to "parse_subpart_dir", which uses it as a loop boundary.
1989 parse_subpart_dir(&subpart_dir_buf, &ifwi_image.subpart_buf[i],
1990 subparts[i].name);
1991 buffer_delete(&subpart_dir_buf);
1992 }
1993
1994 verbose -= 2;
/tools/ifwitool.c: 1970 in ifwi_print()
1964 {
1965 verbose += 2;
1966
1967 struct bpdt *b = buffer_get(&ifwi_image.bpdt);
1968
1969 bpdt_print_header(&b->h, "BPDT");
>>> CID 350431: (TAINTED_SCALAR)
>>> Passing tainted expression "b->e[0].type" to "bpdt_print_entries", which uses it as an offset.
1970 bpdt_print_entries(&b->e[0], b->h.descriptor_count, "BPDT");
1971
1972 b = buffer_get(&ifwi_image.subpart_buf[S_BPDT_TYPE]);
1973 bpdt_print_header(&b->h, "S-BPDT");
1974 bpdt_print_entries(&b->e[0], b->h.descriptor_count, "S-BPDT");
1975
/tools/ifwitool.c: 1974 in ifwi_print()
1968
1969 bpdt_print_header(&b->h, "BPDT");
1970 bpdt_print_entries(&b->e[0], b->h.descriptor_count, "BPDT");
1971
1972 b = buffer_get(&ifwi_image.subpart_buf[S_BPDT_TYPE]);
1973 bpdt_print_header(&b->h, "S-BPDT");
>>> CID 350431: (TAINTED_SCALAR)
>>> Passing tainted expression "b->e[0].type" to "bpdt_print_entries", which uses it as an offset.
1974 bpdt_print_entries(&b->e[0], b->h.descriptor_count, "S-BPDT");
1975
1976 if (param.dir_ops == 0) {
1977 verbose -= 2;
1978 return NO_ACTION_REQUIRED;
1979 }
** CID 350430: Insecure data handling (TAINTED_SCALAR)
________________________________________________________________________________________________________
*** CID 350430: Insecure data handling (TAINTED_SCALAR)
/disk/part_efi.c: 1072 in alloc_read_gpt_entries()
1066
1067 /* Read GPT Entries from device */
1068 blk = le64_to_cpu(pgpt_head->partition_entry_lba);
1069 blk_cnt = BLOCK_CNT(count, dev_desc);
1070 if (blk_dread(dev_desc, blk, (lbaint_t)blk_cnt, pte) != blk_cnt) {
1071 printf("*** ERROR: Can't read GPT Entries ***\n");
>>> CID 350430: Insecure data handling (TAINTED_SCALAR)
>>> Passing tainted expression "*pte" to "dlfree", which uses it as an offset.
1072 free(pte);
1073 return NULL;
1074 }
1075 return pte;
1076 }
1077
** CID 350429: Insecure data handling (TAINTED_SCALAR)
/tools/ifwitool.c: 1671 in subpart_dir_fixup_write_buffer()
________________________________________________________________________________________________________
*** CID 350429: Insecure data handling (TAINTED_SCALAR)
/tools/ifwitool.c: 1671 in subpart_dir_fixup_write_buffer()
1665 sizeof(h->header_length));
1666 offset = fix_member(&h->checksum, offset, sizeof(h->checksum));
1667 offset += sizeof(h->name);
1668
1669 uint32_t i;
1670
>>> CID 350429: Insecure data handling (TAINTED_SCALAR)
>>> Using tainted variable "count" as a loop boundary.
1671 for (i = 0; i < count; i++) {
1672 offset += sizeof(e[i].name);
1673 offset = fix_member(&e[i].offset, offset, sizeof(e[i].offset));
1674 offset = fix_member(&e[i].length, offset, sizeof(e[i].length));
1675 offset = fix_member(&e[i].rsvd, offset, sizeof(e[i].rsvd));
1676 }
________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, https://u15810271.ct.sendgrid.net/ls/click?upn=HRESupC-2F2Czv4BOaCWWCy7my0P0qcxCbhZ31OYv50yoA22WlOQ-2By3ieUvdbKmOyw68TMVT4Kip-2BBzfOGWXJ5yIiYplmPF9KAnKIja4Zd7tU-3DGKvW_EEm8SbLgSDsaDZif-2Bv7ch8WqhKpLoKErHi4nXpwDNTtc7gEAOgWMAeiVB7LaCwibvgJK-2BuYN7whAG3Emw0bQHn1Oa8Pcu5zkc9xjCGLkZ-2BEFifG0kw14m6L3JHaODpHs3zvdstJCbcIrf3zAfeJAJpnLuNKaD25DMT20lk8wd23-2FKhn6sgueK1Gl-2F0NAhAGzLJwzuClWIrLkqo2p6t1WFg-3D-3D
To manage Coverity Scan email notifications for "tom.rini at gmail.com", click https://u15810271.ct.sendgrid.net/ls/click?upn=HRESupC-2F2Czv4BOaCWWCy7my0P0qcxCbhZ31OYv50yped04pjJnmXOsUBtKYNIXxWeIHzDeopm-2BEWQ6S6K-2FtUHv9ZTk8qZbuzkkz9sa-2BJFw4elYDyedRVZOC-2ButxjBZdouVmTGuWB6Aj6G7lm7t25-2Biv1B-2B9082pHzCCex2kqMs-3DDVrT_EEm8SbLgSDsaDZif-2Bv7ch8WqhKpLoKErHi4nXpwDNTtc7gEAOgWMAeiVB7LaCwib75SfFPYaKzdACS1Z9ToCtOsih-2BMTLyAxlDzAd-2FLeYHYEN1IK1-2Fbn-2FLcv9ogc83QsLVvCuIi9jVi1nxPXJ7JAS96hMH2EUN-2FLKJO15sWXsEMyXEZiSQMhnxAEbzlEnt5Ya7usI0bf1TIUf2uxUNF2bQ-3D-3D
----- End forwarded message -----
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20220305/8ffd3cac/attachment.sig>
More information about the U-Boot
mailing list