projects
/
asterisk/asterisk.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
02f99cb
)
Properly fully URL decode the REPLACES in SIP and also watch for edge condition ...
author
Mark Spencer
<markster@digium.com>
Mon, 9 Feb 2004 05:38:17 +0000
(
05:38
+0000)
committer
Mark Spencer
<markster@digium.com>
Mon, 9 Feb 2004 05:38:17 +0000
(
05:38
+0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2142
65c4cc65
-6c06-0410-ace0-
fbb531ad65f3
channels/chan_sip.c
patch
|
blob
|
history
diff --git
a/channels/chan_sip.c
b/channels/chan_sip.c
index
6df1f53
..
f97700c
100755
(executable)
--- a/
channels/chan_sip.c
+++ b/
channels/chan_sip.c
@@
-3958,11
+3958,15
@@
static int get_refer_info(struct sip_pvt *p, struct sip_request *oreq)
a++;
if (!strncasecmp(a, "REPLACES=", strlen("REPLACES="))) {
strncpy(tmp5, a + strlen("REPLACES="), sizeof(tmp5) - 1);
- if ((a = strchr(tmp5, '%'))) {
+ a = tmp5;
+ while ((a = strchr(a, '%'))) {
/* Yuck! Pingtel converts the '@' to a %40, icky icky! Convert
back to an '@' */
+ if (strlen(a) < 3)
+ break;
*a = hex2int(a[1]) * 16 + hex2int(a[2]);
memmove(a + 1, a+3, strlen(a + 3) + 1);
+ a++;
}
if ((a = strchr(tmp5, '%')))
*a = '\0';