Hey all, Here's the latest report, now that next has been merged to master. A few of these are oddly showing up now, despite being in older code that hasn't been touched and was being built before.
---------- Forwarded message --------- From: <[email protected]> Date: Mon, Jan 5, 2026 at 3:24 PM Subject: New Defects reported by Coverity Scan for Das U-Boot To: <[email protected]> Hi, Please find the latest report on new defect(s) introduced to *Das U-Boot* found with Coverity Scan. - *New Defects Found:* 15 - 23 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan. - *Defects Shown:* Showing 15 of 15 defect(s) Defect Details ** CID 640423: Control flow issues (DEADCODE) /drivers/fastboot/fb_common.c: 112 in fastboot_set_reboot_flag() _____________________________________________________________________________________________ *** CID 640423: Control flow issues (DEADCODE) /drivers/fastboot/fb_common.c: 112 in fastboot_set_reboot_flag() 106 } 107 const char *bcb_iface = config_opt_enabled(CONFIG_FASTBOOT_FLASH_BLOCK, 108 CONFIG_FASTBOOT_FLASH_BLOCK_INTERFACE_NAME, 109 "mmc"); 110 111 if (device == -1) >>> CID 640423: Control flow issues (DEADCODE) >>> Execution cannot reach this statement: "return -22;". 112 return -EINVAL; 113 114 if (reason >= FASTBOOT_REBOOT_REASONS_COUNT) 115 return -EINVAL; 116 117 ret = bcb_find_partition_and_load(bcb_iface, device, "misc"); ** CID 640422: Error handling issues (CHECKED_RETURN) /boot/fdt_region.c: 330 in fdt_include_supernodes() _____________________________________________________________________________________________ *** CID 640422: Error handling issues (CHECKED_RETURN) /boot/fdt_region.c: 330 in fdt_include_supernodes() 324 */ 325 for (i = 0; i <= depth; i++) { 326 if (!info->stack[i].included) { 327 start = info->stack[i].offset; 328 329 /* Add the FDT_BEGIN_NODE tag of this supernode */ >>> CID 640422: Error handling issues (CHECKED_RETURN) >>> Calling "fdt_next_tag" without checking return value (as is done >>> elsewhere 12 out of 15 times). 330 fdt_next_tag(info->fdt, start, &stop_at); 331 if (fdt_add_region(info, base + start, stop_at - start)) 332 return -1; 333 334 /* Remember that this supernode is now included */ 335 info->stack[i].included = 1; ** CID 640421: Possible Control flow issues (DEADCODE) /drivers/fastboot/fb_block.c: 138 in fastboot_block_get_part_info() _____________________________________________________________________________________________ *** CID 640421: Possible Control flow issues (DEADCODE) /drivers/fastboot/fb_block.c: 138 in fastboot_block_get_part_info() 132 CONFIG_FASTBOOT_FLASH_BLOCK_DEVICE_ID, -1); 133 134 if (!part_name || !strcmp(part_name, "")) { 135 fastboot_fail("partition not given", response); 136 return -ENOENT; 137 } >>> CID 640421: Possible Control flow issues (DEADCODE) >>> Execution cannot reach the expression "strcmp(interface, "")" inside >>> this statement: "if (!interface || !strcmp(i...". 138 if (!interface || !strcmp(interface, "")) { 139 fastboot_fail("block interface isn't provided", response); 140 return -EINVAL; 141 } 142 143 *dev_desc = blk_get_dev(interface, device); ** CID 640420: Incorrect expression (CONSTANT_EXPRESSION_RESULT) /env/fat.c: 49 in env_fat_get_dev_part() _____________________________________________________________________________________________ *** CID 640420: Incorrect expression (CONSTANT_EXPRESSION_RESULT) /env/fat.c: 49 in env_fat_get_dev_part() 43 __weak char *env_fat_get_dev_part(void) 44 { 45 #ifdef CONFIG_MMC 46 /* reserve one more char for the manipulation below */ 47 static char part_str[] = CONFIG_ENV_FAT_DEVICE_AND_PART "\0"; 48 >>> CID 640420: Incorrect expression (CONSTANT_EXPRESSION_RESULT) >>> "strcmp("mmc", "mmc")" is always 0 because ""mmc"" is compared against >>> itself. 49 if (!strcmp(CONFIG_ENV_FAT_INTERFACE, "mmc") && part_str[0] == ':') { 50 part_str[0] = '0' + mmc_get_env_dev(); 51 strcpy(&part_str[1], CONFIG_ENV_FAT_DEVICE_AND_PART); 52 } 53 54 return part_str; ** CID 640419: Null pointer dereferences (REVERSE_INULL) /drivers/fastboot/fb_block.c: 144 in fastboot_block_get_part_info() _____________________________________________________________________________________________ *** CID 640419: Null pointer dereferences (REVERSE_INULL) /drivers/fastboot/fb_block.c: 144 in fastboot_block_get_part_info() 138 if (!interface || !strcmp(interface, "")) { 139 fastboot_fail("block interface isn't provided", response); 140 return -EINVAL; 141 } 142 143 *dev_desc = blk_get_dev(interface, device); >>> CID 640419: Null pointer dereferences (REVERSE_INULL) >>> Null-checking "dev_desc" suggests that it may be null, but it has >>> already been dereferenced on all paths leading to the check. 144 if (!dev_desc) { 145 fastboot_fail("no such device", response); 146 return -ENODEV; 147 } 148 149 ret = part_get_info_by_name(*dev_desc, part_name, part_info); ** CID 640418: Insecure data handling (TAINTED_SCALAR) _____________________________________________________________________________________________ *** CID 640418: Insecure data handling (TAINTED_SCALAR) /drivers/core/ofnode.c: 2098 in ofnode_copy_props() 2092 2093 val = ofprop_get_property(&prop, &name, &len); 2094 if (!val) { 2095 log_debug("Cannot read prop (err=%d)\n", len); 2096 return log_msg_ret("get", -EINVAL); 2097 } >>> CID 640418: Insecure data handling (TAINTED_SCALAR) >>> Passing tainted expression "len" to "ofnode_write_prop", which uses it >>> as an offset. 2098 ret = ofnode_write_prop(dst, name, val, len, true); 2099 if (ret) { 2100 log_debug("Cannot write prop (err=%d)\n", ret); 2101 return log_msg_ret("wr", -EINVAL); 2102 } 2103 } ** CID 640417: Insecure data handling (TAINTED_SCALAR) /scripts/dtc/libfdt/fdt_ro.c: 546 in fdt_get_alias_namelen() _____________________________________________________________________________________________ *** CID 640417: Insecure data handling (TAINTED_SCALAR) /scripts/dtc/libfdt/fdt_ro.c: 546 in fdt_get_alias_namelen() 540 { 541 int len; 542 const char *alias; 543 544 alias = fdt_path_getprop_namelen(fdt, "/aliases", name, namelen, &len); 545 >>> CID 640417: Insecure data handling (TAINTED_SCALAR) >>> Using tainted variable "len - 1" as an index to pointer "alias". 546 if (!can_assume(VALID_DTB) && 547 !(alias && len > 0 && alias[len - 1] == '\0' && *alias == '/')) 548 return NULL; 549 550 return alias; 551 } ** CID 640416: Insecure data handling (TAINTED_SCALAR) _____________________________________________________________________________________________ *** CID 640416: Insecure data handling (TAINTED_SCALAR) /scripts/dtc/libfdt/fdt_overlay.c: 739 in overlay_prevent_phandle_overwrite() 733 * will be overwritten. 734 */ 735 continue; 736 else if (target < 0) 737 return target; 738 >>> CID 640416: Insecure data handling (TAINTED_SCALAR) >>> Passing tainted expression "target" to >>> "overlay_prevent_phandle_overwrite_node", which uses it as a loop boundary. 739 ret = overlay_prevent_phandle_overwrite_node(fdt, target, 740 fdto, overlay); 741 if (ret) 742 return ret; 743 } 744 ** CID 640415: Control flow issues (DEADCODE) /scripts/dtc/pylibfdt/libfdt_wrap.c: 6728 in _wrap_fdt_get_property_by_offset_w() _____________________________________________________________________________________________ *** CID 640415: Control flow issues (DEADCODE) /scripts/dtc/pylibfdt/libfdt_wrap.c: 6728 in _wrap_fdt_get_property_by_offset_w() 6722 resultobj = SWIG_Python_AppendOutput(resultobj, buff); 6723 } 6724 } 6725 if (SWIG_IsTmpObj(res3)) { 6726 resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg3))); 6727 } else { >>> CID 640415: Control flow issues (DEADCODE) >>> Execution cannot reach the expression "new_flags" inside this >>> statement: "new_flags = ((res3 >= 0 && ...". 6728 int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN | 0 ) : 0 ; 6729 resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_int, new_flags)); 6730 } 6731 return resultobj; 6732 fail: 6733 return NULL; ** CID 640414: Resource leaks (RESOURCE_LEAK) /drivers/interconnect/interconnect-uclass.c: 320 in icc_path_init() _____________________________________________________________________________________________ *** CID 640414: Resource leaks (RESOURCE_LEAK) /drivers/interconnect/interconnect-uclass.c: 320 in icc_path_init() 314 path->reqs[i].node = node; 315 path->reqs[i].enabled = true; 316 317 /* Probe this node since used in an active path */ 318 ret = uclass_get_device_tail(node->dev, 0, &node_dev); 319 if (ret) >>> CID 640414: Resource leaks (RESOURCE_LEAK) >>> Variable "path" going out of scope leaks the storage it points to. 320 return ERR_PTR(ret); 321 322 node->users++; 323 324 /* reference to previous node was saved during path traversal */ 325 node = node->reverse; ** CID 536550: Resource leaks (RESOURCE_LEAK) /scripts/dtc/fstree.c: 57 in read_fstree() _____________________________________________________________________________________________ *** CID 536550: Resource leaks (RESOURCE_LEAK) /scripts/dtc/fstree.c: 57 in read_fstree() 51 fclose(pfile); 52 } 53 } else if (S_ISDIR(st.st_mode)) { 54 struct node *newchild; 55 56 newchild = read_fstree(tmpname); >>> CID 536550: Resource leaks (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "xstrdup(de->d_name)" >>> leaks it. 57 newchild = name_node(newchild, xstrdup(de->d_name)); 58 add_child(tree, newchild); 59 } 60 61 free(tmpname); 62 } ** CID 536369: Resource leaks (RESOURCE_LEAK) /scripts/dtc/flattree.c: 681 in flat_read_property() _____________________________________________________________________________________________ *** CID 536369: Resource leaks (RESOURCE_LEAK) /scripts/dtc/flattree.c: 681 in flat_read_property() 675 676 if ((flags & FTF_VARALIGN) && (proplen >= 8)) 677 flat_realign(dtbuf, 8); 678 679 val = flat_read_data(dtbuf, proplen); 680 >>> CID 536369: Resource leaks (RESOURCE_LEAK) >>> Variable "name" going out of scope leaks the storage it points to. 681 return build_property(name, val, NULL); 682 } 683 684 static struct reserve_info *flat_read_mem_reserve(struct inbuf *inb) 685 { 686 struct reserve_info *reservelist = NULL; ** CID 449815: Memory - illegal accesses (OVERRUN) /lib/sm3.c: 252 in sm3_final() _____________________________________________________________________________________________ *** CID 449815: Memory - illegal accesses (OVERRUN) /lib/sm3.c: 252 in sm3_final() 246 unsigned int partial = sctx->count % SM3_BLOCK_SIZE; 247 u32 W[16]; 248 int i; 249 250 sctx->buffer[partial++] = 0x80; 251 if (partial > bit_offset) { >>> CID 449815: Memory - illegal accesses (OVERRUN) >>> Overrunning array of 64 bytes at byte offset 64 by dereferencing >>> pointer "sctx->buffer + partial". [Note: The source code implementation of >>> the function has been overridden by a builtin model.] 252 memset(sctx->buffer + partial, 0, SM3_BLOCK_SIZE - partial); 253 partial = 0; 254 255 sm3_block(sctx, sctx->buffer, 1, W); 256 } 257 ** CID 432237: Null pointer dereferences (NULL_RETURNS) _____________________________________________________________________________________________ *** CID 432237: Null pointer dereferences (NULL_RETURNS) /scripts/dtc/checks.c: 1618 in check_interrupt_map() 1612 if (node->addr_cells < 0) { 1613 FAIL(c, dti, node, 1614 "Missing '#address-cells' in interrupt-map provider"); 1615 return; 1616 } 1617 cellsize = node_addr_cells(node); >>> CID 432237: Null pointer dereferences (NULL_RETURNS) >>> Dereferencing a pointer that might be "NULL" "get_property(node, >>> "#interrupt-cells")" when calling "propval_cell". 1618 cellsize += propval_cell(get_property(node, "#interrupt-cells")); 1619 1620 prop = get_property(node, "interrupt-map-mask"); 1621 if (prop && (prop->val.len != (cellsize * sizeof(cell_t)))) 1622 FAIL_PROP(c, dti, node, prop, 1623 "property size (%d) is invalid, expected %zu", ** CID 328724: (TAINTED_SCALAR) /scripts/dtc/fdtoverlay.c: 55 in apply_one() /scripts/dtc/fdtoverlay.c: 69 in apply_one() _____________________________________________________________________________________________ *** CID 328724: (TAINTED_SCALAR) /scripts/dtc/fdtoverlay.c: 55 in apply_one() 49 bool has_symbols; 50 51 /* 52 * We take copies first, because a failed apply can trash 53 * both the base blob and the overlay 54 */ >>> CID 328724: (TAINTED_SCALAR) >>> Passing tainted expression "fdt32_ld(&((struct fdt_header const >>> *)overlay)->totalsize)" to "xmalloc", which uses it as an allocation size. >>> [Note: The source code implementation of the function has been overridden >>> by a builtin model.] 55 tmpo = xmalloc(fdt_totalsize(overlay)); 56 57 do { 58 tmp = xrealloc(tmp, *buf_len); 59 ret = fdt_open_into(base, tmp, *buf_len); 60 if (ret) { /scripts/dtc/fdtoverlay.c: 69 in apply_one() 63 fdt_strerror(ret)); 64 goto fail; 65 } 66 ret = fdt_path_offset(tmp, "/__symbols__"); 67 has_symbols = ret >= 0; 68 >>> CID 328724: (TAINTED_SCALAR) >>> Passing tainted expression "fdt32_ld(&((struct fdt_header const >>> *)overlay)->totalsize)" to "memcpy", which uses it as an offset. [Note: The >>> source code implementation of the function has been overridden by a builtin >>> model.] 69 memcpy(tmpo, overlay, fdt_totalsize(overlay)); 70 71 ret = fdt_overlay_apply(tmp, tmpo); 72 if (ret == -FDT_ERR_NOSPACE) { 73 *buf_len += BUF_INCREMENT; 74 } View Defects in Coverity Scan <https://scan.coverity.com/projects/das-u-boot?tab=overview> Best regards, The Coverity Scan Admin Team ----- End forwarded message ----- -- Tom
signature.asc
Description: PGP signature

