lua

A copy of the Lua development repository
Log | Files | Refs | README

commit cbf0c7a103bd69a2b8d8a55f676cf7bb08058909
parent 4c399c5dfbb094d4bd151d49abd3d998ed1d757d
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date:   Tue,  3 Feb 2009 17:38:55 -0200

check for invalid use of '%' in replacement string in 'string.gsub'

Diffstat:
Mlstrlib.c | 8++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/lstrlib.c b/lstrlib.c @@ -1,5 +1,5 @@ /* -** $Id: lstrlib.c,v 1.140 2008/04/14 15:54:59 roberto Exp roberto $ +** $Id: lstrlib.c,v 1.141 2008/06/12 14:21:18 roberto Exp roberto $ ** Standard library for string operations and pattern-matching ** See Copyright Notice in lua.h */ @@ -600,8 +600,12 @@ static void add_s (MatchState *ms, luaL_Buffer *b, const char *s, luaL_addchar(b, news[i]); else { i++; /* skip ESC */ - if (!isdigit(uchar(news[i]))) + if (!isdigit(uchar(news[i]))) { + if (news[i] != L_ESC) + luaL_error(ms->L, "invalid use of " LUA_QL("%c") + " in replacement string", L_ESC); luaL_addchar(b, news[i]); + } else if (news[i] == '0') luaL_addlstring(b, s, e - s); else {