diff options
author | Glenn Strauss <gstrauss@gluelogic.com> | 2016-03-26 10:58:49 +0000 |
---|---|---|
committer | Stefan Bühler <stbuehler@web.de> | 2016-03-26 10:58:49 +0000 |
commit | f5453290b7742443da98728cacfeeca42aafa7f6 (patch) | |
tree | e97e894ea446112d7d01afbc0f95d3cd2bcaf30e /src/mod_cml_funcs.c | |
parent | 733ce382030bdf4fe362b24da1ab7728aca8d11f (diff) | |
download | lighttpd-git-f5453290b7742443da98728cacfeeca42aafa7f6.tar.gz |
validate return values from strtol, strtoul (fixes #2564)
From: Glenn Strauss <gstrauss@gluelogic.com>
git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@3122 152afb58-edef-0310-8abb-c4023f1b3aa9
Diffstat (limited to 'src/mod_cml_funcs.c')
-rw-r--r-- | src/mod_cml_funcs.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mod_cml_funcs.c b/src/mod_cml_funcs.c index 1dd0e50b..5625be76 100644 --- a/src/mod_cml_funcs.c +++ b/src/mod_cml_funcs.c @@ -245,6 +245,8 @@ int f_memcache_get_long(lua_State *L) { char *value; const char *key; memcached_st *memc; + char *endptr; + long v; if (!lua_islightuserdata(L, lua_upvalueindex(1))) { lua_pushstring(L, "where is my userdata ?"); @@ -264,7 +266,13 @@ int f_memcache_get_long(lua_State *L) { return 1; } - lua_pushinteger(L, strtol(value, NULL, 10)); + errno = 0; + v = strtol(value, &endptr, 10); + if (0 == errno && *endptr == '\0') { + lua_pushinteger(L, v); + } else { + lua_pushnil(L); + } free(value); |