Skip to content

Commit

Permalink
[NETFILTER]: SIP conntrack: fix skipping over user info in SIP headers
Browse files Browse the repository at this point in the history
When trying to skip over the username in the Contact header, stop at the
end of the line if no @ is found to avoid mangling following headers.
We don't need to worry about continuation lines because we search inside
a SIP URI.

Fixes Netfilter Bugzilla #532.

Signed-off-by: Lars Immisch <lars@ibp.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Lars Immisch authored and David S. Miller committed Jan 30, 2007
1 parent fb74a84 commit 7da5bfb
Showing 2 changed files with 14 additions and 2 deletions.
8 changes: 7 additions & 1 deletion net/ipv4/netfilter/ip_conntrack_sip.c
Original file line number Diff line number Diff line change
@@ -283,8 +283,14 @@ static int skp_epaddr_len(const char *dptr, const char *limit, int *shift)
{
int s = *shift;

for (; dptr <= limit && *dptr != '@'; dptr++)
/* Search for @, but stop at the end of the line.
* We are inside a sip: URI, so we don't need to worry about
* continuation lines. */
while (dptr <= limit &&
*dptr != '@' && *dptr != '\r' && *dptr != '\n') {
(*shift)++;
dptr++;
}

if (*dptr == '@') {
dptr++;
8 changes: 7 additions & 1 deletion net/netfilter/nf_conntrack_sip.c
Original file line number Diff line number Diff line change
@@ -303,8 +303,14 @@ static int skp_epaddr_len(struct nf_conn *ct, const char *dptr,
{
int s = *shift;

for (; dptr <= limit && *dptr != '@'; dptr++)
/* Search for @, but stop at the end of the line.
* We are inside a sip: URI, so we don't need to worry about
* continuation lines. */
while (dptr <= limit &&
*dptr != '@' && *dptr != '\r' && *dptr != '\n') {
(*shift)++;
dptr++;
}

if (*dptr == '@') {
dptr++;

0 comments on commit 7da5bfb

Please sign in to comment.