From f329aae724573b87bd2a814f4858d29ca894600b Mon Sep 17 00:00:00 2001 From: Diego Nehab Date: Wed, 1 Aug 2012 03:06:09 -0300 Subject: [PATCH] Fix HORRIBLE but in b64/qp code. Bug was caught by user moteus. Code was checking if arguments was nil after using luaL_Buffer code, which messes with the stack. Simple to fix, though. --- src/makefile | 2 +- src/mime.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/makefile b/src/makefile index 1363bc0..7e5f2e2 100644 --- a/src/makefile +++ b/src/makefile @@ -29,7 +29,7 @@ DEBUG?=NODEBUG # LUAINC_macosx: # /opt/local/include LUAINC_macosx_base?=/opt/local/include -LUAINC_macosx?=$(LUAINC_macosx_base)$(LUAV) +LUAINC_macosx?=$(LUAINC_macosx_base)/lua$(LUAV) # FIXME default should this default to fink or to macports? # What happens when more than one Lua version is installed? LUAPREFIX_macosx?=/opt/local/ diff --git a/src/mime.c b/src/mime.c index a1aaae9..06e5132 100644 --- a/src/mime.c +++ b/src/mime.c @@ -263,6 +263,8 @@ static int mime_global_b64(lua_State *L) lua_pushnil(L); return 2; } + /* make sure we don't confuse buffer stuff with arguments */ + lua_settop(L, 2); /* process first part of the input */ luaL_buffinit(L, &buffer); while (input < last) @@ -307,6 +309,8 @@ static int mime_global_unb64(lua_State *L) lua_pushnil(L); return 2; } + /* make sure we don't confuse buffer stuff with arguments */ + lua_settop(L, 2); /* process first part of the input */ luaL_buffinit(L, &buffer); while (input < last) @@ -458,6 +462,8 @@ static int mime_global_qp(lua_State *L) lua_pushnil(L); return 2; } + /* make sure we don't confuse buffer stuff with arguments */ + lua_settop(L, 3); /* process first part of input */ luaL_buffinit(L, &buffer); while (input < last) @@ -531,6 +537,8 @@ static int mime_global_unqp(lua_State *L) lua_pushnil(L); return 2; } + /* make sure we don't confuse buffer stuff with arguments */ + lua_settop(L, 2); /* process first part of input */ luaL_buffinit(L, &buffer); while (input < last)