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 | } |
