kmodloader: fix invalid write during insmod, CodeQL warnings
authorTony Ambardar <itugrok@yahoo.com>
Thu, 25 Jan 2024 02:22:56 +0000 (18:22 -0800)
committerTony Ambardar <itugrok@yahoo.com>
Sat, 2 Mar 2024 21:55:18 +0000 (13:55 -0800)
commit4c5c45c6beac586c994af34a795bc5f2232f5f3d
tree9a3c2eb6dbcbd421171979c7e7168ef2094abe0b
parent6a59975afc2c390e64cb7a23798f3b0c10964884
kmodloader: fix invalid write during insmod, CodeQL warnings

Running 'insmod <module>' (without module options) tries to write an empty
option string (1 byte) to a mis-allocated zero-size memory block:

  ==381835== Command: ./insmod unix
  ==381835==
  ==381835== Invalid write of size 1
  ==381835==    at 0x10A874: main_insmod (kmodloader.c:944)
  ==381835==    by 0x10A874: main (kmodloader.c:1383)
  ==381835==  Address 0x4ab6f60 is 0 bytes after a block of size 0 alloc'd
  ==381835==    at 0x4848899: malloc (in vgpreload_memcheck-amd64-linux.so)
  ==381835==    by 0x10A856: main_insmod (kmodloader.c:937)
  ==381835==    by 0x10A856: main (kmodloader.c:1383)

Change main_insmod() to allocate at least 1 byte in this case for the
null-termination. Also rename local 'options' -> 'opts' to avoid confusion
with similar global, as suggested by CodeQL, and clarify pathname logic.

Fixes: c105f22064d6 ("kmodloader: eliminate some hardcoded buffer sizes")
Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
kmodloader.c