mirror of https://github.com/sipwise/kamailio.git
Change-Id: Ia35d3f475fde6dbb53f709991b72aa8a06b3ad77mr11.0
parent
a988420434
commit
809ae67243
@ -0,0 +1,77 @@
|
||||
From: Sipwise Development Team <support@sipwise.com>
|
||||
Date: Thu, 28 Apr 2022 08:54:05 +0200
|
||||
Subject: pv_headers-use-memset
|
||||
|
||||
---
|
||||
src/modules/pv_headers/pvh_func.c | 26 +++++++++++++-------------
|
||||
1 file changed, 13 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/src/modules/pv_headers/pvh_func.c b/src/modules/pv_headers/pvh_func.c
|
||||
index c2a3f98..bc415b9 100644
|
||||
--- a/src/modules/pv_headers/pvh_func.c
|
||||
+++ b/src/modules/pv_headers/pvh_func.c
|
||||
@@ -383,13 +383,13 @@ int pvh_header_param_exists(struct sip_msg *msg, str *hname, str *hvalue)
|
||||
|
||||
int pvh_remove_header_param(struct sip_msg *msg, int idx, str *hname, str *elements, str *toRemove)
|
||||
{
|
||||
+ int notTarget, writtenChars;
|
||||
int offset = 0;
|
||||
int ret = -1;
|
||||
char *next_token;
|
||||
char *token;
|
||||
char *result = (char*)pkg_malloc(elements->len - toRemove->len);
|
||||
- char *t = (char*)pkg_malloc(elements->len);
|
||||
- int maxSize = elements->len;
|
||||
+ char *t = (char*)pkg_malloc(elements->len+1);
|
||||
|
||||
if (result == NULL || t == NULL)
|
||||
{
|
||||
@@ -397,37 +397,37 @@ int pvh_remove_header_param(struct sip_msg *msg, int idx, str *hname, str *eleme
|
||||
goto clean;
|
||||
}
|
||||
|
||||
- snprintf(result, elements->len - toRemove->len, "%*s", elements->len - toRemove->len, "");
|
||||
- snprintf(t, elements->len+1, "%s", elements->s);
|
||||
+ memset(result, 32, elements->len - toRemove->len);
|
||||
+ snprintf(t, elements->len, "%s", elements->s);
|
||||
|
||||
token = strtok_r(t, ", ", &next_token);
|
||||
while(token)
|
||||
{
|
||||
- int notTarget = strncmp(token, toRemove->s, toRemove->len);
|
||||
+ notTarget = strncmp(token, toRemove->s, toRemove->len);
|
||||
if (notTarget)
|
||||
{
|
||||
- int n = snprintf(result + offset, maxSize - offset, "%s", token);
|
||||
- if (n < 0 || n >= maxSize - offset)
|
||||
+ writtenChars = snprintf(result + offset, elements->len - offset, "%s", token);
|
||||
+ if (writtenChars < 0 || writtenChars >= elements->len - offset)
|
||||
{
|
||||
break;
|
||||
}
|
||||
- offset += n;
|
||||
+ offset += writtenChars;
|
||||
}
|
||||
token = strtok_r(NULL, ", ", &next_token);
|
||||
- if (token && notTarget && maxSize - offset - toRemove->len > 2)
|
||||
+ if (token && notTarget && elements->len - offset - toRemove->len > 2)
|
||||
{
|
||||
- int n = snprintf(result + offset, maxSize - offset, ", ");
|
||||
- if (n < 0 || n >= maxSize - offset)
|
||||
+ writtenChars = snprintf(result + offset, elements->len - offset, ", ");
|
||||
+ if (writtenChars < 0 || writtenChars >= elements->len - offset)
|
||||
{
|
||||
break;
|
||||
}
|
||||
- offset += n;
|
||||
+ offset += writtenChars;
|
||||
}
|
||||
}
|
||||
|
||||
if (elements->len-toRemove->len > 0)
|
||||
{
|
||||
- snprintf(elements->s, elements->len, "%*s", elements->len-toRemove->len, "");
|
||||
+ memset(elements->s, 32, elements->len-toRemove->len);
|
||||
snprintf(elements->s, (strlen(result)%elements->len)+1, "%s", result);
|
||||
elements->len = strlen(result);
|
||||
ret = 1;
|
||||
Loading…
Reference in new issue