summaryrefslogtreecommitdiff
path: root/mail/opendkim-devel/files/patch-lua_pop
blob: 129d05d62e6d4805c7cebe5ca6b48beb0b42ceeb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
From 57b86d35381ed9bfb7e4be4e6512fb64163dd725 Mon Sep 17 00:00:00 2001
From: FUTATSUKI Yasuhito <futatuki@yf.bsdclub.org>
Date: Tue, 27 Feb 2024 14:41:59 +0900
Subject: [PATCH] Lua: Fix stack level after register odkim functions.

When luaL_setfuncs() is replaced by luaL_newlib() + lua_setglobal()
in commit 74b3374feee34fba14a0e15f89f049cbe4a3dafd, the commit did
not take account that lua_setglobal() pops a value from the stack.

Thus, following lua pop(l, 1) tries to pop from empty stack in
Lua >= 5.2, especially in Lua 5.4, it causes abort().

This fix it.

* miltertest/miltertest.c (main):
  Don't pop after lua_setglobal() in Lua >= 5.2

* opendkim/opendkim-lua.c
  (dkimf_lua_setup_hook, dkimf_lua_screen_hook,
   dkimf_lua_stats_hook, dkimf_lua_final_hook): As above.
---
 miltertest/miltertest.c | 2 +-
 opendkim/opendkim-lua.c | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git miltertest/miltertest.c miltertest/miltertest.c
index b4a345f7..339cfa91 100644
--- miltertest/miltertest.c
+++ miltertest/miltertest.c
@@ -4014,8 +4014,8 @@ main(int argc, char **argv)
 	lua_setglobal(l, "mt");
 #else /* LUA_VERSION_NUM >= 502 */
 	luaL_register(l, "mt", mt_library);
-#endif /* LUA_VERSION_NUM >= 502 */
 	lua_pop(l, 1);
+#endif /* LUA_VERSION_NUM >= 502 */
 
 	/* register constants */
 	lua_pushnumber(l, MT_HDRINSERT);
diff --git opendkim/opendkim-lua.c opendkim/opendkim-lua.c
index 3786aa4b..c1a67f90 100644
--- opendkim/opendkim-lua.c
+++ opendkim/opendkim-lua.c
@@ -490,8 +490,8 @@ dkimf_lua_setup_hook(void *ctx, const char *script, size_t scriptlen,
 	lua_setglobal(l, "odkim");
 # else /* LUA_VERSION_NUM >= 502 */
 	luaL_register(l, "odkim", dkimf_lua_lib_setup);
-# endif /* LUA_VERSION_NUM >= 502 */
 	lua_pop(l, 1);
+# endif /* LUA_VERSION_NUM >= 502 */
 
 	/*
 	**  Register constants.
@@ -649,8 +649,8 @@ dkimf_lua_screen_hook(void *ctx, const char *script, size_t scriptlen,
 	lua_setglobal(l, "odkim");
 # else /* LUA_VERSION_NUM >= 502 */
 	luaL_register(l, "odkim", dkimf_lua_lib_screen);
-# endif /* LUA_VERSION_NUM >= 502 */
 	lua_pop(l, 1);
+# endif /* LUA_VERSION_NUM >= 502 */
 
 	/*
 	**  Register constants.
@@ -798,8 +798,8 @@ dkimf_lua_stats_hook(void *ctx, const char *script, size_t scriptlen,
 	lua_setglobal(l, "odkim");
 # else /* LUA_VERSION_NUM >= 502 */
 	luaL_register(l, "odkim", dkimf_lua_lib_stats);
-# endif /* LUA_VERSION_NUM >= 502 */
 	lua_pop(l, 1);
+# endif /* LUA_VERSION_NUM >= 502 */
 
 	/*
 	**  Register constants.
@@ -1039,8 +1039,8 @@ dkimf_lua_final_hook(void *ctx, const char *script, size_t scriptlen,
 	lua_setglobal(l, "odkim");
 # else /* LUA_VERSION_NUM >= 502 */
 	luaL_register(l, "odkim", dkimf_lua_lib_final);
-# endif /* LUA_VERSION_NUM >= 502 */
 	lua_pop(l, 1);
+# endif /* LUA_VERSION_NUM >= 502 */
 
 	/*
 	**  Register constants.
-- 
2.45.2