Fixed findings

List of Findings

Error: GCC_ANALYZER_WARNING (CWE-401): [#def1]
libinput-1.31.0/src/libinput-plugin-lua.c:186:33: warning[-Wanalyzer-malloc-leak]: leak of ‘udev_property_new(udev_list_entry_get_name(e), udev_list_entry_get_value(e))’
libinput-1.31.0/src/libinput-plugin-lua.c:343:1: enter_function: entry to ‘libinput_lua_plugin_device_new’
libinput-1.31.0/src/libinput-plugin-lua.c:352:9: call_function: calling ‘lua_push_evdev_device’ from ‘libinput_lua_plugin_device_new’
#  184|   				struct udev_property *prop =
#  185|   					udev_property_new(key, value);
#  186|-> 				list_insert(&lua_device->udev_properties_list,
#  187|   					    &prop->link);
#  188|   			}

Error: GCC_ANALYZER_WARNING (CWE-476): [#def2]
libinput-1.31.0/src/util-bits.h:265:41: warning[-Wanalyzer-null-dereference]: dereference of NULL ‘single.mask’
libinput-1.31.0/test/test-utils.c:3174:1: enter_function: entry to ‘infmask_test’
libinput-1.31.0/test/test-utils.c:3177:27: release_memory: ‘empty.mask’ is NULL
libinput-1.31.0/test/test-utils.c:3178:9: call_function: calling ‘infmask_is_empty’ from ‘infmask_test’
libinput-1.31.0/test/test-utils.c:3178:9: return_function: returning to ‘infmask_test’ from ‘infmask_is_empty’
libinput-1.31.0/test/test-utils.c:3178:9: branch_true: following ‘true’ branch...
libinput-1.31.0/test/test-utils.c:3184:28: branch_true: ...to here
libinput-1.31.0/test/test-utils.c:3184:28: release_memory: ‘empty.mask’ is NULL
libinput-1.31.0/test/test-utils.c:3185:9: call_function: calling ‘infmask_set_bit’ from ‘infmask_test’
libinput-1.31.0/test/test-utils.c:3185:9: return_function: returning to ‘infmask_test’ from ‘infmask_set_bit’
libinput-1.31.0/test/test-utils.c:3185:9: branch_false: following ‘false’ branch...
libinput-1.31.0/test/test-utils.c:3186:9: call_function: inlined call to ‘infmask_bit_is_set’ from ‘infmask_test’
libinput-1.31.0/test/test-utils.c:3186:9: branch_true: following ‘true’ branch...
libinput-1.31.0/test/test-utils.c:3187:9: call_function: inlined call to ‘infmask_bit_is_set’ from ‘infmask_test’
libinput-1.31.0/test/test-utils.c:3187:9: branch_false: following ‘false’ branch...
libinput-1.31.0/test/test-utils.c:3188:9: call_function: inlined call to ‘infmask_bit_is_set’ from ‘infmask_test’
libinput-1.31.0/test/test-utils.c:3188:9: branch_false: following ‘false’ branch...
libinput-1.31.0/test/test-utils.c:3189:9: branch_false: ...to here
libinput-1.31.0/test/test-utils.c:3189:9: call_function: calling ‘infmask_is_empty’ from ‘infmask_test’
libinput-1.31.0/test/test-utils.c:3189:9: return_function: returning to ‘infmask_test’ from ‘infmask_is_empty’
libinput-1.31.0/test/test-utils.c:3189:9: branch_false: following ‘false’ branch...
libinput-1.31.0/test/test-utils.c:3190:9: branch_false: ...to here
libinput-1.31.0/test/test-utils.c:3190:9: call_function: calling ‘infmask_clear_bit’ from ‘infmask_test’
libinput-1.31.0/test/test-utils.c:3190:9: return_function: returning to ‘infmask_test’ from ‘infmask_clear_bit’
libinput-1.31.0/test/test-utils.c:3190:9: branch_true: following ‘true’ branch...
libinput-1.31.0/test/test-utils.c:3191:9: call_function: inlined call to ‘infmask_bit_is_set’ from ‘infmask_test’
libinput-1.31.0/test/test-utils.c:3191:9: branch_false: following ‘false’ branch...
libinput-1.31.0/test/test-utils.c:3192:9: branch_false: ...to here
libinput-1.31.0/test/test-utils.c:3192:9: call_function: calling ‘infmask_is_empty’ from ‘infmask_test’
libinput-1.31.0/test/test-utils.c:3192:9: return_function: returning to ‘infmask_test’ from ‘infmask_is_empty’
libinput-1.31.0/test/test-utils.c:3196:30: call_function: calling ‘infmask_from_bit’ from ‘infmask_test’
#  263|   		/* Zero out the new memory */
#  264|   		for (size_t i = mask->nmasks; i < required; i++)
#  265|-> 			mask->mask[i] = bitmask_new();
#  266|   		mask->nmasks = required;
#  267|   	}

Error: GCC_ANALYZER_WARNING (CWE-476): [#def3]
libinput-1.31.0/test/test-plugins-lua.c:576:36: warning[-Wanalyzer-null-dereference]: dereference of NULL ‘0’
libinput-1.31.0/test/test-plugins-lua.c:529:1: enter_function: entry to ‘lua_frame_handler’
libinput-1.31.0/test/test-plugins-lua.c:531:37: call_function: calling ‘tmpdir_create’ from ‘lua_frame_handler’
libinput-1.31.0/test/test-plugins-lua.c:531:37: return_function: returning to ‘lua_frame_handler’ from ‘tmpdir_create’
libinput-1.31.0/test/test-plugins-lua.c:542:33: call_function: calling ‘_litest_write_plugin’ from ‘lua_frame_handler’
libinput-1.31.0/test/test-plugins-lua.c:542:33: return_function: returning to ‘lua_frame_handler’ from ‘_litest_write_plugin’
libinput-1.31.0/test/test-plugins-lua.c:548:9: branch_true: following ‘true’ branch (when ‘capture’ is non-NULL)...
libinput-1.31.0/test/test-plugins-lua.c:549:17: branch_true: ...to here
libinput-1.31.0/test/test-plugins-lua.c:557:17: call_function: calling ‘now_in_us’ from ‘lua_frame_handler’
libinput-1.31.0/test/test-plugins-lua.c:557:17: return_function: returning to ‘lua_frame_handler’ from ‘now_in_us’
libinput-1.31.0/test/test-plugins-lua.c:563:17: call_function: calling ‘now_in_us’ from ‘lua_frame_handler’
libinput-1.31.0/test/test-plugins-lua.c:563:17: return_function: returning to ‘lua_frame_handler’ from ‘now_in_us’
libinput-1.31.0/test/test-plugins-lua.c:575:40: call_function: calling ‘safe_strdup’ from ‘lua_frame_handler’
libinput-1.31.0/test/test-plugins-lua.c:575:40: return_function: returning to ‘lua_frame_handler’ from ‘safe_strdup’
libinput-1.31.0/test/test-plugins-lua.c:576:39: release_memory: using NULL here
libinput-1.31.0/test/test-plugins-lua.c:576:36: danger: dereference of NULL ‘safe_strdup(*<unknown>) + i’
#  574|   
#  575|   		_autofree_ char *str = safe_strdup(capture->infos[idx]);
#  576|-> 		for (size_t i = 0; str[i]; i++) {
#  577|   			if (str[i] == '\n') {
#  578|   				str[i] = '\0';

Scan Properties

analyzer-version-clippy1.95.0
analyzer-version-cppcheck2.20.0
analyzer-version-gcc16.1.1
analyzer-version-gcc-analyzer16.1.1
analyzer-version-shellcheck0.11.0
analyzer-version-unicontrol0.0.2
diffbase-analyzer-version-clippy1.95.0
diffbase-analyzer-version-cppcheck2.20.0
diffbase-analyzer-version-gcc16.1.1
diffbase-analyzer-version-gcc-analyzer16.1.1
diffbase-analyzer-version-shellcheck0.11.0
diffbase-analyzer-version-unicontrol0.0.2
diffbase-enabled-pluginsclippy, cppcheck, gcc, shellcheck, unicontrol
diffbase-exit-code0
diffbase-hostip-172-16-1-76.us-west-2.compute.internal
diffbase-known-false-positives/usr/share/csmock/known-false-positives.js
diffbase-known-false-positives-rpmknown-false-positives-0.0.0.20260524.213755.g3c6d0be.main-1.el9.noarch
diffbase-mock-configfedora-rawhide-x86_64
diffbase-project-namelibinput-1.31.2-1.fc45
diffbase-store-results-to/tmp/tmpw99bpnxq/libinput-1.31.2-1.fc45.tar.xz
diffbase-time-created2026-06-01 14:31:13
diffbase-time-finished2026-06-01 14:33:08
diffbase-toolcsmock
diffbase-tool-args'/usr/bin/csmock' '-r' 'fedora-rawhide-x86_64' '-t' 'shellcheck,cppcheck,clippy,unicontrol,gcc' '-o' '/tmp/tmpw99bpnxq/libinput-1.31.2-1.fc45.tar.xz' '--gcc-analyze' '--unicontrol-notests' '--unicontrol-bidi-only' '--install' 'pam' '--gcc-analyzer-bin=/usr/bin/gcc' '/tmp/tmpw99bpnxq/libinput-1.31.2-1.fc45.src.rpm'
diffbase-tool-versioncsmock-3.8.5.20260529.133039.g6f3b5c6-1.el9
enabled-pluginsclippy, cppcheck, gcc, shellcheck, unicontrol
exit-code0
hostip-172-16-1-76.us-west-2.compute.internal
known-false-positives/usr/share/csmock/known-false-positives.js
known-false-positives-rpmknown-false-positives-0.0.0.20260524.213755.g3c6d0be.main-1.el9.noarch
mock-configfedora-rawhide-x86_64
project-namelibinput-1.31.0-1.fc44
store-results-to/tmp/tmpk9hwpk8v/libinput-1.31.0-1.fc44.tar.xz
time-created2026-06-01 14:28:29
time-finished2026-06-01 14:30:53
titleFixed findings
toolcsmock
tool-args'/usr/bin/csmock' '-r' 'fedora-rawhide-x86_64' '-t' 'shellcheck,cppcheck,clippy,unicontrol,gcc' '-o' '/tmp/tmpk9hwpk8v/libinput-1.31.0-1.fc44.tar.xz' '--gcc-analyze' '--unicontrol-notests' '--unicontrol-bidi-only' '--install' 'pam' '--gcc-analyzer-bin=/usr/bin/gcc' '/tmp/tmpk9hwpk8v/libinput-1.31.0-1.fc44.src.rpm'
tool-versioncsmock-3.8.5.20260529.133039.g6f3b5c6-1.el9