summaryrefslogtreecommitdiff
path: root/src/mod_cml_funcs.c
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2016-03-26 10:58:49 +0000
committerStefan Bühler <stbuehler@web.de>2016-03-26 10:58:49 +0000
commitf5453290b7742443da98728cacfeeca42aafa7f6 (patch)
treee97e894ea446112d7d01afbc0f95d3cd2bcaf30e /src/mod_cml_funcs.c
parent733ce382030bdf4fe362b24da1ab7728aca8d11f (diff)
downloadlighttpd-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.c10
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);