diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2006-01-28 10:59:13 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2006-01-28 10:59:13 -0200 |
| commit | 64205e91a36217ec73d77274ca44716091b25efd (patch) | |
| tree | 36eff5bdc9adad7537abaf4ce8b46bb1309028a8 | |
| parent | 81736885429eb660aa39a210ef1ecddf347e001d (diff) | |
| download | lua-64205e91a36217ec73d77274ca44716091b25efd.tar.gz lua-64205e91a36217ec73d77274ca44716091b25efd.tar.bz2 lua-64205e91a36217ec73d77274ca44716091b25efd.zip | |
empty string may cause out-of-bound access
| -rw-r--r-- | liolib.c | 4 |
1 files changed, 2 insertions, 2 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: liolib.c,v 2.70 2005/12/29 15:32:11 roberto Exp roberto $ | 2 | ** $Id: liolib.c,v 2.71 2006/01/17 13:54:02 roberto Exp roberto $ |
| 3 | ** Standard I/O (and system) library | 3 | ** Standard I/O (and system) library |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -283,7 +283,7 @@ static int read_line (lua_State *L, FILE *f) { | |||
| 283 | return (lua_strlen(L, -1) > 0); /* check whether read something */ | 283 | return (lua_strlen(L, -1) > 0); /* check whether read something */ |
| 284 | } | 284 | } |
| 285 | l = strlen(p); | 285 | l = strlen(p); |
| 286 | if (p[l-1] != '\n') | 286 | if (l == 0 || p[l-1] != '\n') |
| 287 | luaL_addsize(&b, l); | 287 | luaL_addsize(&b, l); |
| 288 | else { | 288 | else { |
| 289 | luaL_addsize(&b, l - 1); /* do not include `eol' */ | 289 | luaL_addsize(&b, l - 1); /* do not include `eol' */ |
