diff options
-rw-r--r-- | net/netfilter/nf_conntrack_sip.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/netfilter/nf_conntrack_sip.c b/net/netfilter/nf_conntrack_sip.c index 5cc9636e46e9..d449fa47491c 100644 --- a/net/netfilter/nf_conntrack_sip.c +++ b/net/netfilter/nf_conntrack_sip.c | |||
@@ -295,6 +295,7 @@ static int epaddr_len(struct nf_conn *ct, const char *dptr, | |||
295 | static int skp_epaddr_len(struct nf_conn *ct, const char *dptr, | 295 | static int skp_epaddr_len(struct nf_conn *ct, const char *dptr, |
296 | const char *limit, int *shift) | 296 | const char *limit, int *shift) |
297 | { | 297 | { |
298 | const char *start = dptr; | ||
298 | int s = *shift; | 299 | int s = *shift; |
299 | 300 | ||
300 | /* Search for @, but stop at the end of the line. | 301 | /* Search for @, but stop at the end of the line. |
@@ -309,8 +310,10 @@ static int skp_epaddr_len(struct nf_conn *ct, const char *dptr, | |||
309 | if (dptr <= limit && *dptr == '@') { | 310 | if (dptr <= limit && *dptr == '@') { |
310 | dptr++; | 311 | dptr++; |
311 | (*shift)++; | 312 | (*shift)++; |
312 | } else | 313 | } else { |
314 | dptr = start; | ||
313 | *shift = s; | 315 | *shift = s; |
316 | } | ||
314 | 317 | ||
315 | return epaddr_len(ct, dptr, limit, shift); | 318 | return epaddr_len(ct, dptr, limit, shift); |
316 | } | 319 | } |