Hi Tom,

> Il 19/04/2021 14:20 Tom Rini <tr...@konsulko.com> ha scritto:
> 
>  
> Hey all,
> 
> Here's the latest report.
> 
> ----- Forwarded message from scan-ad...@coverity.com -----
> 
> Date: Mon, 19 Apr 2021 01:18:55 +0000 (UTC)
> From: scan-ad...@coverity.com
> To: tom.r...@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.
> 
> 13 new defect(s) introduced to Das U-Boot found with Coverity Scan.
> 5 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 13 of 13 defect(s)
> 
> 
> ** CID 331158:  Control flow issues  (NO_EFFECT)
> /drivers/pinctrl/pinctrl-single.c: 347 in single_configure_bits()
> 
> 
> ________________________________________________________________________________________________________
> *** CID 331158:  Control flow issues  (NO_EFFECT)
> /drivers/pinctrl/pinctrl-single.c: 347 in single_configure_bits()
> 341                   return PTR_ERR(func);
> 342     
> 343           func->name = fname;
> 344           func->npins = 0;
> 345           for (n = 0; n < count; n++, pins++) {
> 346                   offset = fdt32_to_cpu(pins->reg);
> >>>     CID 331158:  Control flow issues  (NO_EFFECT)
> >>>     This less-than-zero comparison of an unsigned value is never true. 
> >>> "offset < 0U".
> 347                   if (offset < 0 || offset > pdata->offset) {
> 348                           dev_dbg(dev, "  invalid register offset 0x%x\n",
> 349                                   offset);
> 350                           continue;
> 351                   }
> 352     
> 
> ** CID 331157:  Null pointer dereferences  (NULL_RETURNS)
> /drivers/misc/cros_ec_sandbox.c: 229 in keyscan_read_fdt_matrix()
> 
> 
> ________________________________________________________________________________________________________
> *** CID 331157:  Null pointer dereferences  (NULL_RETURNS)
> /drivers/misc/cros_ec_sandbox.c: 229 in keyscan_read_fdt_matrix()
> 223     
> 224           /* Now read the data */
> 225           for (upto = 0; upto < ec->matrix_count; upto++) {
> 226                   struct ec_keymatrix_entry *matrix = &ec->matrix[upto];
> 227                   u32 word;
> 228     
> >>>     CID 331157:  Null pointer dereferences  (NULL_RETURNS)
> >>>     Incrementing a pointer which might be null: "cell".
> 229                   word = fdt32_to_cpu(*cell++);
> 230                   matrix->row = word >> 24;
> 231                   matrix->col = (word >> 16) & 0xff;
> 232                   matrix->keycode = word & 0xffff;
> 233     
> 234                   /* Hard-code some sanity limits for now */
> 
> ** CID 331156:  Incorrect expression  (UNUSED_VALUE)
> /cmd/qfw.c: 40 in qemu_fwcfg_cmd_setup_kernel()
> 
> 
> ________________________________________________________________________________________________________
> *** CID 331156:  Incorrect expression  (UNUSED_VALUE)
> /cmd/qfw.c: 40 in qemu_fwcfg_cmd_setup_kernel()
> 34            qfw_read_entry(qfw_dev, FW_CFG_SETUP_DATA,
> 35                           le32_to_cpu(setup_size), data_addr);
> 36            data_addr += le32_to_cpu(setup_size);
> 37     
> 38            qfw_read_entry(qfw_dev, FW_CFG_KERNEL_DATA,
> 39                           le32_to_cpu(kernel_size), data_addr);
> >>>     CID 331156:  Incorrect expression  (UNUSED_VALUE)
> >>>     Assigning value from "(__u32)(__le32)kernel_size" to "data_addr" 
> >>> here, but that stored value is overwritten before it can be used.
> 40            data_addr += le32_to_cpu(kernel_size);
> 41     
> 42            data_addr = initrd_addr;
> 43            qfw_read_entry(qfw_dev, FW_CFG_INITRD_SIZE, 4, &initrd_size);
> 44            if (initrd_size == 0) {
> 45                    printf("warning: no initrd available\n");
> 
> ** CID 331155:  Insecure data handling  (TAINTED_SCALAR)
> 
> 
> ________________________________________________________________________________________________________
> *** CID 331155:  Insecure data handling  (TAINTED_SCALAR)
> /fs/cbfs/cbfs.c: 170 in file_cbfs_next_file()
> 164                           size -= align;
> 165                           start += align;
> 166                           continue;
> 167                   }
> 168     
> 169                   swap_file_header(&header, file_header);
> >>>     CID 331155:  Insecure data handling  (TAINTED_SCALAR)
> >>>     Passing tainted variable "header.offset" to a tainted sink.
> 170                   ret = fill_node(node, start, &header);
> 171                   if (ret) {
> 172                           priv->result = CBFS_BAD_FILE;
> 173                           return log_msg_ret("fill", ret);
> 174                   }
> 175     
> 
> ** CID 331154:  Integer handling issues  (DIVIDE_BY_ZERO)
> /drivers/pinctrl/pinctrl-single.c: 473 in single_probe()
> 
> 
> ________________________________________________________________________________________________________
> *** CID 331154:  Integer handling issues  (DIVIDE_BY_ZERO)
> /drivers/pinctrl/pinctrl-single.c: 473 in single_probe()
> 467                   return -ENOMEM;
> 468           #endif
> 469     
> 470           priv->npins = size / (pdata->width / BITS_PER_BYTE);
> 471           if (pdata->bits_per_mux) {
> 472                   priv->bits_per_pin = fls(pdata->mask);
> >>>     CID 331154:  Integer handling issues  (DIVIDE_BY_ZERO)
> >>>     In expression "pdata->width / priv->bits_per_pin", division by 
> >>> expression "priv->bits_per_pin" which may be zero has undefined behavior.
> 473                   priv->npins *= (pdata->width / priv->bits_per_pin);
> 474           }
> 475     
> 476           dev_dbg(dev, "%d pins\n", priv->npins);
> 477           return 0;
> 478     }
> 
> ** CID 331153:  Code maintainability issues  (UNUSED_VALUE)
> /lib/efi_loader/efi_capsule.c: 661 in find_boot_device()
> 
> 
> ________________________________________________________________________________________________________
> *** CID 331153:  Code maintainability issues  (UNUSED_VALUE)
> /lib/efi_loader/efi_capsule.c: 661 in find_boot_device()
> 655           size = 0;
> 656           ret = efi_get_variable_int(L"BootOrder", 
> &efi_global_variable_guid,
> 657                                      NULL, &size, NULL, NULL);
> 658           if (ret == EFI_BUFFER_TOO_SMALL) {
> 659                   boot_order = malloc(size);
> 660                   if (!boot_order) {
> >>>     CID 331153:  Code maintainability issues  (UNUSED_VALUE)
> >>>     Assigning value "9223372036854775817UL" to "ret" here, but that 
> >>> stored value is overwritten before it can be used.
> 661                           ret = EFI_OUT_OF_RESOURCES;
> 662                           goto out;
> 663                   }
> 664     
> 665                   ret = efi_get_variable_int(L"BootOrder",
> 666                                              &efi_global_variable_guid,
> 
> ** CID 331152:  Insecure data handling  (TAINTED_SCALAR)
> /lib/tpm-common.c: 180 in tpm_sendrecv_command()
> 
> 
> ________________________________________________________________________________________________________
> *** CID 331152:  Insecure data handling  (TAINTED_SCALAR)
> /lib/tpm-common.c: 180 in tpm_sendrecv_command()
> 174                   response = response_buffer;
> 175                   response_length = sizeof(response_buffer);
> 176           }
> 177     
> 178           size = tpm_command_size(command);
> 179           log_debug("TPM request [size:%d]: ", size);
> >>>     CID 331152:  Insecure data handling  (TAINTED_SCALAR)
> >>>     Using tainted variable "size" as a loop boundary.
> 180           for (i = 0; i < size; i++)
> 181                   log_debug("%02x ", ((u8 *)command)[i]);
> 182           log_debug("\n");
> 183     
> 184           err = tpm_xfer(dev, command, size, response, &response_length);
> 185     
> 
> ** CID 331151:  Resource leaks  (RESOURCE_LEAK)
> /drivers/pinctrl/pinctrl-single.c: 247 in single_allocate_function()
> 
> 
> ________________________________________________________________________________________________________
> *** CID 331151:  Resource leaks  (RESOURCE_LEAK)
> /drivers/pinctrl/pinctrl-single.c: 247 in single_allocate_function()
> 241           if (!func)
> 242                   return ERR_PTR(-ENOMEM);
> 243     
> 244           func->pins = devm_kmalloc(dev, sizeof(unsigned int) * 
> group_pins,
> 245                                     GFP_KERNEL);
> 246           if (!func->pins)
> >>>     CID 331151:  Resource leaks  (RESOURCE_LEAK)
> >>>     Variable "func" going out of scope leaks the storage it points to.
> 247                   return ERR_PTR(-ENOMEM);

Is this really a memory leak? I used devm_kmalloc() to not have to  manually 
free 
the allocated memory but delegating it to the device.

Thanks and regards,
Dario

> 248     
> 249           return func;
> 250     }
> 251     
> 252     static int single_pin_compare(const void *s1, const void *s2)
> 
> ** CID 331150:  Memory - illegal accesses  (BUFFER_SIZE_WARNING)
> /net/dsa-uclass.c: 415 in dsa_post_bind()
> 
> 
> ________________________________________________________________________________________________________
> *** CID 331150:  Memory - illegal accesses  (BUFFER_SIZE_WARNING)
> /net/dsa-uclass.c: 415 in dsa_post_bind()
> 409                   err = device_bind_driver_to_node(dev, 
> DSA_PORT_CHILD_DRV_NAME,
> 410                                                    name, pnode, &pdev);
> 411                   if (pdev) {
> 412                           struct dsa_port_pdata *port_pdata;
> 413     
> 414                           port_pdata = dev_get_parent_plat(pdev);
> >>>     CID 331150:  Memory - illegal accesses  (BUFFER_SIZE_WARNING)
> >>>     Calling "strncpy" with a maximum size argument of 16 bytes on 
> >>> destination array "port_pdata->name" of size 16 bytes might leave the 
> >>> destination string unterminated.
> 415                           strncpy(port_pdata->name, name, 
> DSA_PORT_NAME_LENGTH);
> 416                           pdev->name = port_pdata->name;
> 417                   }
> 418     
> 419                   /* try to bind all ports but keep 1st error */
> 420                   if (err && !first_err)
> 
> ** CID 331149:  Memory - illegal accesses  (BUFFER_SIZE_WARNING)
> /net/dsa-uclass.c: 224 in dsa_port_of_to_pdata()
> 
> 
> ________________________________________________________________________________________________________
> *** CID 331149:  Memory - illegal accesses  (BUFFER_SIZE_WARNING)
> /net/dsa-uclass.c: 224 in dsa_port_of_to_pdata()
> 218     
> 219           port_pdata = dev_get_parent_plat(pdev);
> 220           port_pdata->index = index;
> 221     
> 222           label = ofnode_read_string(dev_ofnode(pdev), "label");
> 223           if (label)
> >>>     CID 331149:  Memory - illegal accesses  (BUFFER_SIZE_WARNING)
> >>>     Calling "strncpy" with a maximum size argument of 16 bytes on 
> >>> destination array "port_pdata->name" of size 16 bytes might leave the 
> >>> destination string unterminated.
> 224                   strncpy(port_pdata->name, label, DSA_PORT_NAME_LENGTH);
> 225     
> 226           eth_pdata = dev_get_plat(pdev);
> 227           eth_pdata->priv_pdata = port_pdata;
> 228     
> 229           dev_dbg(pdev, "port %d node %s\n", port_pdata->index,
> 
> ** CID 331148:  Control flow issues  (NO_EFFECT)
> /drivers/pinctrl/pinctrl-single.c: 298 in single_configure_pins()
> 
> 
> ________________________________________________________________________________________________________
> *** CID 331148:  Control flow issues  (NO_EFFECT)
> /drivers/pinctrl/pinctrl-single.c: 298 in single_configure_pins()
> 292                   return PTR_ERR(func);
> 293     
> 294           func->name = fname;
> 295           func->npins = 0;
> 296           for (n = 0; n < count; n++, pins++) {
> 297                   offset = fdt32_to_cpu(pins->reg);
> >>>     CID 331148:  Control flow issues  (NO_EFFECT)
> >>>     This less-than-zero comparison of an unsigned value is never true. 
> >>> "offset < 0U".
> 298                   if (offset < 0 || offset > pdata->offset) {
> 299                           dev_err(dev, "  invalid register offset 0x%x\n",
> 300                                   offset);
> 301                           continue;
> 302                   }
> 303     
> 
> ** CID 331147:  Code maintainability issues  (UNUSED_VALUE)
> /lib/efi_loader/efi_capsule.c: 456 in efi_update_capsule()
> 
> 
> ________________________________________________________________________________________________________
> *** CID 331147:  Code maintainability issues  (UNUSED_VALUE)
> /lib/efi_loader/efi_capsule.c: 456 in efi_update_capsule()
> 450           efi_status_t ret;
> 451     
> 452           EFI_ENTRY("%p, %zu, %llu\n", capsule_header_array, 
> capsule_count,
> 453                     scatter_gather_list);
> 454     
> 455           if (!capsule_count) {
> >>>     CID 331147:  Code maintainability issues  (UNUSED_VALUE)
> >>>     Assigning value "9223372036854775810UL" to "ret" here, but that 
> >>> stored value is overwritten before it can be used.
> 456                   ret = EFI_INVALID_PARAMETER;
> 457                   goto out;
> 458           }
> 459     
> 460           ret = EFI_SUCCESS;
> 461           for (i = 0, capsule = *capsule_header_array; i < capsule_count;
> 
> ** CID 165109:  Insecure data handling  (TAINTED_SCALAR)
> 
> 
> ________________________________________________________________________________________________________
> *** CID 165109:  Insecure data handling  (TAINTED_SCALAR)
> /arch/sandbox/cpu/state.c: 81 in state_read_file()
> 75            os_close(fd);
> 76     
> 77            return 0;
> 78     err_read:
> 79            os_close(fd);
> 80     err_open:
> >>>     CID 165109:  Insecure data handling  (TAINTED_SCALAR)
> >>>     Passing tainted variable "state->state_fdt" to a tainted sink.
> 81            os_free(state->state_fdt);
> 82            state->state_fdt = NULL;
> 83     
> 84            return ret;
> 85     }
> 86     
> 
> 
> ________________________________________________________________________________________________________
> To view the defects in Coverity Scan visit, 
> https://u15810271.ct.sendgrid.net/ls/click?upn=HRESupC-2F2Czv4BOaCWWCy7my0P0qcxCbhZ31OYv50yoA22WlOQ-2By3ieUvdbKmOyw68TMVT4Kip-2BBzfOGWXJ5yIiYplmPF9KAnKIja4Zd7tU-3DZZ5O_EEm8SbLgSDsaDZif-2Bv7ch8WqhKpLoKErHi4nXpwDNTtGHJmPef5TSDjCzuFmDLHCcVLNpHIs0AqBsXJPs2SOVhTXup007yHbqhSGIK1hyqPpz1vYe-2BN9550EDGrhLxMxHlBpTdungq17k4ECpA3No35lrqehPZZCZ5BAHvEzJczmieHTM7FI63-2BfXLhs4wtMUoPRU5sgDVix9YwcWKeyJg-3D-3D
> 
>   To manage Coverity Scan email notifications for "tom.r...@gmail.com", click 
> https://u15810271.ct.sendgrid.net/ls/click?upn=HRESupC-2F2Czv4BOaCWWCy7my0P0qcxCbhZ31OYv50yped04pjJnmXOsUBtKYNIXxWeIHzDeopm-2BEWQ6S6K-2FtUHv9ZTk8qZbuzkkz9sa-2BJFw4elYDyedRVZOC-2ButxjBZdouVmTGuWB6Aj6G7lm7t25-2Biv1B-2B9082pHzCCex2kqMs-3D7Yww_EEm8SbLgSDsaDZif-2Bv7ch8WqhKpLoKErHi4nXpwDNTtGHJmPef5TSDjCzuFmDLHCW8SwWH4xnbrtsvKIl7wSRW1TJ0hCM5LxXTBnJTFVzTPqGPjtEf73gX6pVG3GrWXNEgT0Oc3HyLVVXgFxESdYpPKxcdJpqRbkjikARwdrSNj3JcSFiRd69dOJds-2BH2aqoLVHmnb03BoAwP5b1o0enAw-3D-3D
> 
> 
> ----- End forwarded message -----
> 
> -- 
> Tom

Reply via email to