From: Aurelien DARRAGON Date: Wed, 28 Sep 2022 13:52:18 +0000 (+0200) Subject: BUG/MINOR: hlua: fixing hlua_http_msg_del_data behavior X-Git-Tag: v2.7-dev7~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d7c71b03d83144913a33a09080c3738b27395af8;p=thirdparty%2Fhaproxy.git BUG/MINOR: hlua: fixing hlua_http_msg_del_data behavior GH issue #1885 reported that HTTPMessage.remove() did not work as expected. It turns out that underlying hlua_http_msg_del_data() function was not working properly due to input / output inversion as well as incorrect user offset handling. This patch fixes it so that the behavior is the one described in the documentation. This could be backported to 2.6 and 2.5. --- diff --git a/src/hlua.c b/src/hlua.c index b0c4444bce..253d334c9c 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -6724,17 +6724,17 @@ __LJMP static int hlua_http_msg_del_data(lua_State *L) if (msg->msg_state < HTTP_MSG_DATA) WILL_LJMP(lua_error(L)); - filter = hlua_http_msg_filter(L, 1, msg, &input, &output); + filter = hlua_http_msg_filter(L, 1, msg, &output, &input); if (!filter || !hlua_filter_from_payload(filter)) WILL_LJMP(lua_error(L)); - offset = input + output; + offset = output; if (lua_gettop(L) > 1) { offset = MAY_LJMP(luaL_checkinteger(L, 2)); if (offset < 0) offset = MAX(0, (int)input + offset); offset += output; - if (offset < output || offset > output + input) { + if (offset > output + input) { lua_pushfstring(L, "offset out of range."); WILL_LJMP(lua_error(L)); }