From d8a3a00d8481a13a94247c3dc33f43ebf3569e0b Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 14 Mar 2003 15:59:53 -0300 Subject: `string.find' also accepts out-of-range indices --- lstrlib.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lstrlib.c b/lstrlib.c index 677930a3..7d93422e 100644 --- a/lstrlib.c +++ b/lstrlib.c @@ -1,5 +1,5 @@ /* -** $Id: lstrlib.c,v 1.94 2003/02/12 09:10:41 roberto Exp roberto $ +** $Id: lstrlib.c,v 1.95 2003/03/11 12:24:34 roberto Exp roberto $ ** Standard library for string operations and pattern-matching ** See Copyright Notice in lua.h */ @@ -478,7 +478,8 @@ static int str_find (lua_State *L) { const char *s = luaL_checklstring(L, 1, &l1); const char *p = luaL_checklstring(L, 2, &l2); sint32 init = posrelat(luaL_optlong(L, 3, 1), l1) - 1; - luaL_argcheck(L, 0 <= init && (size_t)(init) <= l1, 3, "out of range"); + if (init < 0) init = 0; + else if ((size_t)(init) > l1) init = l1; if (lua_toboolean(L, 4) || /* explicit request? */ strpbrk(p, SPECIALS) == NULL) { /* or no special characters? */ /* do a plain search */ -- cgit v1.2.3-55-g6feb