diff --git a/mail/opendkim-devel/Makefile b/mail/opendkim-devel/Makefile index 338b4141d3d1c..9053f3e023aa7 100644 --- a/mail/opendkim-devel/Makefile +++ b/mail/opendkim-devel/Makefile @@ -2,6 +2,7 @@ PORTNAME= opendkim DISTVERSIONPREFIX= rel-opendkim- DISTVERSION= 2.11.0-Beta2-48 DISTVERSIONSUFFIX= -g551ab382 +PORTREVISION= 1 CATEGORIES= mail security PKGNAMESUFFIX= -devel diff --git a/mail/opendkim-devel/files/patch-lua_pop b/mail/opendkim-devel/files/patch-lua_pop new file mode 100644 index 0000000000000..129d05d62e6d4 --- /dev/null +++ b/mail/opendkim-devel/files/patch-lua_pop @@ -0,0 +1,86 @@ +From 57b86d35381ed9bfb7e4be4e6512fb64163dd725 Mon Sep 17 00:00:00 2001 +From: FUTATSUKI Yasuhito +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 +