summaryrefslogtreecommitdiff
path: root/src/sp_config.c
diff options
context:
space:
mode:
authorChristian Göttsche2026-02-22 22:09:08 +0100
committerJulien Voisin2026-02-22 22:30:14 +0100
commitb26041bfa0a1e58930a5bf26b720f97f8cf6ae13 (patch)
tree9f140edbed7acede96a2b1aed1b1d7ec88757c5f /src/sp_config.c
parent50fb9d8a8f040729c3472998aea0bdd14b1b7805 (diff)
Use correct parser for session ID lengths
Can causes issues on uncommon architectures, like s390x.
Diffstat (limited to 'src/sp_config.c')
-rw-r--r--src/sp_config.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/sp_config.c b/src/sp_config.c
index ed41a6a..46742c4 100644
--- a/src/sp_config.c
+++ b/src/sp_config.c
@@ -213,6 +213,21 @@ SP_PARSEKW_FN(parse_uint) {
213 return ret; 213 return ret;
214} 214}
215 215
216SP_PARSEKW_FN(parse_ulong) {
217 int ret = SP_PARSER_SUCCESS;
218 SP_PARSE_ARG(value);
219
220 char *endptr;
221 errno = 0;
222 *(u_long*)retval = (u_long)strtoul(ZSTR_VAL(value), &endptr, 10);
223 if (errno != 0 || !endptr || endptr == ZSTR_VAL(value)) {
224 sp_log_err("config", "Failed to parse arg '%s' of `%s` on line %zu", ZSTR_VAL(value), token, kw->lineno);
225 ret = SP_PARSER_ERROR;
226 }
227 zend_string_release(value);
228 return ret;
229}
230
216SP_PARSEKW_FN(parse_cidr) { 231SP_PARSEKW_FN(parse_cidr) {
217 CHECK_DUPLICATE_KEYWORD(retval); 232 CHECK_DUPLICATE_KEYWORD(retval);
218 SP_PARSE_ARG(value); 233 SP_PARSE_ARG(value);