test_firmware: fix end of loop test in upload_read_show()
authorDan Carpenter <dan.carpenter@oracle.com>
Fri, 6 May 2022 06:55:15 +0000 (09:55 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 May 2022 17:28:37 +0000 (19:28 +0200)
commit185b29c6151cf3a5c387ca5904c51c6af3292a0c
treed97d6e083194e19965af8a225b63ea69e8357f51
parent1f7ff11ca68f464b6a9a71b8fbe9e5219e7cac57
test_firmware: fix end of loop test in upload_read_show()

If a list_for_each_entry() loop exits without hitting a break statement
then the iterator points to invalid memory.  So in this code the
"tst->name" dereference is an out bounds read.  It's an offset from the
&test_upload_list pointer and it will likely work fine most of the time
but it's not correct.

One alternative is to fix this this by changing the test to:

if (list_entry_is_head(tst, &test_upload_list, node)) {

But the simpler, trendy new way is just create a new variable and test
for NULL.

Fixes: a31ad463b72d ("test_firmware: Add test support for firmware upload")
Reviewed-by: Russ Weight <russell.h.weight@intel.com>
Acked-by: Luis Chamberlain <mcgrof@kernel.org>
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/YnTGU3UJOIA09I7e@kili
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
lib/test_firmware.c