From d87008841530fa85ef6af6b38aef6987c66d055a Mon Sep 17 00:00:00 2001 From: Bart Van Der Meerssche Date: Fri, 28 Jan 2011 10:41:55 +0100 Subject: [PATCH] [fluksod] improved message arg checking --- .../package/flukso/luasrc/flukso/spi.lua | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/mote/v2/openwrt/package/flukso/luasrc/flukso/spi.lua b/mote/v2/openwrt/package/flukso/luasrc/flukso/spi.lua index 56d0e6c..7855278 100644 --- a/mote/v2/openwrt/package/flukso/luasrc/flukso/spi.lua +++ b/mote/v2/openwrt/package/flukso/luasrc/flukso/spi.lua @@ -24,8 +24,8 @@ local nixio = require 'nixio' local os, table, string = os, table, string -local getfenv, setmetatable, tonumber = - getfenv, setmetatable, tonumber +local getfenv, setmetatable, tonumber, type = + getfenv, setmetatable, tonumber, type module (...) local modenv = getfenv() @@ -60,9 +60,11 @@ end function parse(msg) msg.parsed = {} - msg.parsed.cmd = msg.body:match('^%l%l') - for arg in msg.body:gmatch('%d+') do - msg.parsed[#msg.parsed + 1] = tonumber(arg) -- returns nil when string does not contain a number + if(msg.body) then + msg.parsed.cmd = msg.body:match('^%l%l') or '' + for arg in msg.body:gmatch('%d+') do + msg.parsed[#msg.parsed + 1] = tonumber(arg) -- returns nil when string does not contain a number + end end end @@ -75,8 +77,14 @@ function encode(msg) if argc ~= #msg.parsed then return false else - return true + for i = 1, #msg.parsed do + if type(msg.parsed[i]) ~= 'number' then + return false + end + end end + + return true end if msg.to == 'uart' then