Package: qcontrol
Version: 0.4.2+svn-r40-3
Severity: normal
Tags: patch
Hi,
when passing a lua nil (or anything not a string or a number) value as second
(or higher) arg to piccmd() qcontrol dies.
This is because piccmd()s lcd-line0 / lcd-line1 commands do a strlen() on a NULL
value. get_args() calls lua_tostring(), but this returns NULL for anything not
a number or a string...
Hanno
-- System Information:
Debian Release: 7.0
APT prefers testing-updates
APT policy: (500, 'testing-updates'), (500, 'testing')
Architecture: armel (armv5tel)
Kernel: Linux 3.2.0-4-kirkwood
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages qcontrol depends on:
ii libc6 2.13-37
ii liblua5.1-0 5.1.5-4
ii udev 175-7
qcontrol recommends no packages.
qcontrol suggests no packages.
-- Configuration Files:
/etc/qcontrol/ts41x.lua changed [not included]
-- no debconf information
--- qcontrol.orig/qcontrol.c 2013-01-20 09:38:27.903838894 +0100
+++ qcontrol/qcontrol.c 2013-01-20 09:40:50.885882680 +0100
@@ -163,7 +163,15 @@
*argc = lua_gettop(lua);
*argv = (const char **) calloc(*argc, sizeof(char*));
for (i = 1; i <= *argc; ++i) {
- *(*argv + i - 1) = (const char*) lua_tostring(lua, i);
+ switch (lua_type(lua, i)) {
+ case LUA_TSTRING:
+ case LUA_TNUMBER:
+ *(*argv + i - 1) = (const char*) lua_tostring(lua, i);
+ break;
+ default:
+ *(*argv + i - 1) = (const char*) "";
+ break;
+ }
}
return 0;
}