[scan-admin at coverity.com: New Defects reported by Coverity Scan for Das U-Boot]

Tom Rini trini at konsulko.com
Tue Nov 2 17:22:07 CET 2021


There's a whole lot of new defects here because I noticed yesterday that
there was a new stable version of the scanner, after running yesterdays
normal post-RC scan.  So here's a new scan done on current master.

----- Forwarded message from scan-admin at coverity.com -----

Date: Tue, 02 Nov 2021 15:55:16 +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.

80 new defect(s) introduced to Das U-Boot found with Coverity Scan.
25 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 80 defect(s)


** CID 340915:    (TAINTED_SCALAR)


________________________________________________________________________________________________________
*** CID 340915:    (TAINTED_SCALAR)
/drivers/input/key_matrix.c: 166 in key_matrix_decode_fdt()
160     
161     	prop = dev_read_prop(dev, "linux,fn-keymap", &proplen);
162     	/* fn keymap is optional */
163     	if (!prop)
164     		goto done;
165     
>>>     CID 340915:    (TAINTED_SCALAR)
>>>     Passing tainted expression "proplen" to "create_keymap", which uses it as a loop boundary.
166     	config->fn_keycode = create_keymap(config, prop, proplen, -1, NULL);
167     	/* Conversion error -> fail */
168     	if (!config->fn_keycode) {
169     		free(plain_keycode);
170     		return -1;
171     	}
/drivers/input/key_matrix.c: 154 in key_matrix_decode_fdt()
148     	/* Basic keymap is required */
149     	if (!prop) {
150     		debug("%s: cannot find keycode-plain map\n", __func__);
151     		return -1;
152     	}
153     
>>>     CID 340915:    (TAINTED_SCALAR)
>>>     Passing tainted expression "proplen" to "create_keymap", which uses it as a loop boundary.
154     	plain_keycode = create_keymap(config, prop, proplen, KEY_FN,
155     				      &config->fn_pos);
156     	config->plain_keycode = plain_keycode;
157     	/* Conversion error -> fail */
158     	if (!config->plain_keycode)
159     		return -1;

** CID 340914:    (TAINTED_SCALAR)


________________________________________________________________________________________________________
*** CID 340914:    (TAINTED_SCALAR)
/arch/sandbox/cpu/state.c: 38 in state_ensure_space()
32     
33     	size = used + extra_size;
34     	buf = os_malloc(size);
35     	if (!buf)
36     		return -ENOMEM;
37     
>>>     CID 340914:    (TAINTED_SCALAR)
>>>     Passing tainted expression "blob->size_dt_strings" to "fdt_open_into", which uses it as an offset.
38     	ret = fdt_open_into(blob, buf, size);
39     	if (ret) {
40     		os_free(buf);
41     		return -EIO;
42     	}
43     
/arch/sandbox/cpu/state.c: 38 in state_ensure_space()
32     
33     	size = used + extra_size;
34     	buf = os_malloc(size);
35     	if (!buf)
36     		return -ENOMEM;
37     
>>>     CID 340914:    (TAINTED_SCALAR)
>>>     Passing tainted expression "blob->totalsize" to "fdt_open_into", which uses it as an offset.
38     	ret = fdt_open_into(blob, buf, size);
39     	if (ret) {
40     		os_free(buf);
41     		return -EIO;
42     	}
43     
/arch/sandbox/cpu/state.c: 34 in state_ensure_space()
28     	size = fdt_totalsize(blob);
29     	free_bytes = size - used;
30     	if (free_bytes > extra_size)
31     		return 0;
32     
33     	size = used + extra_size;
>>>     CID 340914:    (TAINTED_SCALAR)
>>>     Passing tainted expression "size" to "os_malloc", which uses it as an offset.
34     	buf = os_malloc(size);
35     	if (!buf)
36     		return -ENOMEM;
37     
38     	ret = fdt_open_into(blob, buf, size);
39     	if (ret) {
/arch/sandbox/cpu/state.c: 38 in state_ensure_space()
32     
33     	size = used + extra_size;
34     	buf = os_malloc(size);
35     	if (!buf)
36     		return -ENOMEM;
37     
>>>     CID 340914:    (TAINTED_SCALAR)
>>>     Passing tainted expression "blob->size_dt_struct" to "fdt_open_into", which uses it as an offset.
38     	ret = fdt_open_into(blob, buf, size);
39     	if (ret) {
40     		os_free(buf);
41     		return -EIO;
42     	}
43     
/arch/sandbox/cpu/state.c: 44 in state_ensure_space()
38     	ret = fdt_open_into(blob, buf, size);
39     	if (ret) {
40     		os_free(buf);
41     		return -EIO;
42     	}
43     
>>>     CID 340914:    (TAINTED_SCALAR)
>>>     Passing tainted expression "*blob" to "os_free", which uses it as an offset.
44     	os_free(blob);
45     	state->state_fdt = buf;
46     	return 0;
47     }
48     
49     static int state_read_file(struct sandbox_state *state, const char *fname)

** CID 340913:  Uninitialized variables  (UNINIT)
/lib/gunzip.c: 298 in zunzip()


________________________________________________________________________________________________________
*** CID 340913:  Uninitialized variables  (UNINIT)
/lib/gunzip.c: 298 in zunzip()
292     	}
293     	s.next_in = src + offset;
294     	s.avail_in = *lenp - offset;
295     	s.next_out = dst;
296     	s.avail_out = dstlen;
297     	do {
>>>     CID 340913:  Uninitialized variables  (UNINIT)
>>>     Using uninitialized value "s.total_out" when calling "inflate". [Note: The source code implementation of the function has been overridden by a builtin model.]
298     		r = inflate(&s, Z_FINISH);
299     		if (stoponerr == 1 && r != Z_STREAM_END &&
300     		    (s.avail_in == 0 || s.avail_out == 0 || r != Z_BUF_ERROR)) {
301     			printf("Error: inflate() returned %d\n", r);
302     			err = -1;
303     			break;

** CID 340912:    (TAINTED_SCALAR)


________________________________________________________________________________________________________
*** CID 340912:    (TAINTED_SCALAR)
/lib/efi_loader/efi_variable.c: 191 in efi_variable_authenticate()
185     	ret = EFI_SUCCESS;
186     
187     err:
188     	efi_sigstore_free(truststore);
189     	efi_sigstore_free(truststore2);
190     	pkcs7_free_message(var_sig);
>>>     CID 340912:    (TAINTED_SCALAR)
>>>     Passing tainted expression "*ebuf" to "dlfree", which uses it as an offset.
191     	free(ebuf);
192     	free(regs);
193     
194     	return ret;
195     }
196     #else
/lib/efi_loader/efi_variable.c: 133 in efi_variable_authenticate()
127     
128     	/* variable's signature list */
129     	if (auth->auth_info.hdr.dwLength < sizeof(auth->auth_info))
130     		goto err;
131     
132     	/* ebuf should be kept valid during the authentication */
>>>     CID 340912:    (TAINTED_SCALAR)
>>>     Passing tainted expression "auth->auth_info.cert_data" to "efi_parse_pkcs7_header", which uses it as an offset.
133     	var_sig = efi_parse_pkcs7_header(auth->auth_info.cert_data,
134     					 auth->auth_info.hdr.dwLength
135     					 - sizeof(auth->auth_info),
136     					 &ebuf);
137     	if (!var_sig) {
138     		EFI_PRINT("Parsing variable's signature failed\n");

** CID 340910:    (TAINTED_SCALAR)


________________________________________________________________________________________________________
*** CID 340910:    (TAINTED_SCALAR)
/arch/sandbox/cpu/state.c: 284 in sandbox_write_state()
278     
279     	if (ret == -EIO) {
280     		printf("Could not write sandbox state\n");
281     		goto err_create;
282     	}
283     
>>>     CID 340910:    (TAINTED_SCALAR)
>>>     Passing tainted expression "state->state_fdt->size_dt_struct" to "fdt_pack", which uses it as an offset.
284     	ret = fdt_pack(state->state_fdt);
285     	if (ret < 0) {
286     		printf("Cannot pack state FDT: %s\n", fdt_strerror(ret));
287     		ret = -EINVAL;
288     		goto err_create;
289     	}
/arch/sandbox/cpu/state.c: 311 in sandbox_write_state()
305     	      got_err ? " (with errors)" : "");
306     
307     	return 0;
308     err_write:
309     	os_close(fd);
310     err_create:
>>>     CID 340910:    (TAINTED_SCALAR)
>>>     Passing tainted expression "*state->state_fdt" to "os_free", which uses it as an offset.
311     	os_free(state->state_fdt);
312     
313     	return ret;
314     }
315     
316     int state_setprop(int node, const char *prop_name, const void *data, int size)
/arch/sandbox/cpu/state.c: 284 in sandbox_write_state()
278     
279     	if (ret == -EIO) {
280     		printf("Could not write sandbox state\n");
281     		goto err_create;
282     	}
283     
>>>     CID 340910:    (TAINTED_SCALAR)
>>>     Passing tainted expression "state->state_fdt->size_dt_strings" to "fdt_pack", which uses it as an offset.
284     	ret = fdt_pack(state->state_fdt);
285     	if (ret < 0) {
286     		printf("Cannot pack state FDT: %s\n", fdt_strerror(ret));
287     		ret = -EINVAL;
288     		goto err_create;
289     	}
/arch/sandbox/cpu/state.c: 311 in sandbox_write_state()
305     	      got_err ? " (with errors)" : "");
306     
307     	return 0;
308     err_write:
309     	os_close(fd);
310     err_create:
>>>     CID 340910:    (TAINTED_SCALAR)
>>>     Passing tainted expression "*state->state_fdt" to "os_free", which uses it as an offset.
311     	os_free(state->state_fdt);
312     
313     	return ret;
314     }
315     
316     int state_setprop(int node, const char *prop_name, const void *data, int size)

** CID 340909:  Uninitialized variables  (UNINIT)
/lib/gunzip.c: 226 in gzwrite()


________________________________________________________________________________________________________
*** CID 340909:  Uninitialized variables  (UNINIT)
/lib/gunzip.c: 226 in gzwrite()
220     			unsigned long blocks_written;
221     			int numfilled;
222     			lbaint_t writeblocks;
223     
224     			s.avail_out = szwritebuf;
225     			s.next_out = writebuf;
>>>     CID 340909:  Uninitialized variables  (UNINIT)
>>>     Using uninitialized value "s.total_out" when calling "inflate". [Note: The source code implementation of the function has been overridden by a builtin model.]
226     			r = inflate(&s, Z_SYNC_FLUSH);
227     			if ((r != Z_OK) &&
228     			    (r != Z_STREAM_END)) {
229     				printf("Error: inflate() returned %d\n", r);
230     				goto out;
231     			}

** CID 340908:  Insecure data handling  (TAINTED_SCALAR)
/common/board_f.c: 627 in reloc_fdt()


________________________________________________________________________________________________________
*** CID 340908:  Insecure data handling  (TAINTED_SCALAR)
/common/board_f.c: 627 in reloc_fdt()
621     static int reloc_fdt(void)
622     {
623     	if (!IS_ENABLED(CONFIG_OF_EMBED)) {
624     		if (gd->flags & GD_FLG_SKIP_RELOC)
625     			return 0;
626     		if (gd->new_fdt) {
>>>     CID 340908:  Insecure data handling  (TAINTED_SCALAR)
>>>     Passing tainted expression "__fswab32((__u32)(__be32)((struct fdt_header const *)gd->fdt_blob)->totalsize)" to "memcpy", which uses it as an offset. [Note: The source code implementation of the function has been overridden by a builtin model.]
627     			memcpy(gd->new_fdt, gd->fdt_blob,
628     			       fdt_totalsize(gd->fdt_blob));
629     			gd->fdt_blob = gd->new_fdt;
630     		}
631     	}
632     

** CID 340907:  Insecure data handling  (TAINTED_SCALAR)


________________________________________________________________________________________________________
*** CID 340907:  Insecure data handling  (TAINTED_SCALAR)
/cmd/fdt.c: 59 in fdt_value_env_set()
53     	if (is_printable_string(nodep, len))
54     		env_set(var, (void *)nodep);
55     	else if (len == 4) {
56     		char buf[11];
57     
58     		sprintf(buf, "0x%08X", fdt32_to_cpu(*(fdt32_t *)nodep));
>>>     CID 340907:  Insecure data handling  (TAINTED_SCALAR)
>>>     Passing tainted expression "buf" to "env_set", which uses it as an offset.
59     		env_set(var, buf);
60     	} else if (len%4 == 0 && len <= 20) {
61     		/* Needed to print things like sha1 hashes. */
62     		char buf[41];
63     		int i;
64     

** CID 340906:    (TAINTED_SCALAR)
/fs/squashfs/sqfs.c: 1059 in sqfs_readdir()
/fs/squashfs/sqfs.c: 1060 in sqfs_readdir()
/fs/squashfs/sqfs.c: 1060 in sqfs_readdir()
/fs/squashfs/sqfs.c: 1059 in sqfs_readdir()


________________________________________________________________________________________________________
*** CID 340906:    (TAINTED_SCALAR)
/fs/squashfs/sqfs.c: 1059 in sqfs_readdir()
1053     		break;
1054     	default:
1055     		return -SQFS_STOP_READDIR;
1056     	}
1057     
1058     	/* Set entry name */
>>>     CID 340906:    (TAINTED_SCALAR)
>>>     Passing tainted expression "dirs->entry->name_size + 1" to "strncpy", which uses it as an offset. [Note: The source code implementation of the function has been overridden by a builtin model.]
1059     	strncpy(dent->name, dirs->entry->name, dirs->entry->name_size + 1);
1060     	dent->name[dirs->entry->name_size + 1] = '\0';
1061     
1062     	offset = dirs->entry->name_size + 1 + SQFS_ENTRY_BASE_LENGTH;
1063     	dirs->entry_count--;
1064     
/fs/squashfs/sqfs.c: 1060 in sqfs_readdir()
1054     	default:
1055     		return -SQFS_STOP_READDIR;
1056     	}
1057     
1058     	/* Set entry name */
1059     	strncpy(dent->name, dirs->entry->name, dirs->entry->name_size + 1);
>>>     CID 340906:    (TAINTED_SCALAR)
>>>     Using tainted variable "dirs->entry->name_size + 1" as an index into an array "dent->name".
1060     	dent->name[dirs->entry->name_size + 1] = '\0';
1061     
1062     	offset = dirs->entry->name_size + 1 + SQFS_ENTRY_BASE_LENGTH;
1063     	dirs->entry_count--;
1064     
1065     	/* Decrement size to be read */
/fs/squashfs/sqfs.c: 1060 in sqfs_readdir()
1054     	default:
1055     		return -SQFS_STOP_READDIR;
1056     	}
1057     
1058     	/* Set entry name */
1059     	strncpy(dent->name, dirs->entry->name, dirs->entry->name_size + 1);
>>>     CID 340906:    (TAINTED_SCALAR)
>>>     Using tainted variable "dirs->entry->name_size + 1" as an index into an array "dent->name".
1060     	dent->name[dirs->entry->name_size + 1] = '\0';
1061     
1062     	offset = dirs->entry->name_size + 1 + SQFS_ENTRY_BASE_LENGTH;
1063     	dirs->entry_count--;
1064     
1065     	/* Decrement size to be read */
/fs/squashfs/sqfs.c: 1059 in sqfs_readdir()
1053     		break;
1054     	default:
1055     		return -SQFS_STOP_READDIR;
1056     	}
1057     
1058     	/* Set entry name */
>>>     CID 340906:    (TAINTED_SCALAR)
>>>     Passing tainted expression "dirs->entry->name_size + 1" to "strncpy", which uses it as an offset. [Note: The source code implementation of the function has been overridden by a builtin model.]
1059     	strncpy(dent->name, dirs->entry->name, dirs->entry->name_size + 1);
1060     	dent->name[dirs->entry->name_size + 1] = '\0';
1061     
1062     	offset = dirs->entry->name_size + 1 + SQFS_ENTRY_BASE_LENGTH;
1063     	dirs->entry_count--;
1064     

** CID 340905:  Insecure data handling  (TAINTED_SCALAR)
/scripts/dtc/checks.c: 1163 in check_property_phandle_args()


________________________________________________________________________________________________________
*** CID 340905:  Insecure data handling  (TAINTED_SCALAR)
/scripts/dtc/checks.c: 1163 in check_property_phandle_args()
1157     		FAIL_PROP(c, dti, node, prop,
1158     			  "property size (%d) is invalid, expected multiple of %zu",
1159     			  prop->val.len, sizeof(cell_t));
1160     		return;
1161     	}
1162     
>>>     CID 340905:  Insecure data handling  (TAINTED_SCALAR)
>>>     Using tainted variable "cell" as a loop boundary.
1163     	for (cell = 0; cell < prop->val.len / sizeof(cell_t); cell += cellsize + 1) {
1164     		struct node *provider_node;
1165     		struct property *cellprop;
1166     		int phandle;
1167     
1168     		phandle = propval_cell_n(prop, cell);

** CID 340904:    (TAINTED_SCALAR)


________________________________________________________________________________________________________
*** CID 340904:    (TAINTED_SCALAR)
/fs/ext4/ext4_journal.c: 580 in update_descriptor_block()
574     
575     	jdb.h_blocktype = cpu_to_be32(EXT3_JOURNAL_DESCRIPTOR_BLOCK);
576     	jdb.h_magic = cpu_to_be32(EXT3_JOURNAL_MAGIC_NUMBER);
577     	jdb.h_sequence = jsb->s_sequence;
578     	buf = zalloc(fs->blksz);
579     	if (!buf) {
>>>     CID 340904:    (TAINTED_SCALAR)
>>>     Passing tainted expression "*temp_buff" to "dlfree", which uses it as an offset.
580     		free(temp_buff);
581     		return;
582     	}
583     	temp = buf;
584     	memcpy(buf, &jdb, sizeof(struct journal_header_t));
585     	temp += sizeof(struct journal_header_t);
/fs/ext4/ext4_journal.c: 603 in update_descriptor_block()
597     	tag.block = cpu_to_be32(journal_ptr[--i]->blknr);
598     	tag.flags = cpu_to_be32(EXT3_JOURNAL_FLAG_LAST_TAG);
599     	memcpy(temp - sizeof(struct ext3_journal_block_tag), &tag,
600     	       sizeof(struct ext3_journal_block_tag));
601     	put_ext4((uint64_t) ((uint64_t)blknr * (uint64_t)fs->blksz), buf, (uint32_t) fs->blksz);
602     
>>>     CID 340904:    (TAINTED_SCALAR)
>>>     Passing tainted expression "*temp_buff" to "dlfree", which uses it as an offset.
603     	free(temp_buff);
604     	free(buf);
605     }
606     
607     static void update_commit_block(long int blknr)
608     {

** CID 340903:  Insecure data handling  (TAINTED_SCALAR)


________________________________________________________________________________________________________
*** CID 340903:  Insecure data handling  (TAINTED_SCALAR)
/fs/btrfs/disk-io.c: 1036 in open_ctree_fs_info()
1030     	fs_info->stripesize = btrfs_super_stripesize(disk_super);
1031     
1032     	ret = btrfs_check_fs_compatibility(fs_info->super_copy);
1033     	if (ret)
1034     		goto out_devices;
1035     
>>>     CID 340903:  Insecure data handling  (TAINTED_SCALAR)
>>>     Passing tainted expression "fs_info->nodesize" to "btrfs_setup_chunk_tree_and_device_map", which uses it as an offset.
1036     	ret = btrfs_setup_chunk_tree_and_device_map(fs_info);
1037     	if (ret)
1038     		goto out_chunk;
1039     
1040     	/* Chunk tree root is unable to read, return directly */
1041     	if (!fs_info->chunk_root)

** CID 340902:    (TAINTED_SCALAR)


________________________________________________________________________________________________________
*** CID 340902:    (TAINTED_SCALAR)
/common/fdt_support.c: 1784 in fdt_read_range()
1778     
1779     	/* Jump to the n'th entry */
1780     	cell = n * (pacells + acells + scells);
1781     
1782     	/* Read <child address> */
1783     	if (child_addr) {
>>>     CID 340902:    (TAINTED_SCALAR)
>>>     Passing tainted expression "cell" to "fdt_read_prop", which uses it as an offset.
1784     		r = fdt_read_prop(ranges, ranges_len, cell, child_addr,
1785     				  acells);
1786     		if (r)
1787     			return r;
1788     	}
1789     	cell += acells;
/common/fdt_support.c: 1784 in fdt_read_range()
1778     
1779     	/* Jump to the n'th entry */
1780     	cell = n * (pacells + acells + scells);
1781     
1782     	/* Read <child address> */
1783     	if (child_addr) {
>>>     CID 340902:    (TAINTED_SCALAR)
>>>     Passing tainted expression "cell" to "fdt_read_prop", which uses it as an offset.
1784     		r = fdt_read_prop(ranges, ranges_len, cell, child_addr,
1785     				  acells);
1786     		if (r)
1787     			return r;
1788     	}
1789     	cell += acells;
/common/fdt_support.c: 1798 in fdt_read_range()
1792     	if (addr)
1793     		*addr = fdt_translate_address(fdt, node, ranges + cell);
1794     	cell += pacells;
1795     
1796     	/* Read <size in child address space> */
1797     	if (len) {
>>>     CID 340902:    (TAINTED_SCALAR)
>>>     Passing tainted expression "cell" to "fdt_read_prop", which uses it as an offset.
1798     		r = fdt_read_prop(ranges, ranges_len, cell, len, scells);
1799     		if (r)
1800     			return r;
1801     	}
1802     
1803     	return 0;

** CID 340901:  Insecure data handling  (TAINTED_SCALAR)


________________________________________________________________________________________________________
*** CID 340901:  Insecure data handling  (TAINTED_SCALAR)
/scripts/dtc/libfdt/fdt_overlay.c: 643 in overlay_merge()
637     			return overlay;
638     
639     		target = overlay_get_target(fdt, fdto, fragment, NULL);
640     		if (target < 0)
641     			return target;
642     
>>>     CID 340901:  Insecure data handling  (TAINTED_SCALAR)
>>>     Passing tainted expression "target" to "overlay_apply_node", which uses it as a loop boundary.
643     		ret = overlay_apply_node(fdt, target, fdto, overlay);
644     		if (ret)
645     			return ret;
646     	}
647     
648     	return 0;

** CID 340900:  Error handling issues  (NEGATIVE_RETURNS)
/fs/btrfs/inode.c: 644 in read_and_truncate_page()


________________________________________________________________________________________________________
*** CID 340900:  Error handling issues  (NEGATIVE_RETURNS)
/fs/btrfs/inode.c: 644 in read_and_truncate_page()
638     	if (!buf)
639     		return -ENOMEM;
640     
641     	extent_type = btrfs_file_extent_type(leaf, fi);
642     	if (extent_type == BTRFS_FILE_EXTENT_INLINE) {
643     		ret = btrfs_read_extent_inline(path, fi, buf);
>>>     CID 340900:  Error handling issues  (NEGATIVE_RETURNS)
>>>     "({...; (_min1 < _min2) ? _min1 : _min2;})" is passed to a parameter that cannot be negative. [Note: The source code implementation of the function has been overridden by a builtin model.]
644     		memcpy(dest, buf + page_off, min(page_len, ret));
645     		free(buf);
646     		return len;
647     	}
648     
649     	ret = btrfs_read_extent_reg(path, fi,

** CID 340899:  Insecure data handling  (TAINTED_SCALAR)
/fs/ext4/ext4_journal.c: 219 in print_revoke_blks()


________________________________________________________________________________________________________
*** CID 340899:  Insecure data handling  (TAINTED_SCALAR)
/fs/ext4/ext4_journal.c: 219 in print_revoke_blks()
213     
214     	header = (struct journal_revoke_header_t *) revk_blk;
215     	offset = sizeof(struct journal_revoke_header_t);
216     	max = be32_to_cpu(header->r_count);
217     	printf("total bytes %d\n", max);
218     
>>>     CID 340899:  Insecure data handling  (TAINTED_SCALAR)
>>>     Using tainted variable "max" as a loop boundary.
219     	while (offset < max) {
220     		blocknr = be32_to_cpu(*((__be32 *)(revk_blk + offset)));
221     		printf("revoke blknr is %ld\n", blocknr);
222     		offset += 4;
223     	}
224     }

** CID 340898:  Memory - illegal accesses  (UNINIT)
/lib/efi_loader/efi_boottime.c: 2667 in efi_uninstall_multiple_protocol_interfaces()


________________________________________________________________________________________________________
*** CID 340898:  Memory - illegal accesses  (UNINIT)
/lib/efi_loader/efi_boottime.c: 2667 in efi_uninstall_multiple_protocol_interfaces()
2661     	efi_status_t r = EFI_SUCCESS;
2662     	size_t i = 0;
2663     
2664     	if (!handle)
2665     		return EFI_EXIT(EFI_INVALID_PARAMETER);
2666     
>>>     CID 340898:  Memory - illegal accesses  (UNINIT)
>>>     Using uninitialized value "argptr" when calling "__builtin_ms_va_start".
2667     	efi_va_start(argptr, handle);
2668     	for (;;) {
2669     		protocol = efi_va_arg(argptr, efi_guid_t*);
2670     		if (!protocol)
2671     			break;
2672     		protocol_interface = efi_va_arg(argptr, void*);

** CID 340897:  Memory - illegal accesses  (UNINIT)
/lib/efi_loader/efi_boottime.c: 2594 in efi_install_multiple_protocol_interfaces()


________________________________________________________________________________________________________
*** CID 340897:  Memory - illegal accesses  (UNINIT)
/lib/efi_loader/efi_boottime.c: 2594 in efi_install_multiple_protocol_interfaces()
2588     	efi_status_t r = EFI_SUCCESS;
2589     	int i = 0;
2590     
2591     	if (!handle)
2592     		return EFI_EXIT(EFI_INVALID_PARAMETER);
2593     
>>>     CID 340897:  Memory - illegal accesses  (UNINIT)
>>>     Using uninitialized value "argptr" when calling "__builtin_ms_va_start".
2594     	efi_va_start(argptr, handle);
2595     	for (;;) {
2596     		protocol = efi_va_arg(argptr, efi_guid_t*);
2597     		if (!protocol)
2598     			break;
2599     		protocol_interface = efi_va_arg(argptr, void*);

** CID 340896:  Insecure data handling  (TAINTED_SCALAR)


________________________________________________________________________________________________________
*** CID 340896:  Insecure data handling  (TAINTED_SCALAR)
/common/image-fdt.c: 510 in boot_get_fdt()
504     		ulong		fdt_data, fdt_len;
505     		u32			fdt_size, dtb_idx;
506     		/*
507     		 * Firstly check if this android boot image has dtb field.
508     		 */
509     		dtb_idx = (u32)env_get_ulong("adtb_idx", 10, 0);
>>>     CID 340896:  Insecure data handling  (TAINTED_SCALAR)
>>>     Passing tainted expression "hdr" to "android_image_get_dtb_by_index", which uses it as a loop boundary.
510     		if (android_image_get_dtb_by_index((ulong)hdr, dtb_idx, &fdt_addr, &fdt_size)) {
511     			fdt_blob = (char *)map_sysmem(fdt_addr, 0);
512     			if (fdt_check_header(fdt_blob))
513     				goto no_fdt;
514     
515     			debug("## Using FDT in Android image dtb area with idx %u\n", dtb_idx);

** CID 340895:  Insecure data handling  (TAINTED_SCALAR)
/common/image-android-dt.c: 128 in android_dt_print_contents()


________________________________________________________________________________________________________
*** CID 340895:  Insecure data handling  (TAINTED_SCALAR)
/common/image-android-dt.c: 128 in android_dt_print_contents()
122     	printf("           page_size = %d\n", fdt32_to_cpu(hdr->page_size));
123     	printf("             version = %d\n", fdt32_to_cpu(hdr->version));
124     
125     	unmap_sysmem(hdr);
126     
127     	/* Print image entries info */
>>>     CID 340895:  Insecure data handling  (TAINTED_SCALAR)
>>>     Using tainted variable "entry_count" as a loop boundary.
128     	for (i = 0; i < entry_count; ++i) {
129     		const ulong e_addr = hdr_addr + entries_offset + i * entry_size;
130     		const struct dt_table_entry *e;
131     		const struct fdt_header *fdt;
132     		u32 dt_offset, dt_size;
133     		u32 j;


________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, https://u15810271.ct.sendgrid.net/ls/click?upn=HRESupC-2F2Czv4BOaCWWCy7my0P0qcxCbhZ31OYv50yoA22WlOQ-2By3ieUvdbKmOyw68TMVT4Kip-2BBzfOGWXJ5yIiYplmPF9KAnKIja4Zd7tU-3D9GGA_EEm8SbLgSDsaDZif-2Bv7ch8WqhKpLoKErHi4nXpwDNTs3pBU8vxliBOfH1-2FBt0vqbdIx1mP6FC3-2FQe-2Fw-2F-2FDBEhKG26IbQfiRoX0gqXB9Wm6CFQKvUL203el0Uwq3R00CKZgVFh0pACrzKTpfyuRUH7ZMXL834xWtjRvq7oWINAt-2FvvOwfqgX9iTtocxbsR7P736LnIQHB4GthdbQG8xFv4Q-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-3Dp1U4_EEm8SbLgSDsaDZif-2Bv7ch8WqhKpLoKErHi4nXpwDNTs3pBU8vxliBOfH1-2FBt0vqbclVGnJdJ2jYQpaLHmC-2BWaiKYUmh5-2BWRNQHXgL0tqPDBr5zJNId2seKKN819S3BkxgDCXMchYRh-2BH6W8WhXwQjsEAGX5MWx-2FVvnCjUsyybd-2FX8yAQGOFpUWS11iICkcOGU8IXKIHrICdOOFVa3O8-2BPw-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/20211102/799fbd1c/attachment.sig>


More information about the U-Boot mailing list