From: Sean Bright Date: Wed, 19 Jan 2011 19:02:29 +0000 (+0000) Subject: Don't call strlen() when we only need to look at the next character or two. X-Git-Tag: 1.6.2.18-rc1~66 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7d8cdc8c057d2af62f79ea7e8455d85136773e4b;p=thirdparty%2Fasterisk.git Don't call strlen() when we only need to look at the next character or two. (closes issue #18042) Reported by: wdoekes Patches: astsvn-inefficient-ast-uri-decode.patch uploaded by wdoekes (license 717) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@302554 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/utils.c b/main/utils.c index 51f1283b53..cdf07451d3 100644 --- a/main/utils.c +++ b/main/utils.c @@ -419,7 +419,7 @@ void ast_uri_decode(char *s) unsigned int tmp; for (o = s; *s; s++, o++) { - if (*s == '%' && strlen(s) > 2 && sscanf(s + 1, "%2x", &tmp) == 1) { + if (*s == '%' && s[1] != '\0' && s[2] != '\0' && sscanf(s + 1, "%2x", &tmp) == 1) { /* have '%', two chars and correct parsing */ *o = tmp; s += 2; /* Will be incremented once more when we break out */