lua: Fix stack imbalance in ubus_event_handler
authorHans Dedecker <dedeckeh@gmail.com>
Mon, 2 Nov 2015 10:16:10 +0000 (11:16 +0100)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 2 Nov 2015 18:02:35 +0000 (19:02 +0100)
The value from getglobal wasn't being removed from the stack,
resulting in an ever growing stack in the ubus event handler.

Signed-off-by: Karl Vogel <karl.vogel@gmail.com>
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
lua/ubus.c

index a48fb7dd443c09bbf2e1782c89d9b6d7e96100b1..2903e7b1ea7142e5e8ff7f919875e04d16a859e9 100644 (file)
@@ -597,10 +597,13 @@ ubus_event_handler(struct ubus_context *ctx, struct ubus_event_handler *ev,
 
        lua_getglobal(state, "__ubus_cb_event");
        lua_rawgeti(state, -1, listener->r);
+       lua_remove(state, -2);
 
        if (lua_isfunction(state, -1)) {
                ubus_lua_parse_blob_array(state, blob_data(msg), blob_len(msg), true);
                lua_call(state, 1, 0);
+       } else {
+               lua_pop(state, 1);
        }
 }