]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: hlua: hlua_smp2lua_str() may LJMP
authorAurelien DARRAGON <adarragon@haproxy.com>
Wed, 17 May 2023 08:38:50 +0000 (10:38 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 24 May 2023 14:48:17 +0000 (16:48 +0200)
Add LJMP hint to hlua_smp2lua_str() prototype since it relies on
functions (e.g.: lua_pushstring()) which may raise lua memory errors.

src/hlua.c

index 4ad23f2e20647cd0ad4c962842378da411df626b..c3755d21cdb786c03682450d7d6be36864009d9c 100644 (file)
@@ -511,7 +511,7 @@ static int hlua_lua2arg(lua_State *L, int ud, struct arg *arg);
 __LJMP static int hlua_lua2arg_check(lua_State *L, int first, struct arg *argp,
                                      uint64_t mask, struct proxy *p);
 static int hlua_smp2lua(lua_State *L, struct sample *smp);
-static int hlua_smp2lua_str(lua_State *L, struct sample *smp);
+__LJMP static int hlua_smp2lua_str(lua_State *L, struct sample *smp);
 static int hlua_lua2smp(lua_State *L, int ud, struct sample *smp);
 
 __LJMP static int hlua_http_get_headers(lua_State *L, struct http_msg *msg);
@@ -886,7 +886,7 @@ static int hlua_smp2lua(lua_State *L, struct sample *smp)
  * in Lua strings. This is useful to convert the return of the
  * fetches or converters.
  */
-static int hlua_smp2lua_str(lua_State *L, struct sample *smp)
+__LJMP static int hlua_smp2lua_str(lua_State *L, struct sample *smp)
 {
        switch (smp->data.type) {
 
@@ -4415,7 +4415,7 @@ __LJMP static int hlua_run_sample_fetch(lua_State *L)
 
        /* Convert the returned sample in lua value. */
        if (hsmp->flags & HLUA_F_AS_STRING)
-               hlua_smp2lua_str(L, &smp);
+               MAY_LJMP(hlua_smp2lua_str(L, &smp));
        else
                hlua_smp2lua(L, &smp);
 
@@ -4546,7 +4546,7 @@ __LJMP static int hlua_run_sample_conv(lua_State *L)
 
        /* Convert the returned sample in lua value. */
        if (hsmp->flags & HLUA_F_AS_STRING)
-               hlua_smp2lua_str(L, &smp);
+               MAY_LJMP(hlua_smp2lua_str(L, &smp));
        else
                hlua_smp2lua(L, &smp);
   end: