Module: sip-router Branch: master Commit: af7d4496febf95e56b604849a8f818e688b21f53 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=af7d4496febf95e56b604849a8f818e688b21f53
Author: Ovidiu Sas <[email protected]> Committer: Ovidiu Sas <[email protected]> Date: Mon Feb 4 10:59:10 2013 -0500 lib/srdb1: while converting strings to int/bigint check for invalid characters --- lib/srdb1/db_ut.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/srdb1/db_ut.c b/lib/srdb1/db_ut.c index c57ef4d..0fa4cf5 100644 --- a/lib/srdb1/db_ut.c +++ b/lib/srdb1/db_ut.c @@ -73,18 +73,23 @@ inline int db_str2int(const char* _s, int* _v) { long tmp; + char* p = NULL; if (!_s || !_v) { LM_ERR("Invalid parameter value\n"); return -1; } - tmp = strtoul(_s, 0, 10); + tmp = strtoul(_s, &p, 10); if ((tmp == ULONG_MAX && errno == ERANGE) || (tmp < INT_MIN) || (tmp > UINT_MAX)) { LM_ERR("Value out of range\n"); return -1; } + if (p && *p != '\0') { + LM_ERR("Unexpected characters: [%s]\n", p); + return -2; + } *_v = (int)tmp; return 0; @@ -94,17 +99,22 @@ inline int db_str2int(const char* _s, int* _v) inline int db_str2longlong(const char* _s, long long * _v) { long long tmp; + char* p = NULL; if (!_s || !_v) { LM_ERR("Invalid parameter value\n"); return -1; } - tmp = strtoll(_s, 0, 10); + tmp = strtoll(_s, &p, 10); if (errno == ERANGE) { LM_ERR("Value out of range\n"); return -1; } + if (p && *p != '\0') { + LM_ERR("Unexpected characters: [%s]\n", p); + return -2; + } *_v = tmp; return 0; _______________________________________________ sr-dev mailing list [email protected] http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
