aboutsummaryrefslogtreecommitdiffstats
path: root/net/xfrm/xfrm_state.c
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2005-04-21 23:12:32 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2005-04-21 23:12:32 -0400
commit5c5d281a93e9816966b6131ccec19519dab0e103 (patch)
treea897ec464a600d7a678052bfd5e52378470a45fe /net/xfrm/xfrm_state.c
parent7938109fff944e0117976a39946d99d2b0b0250d (diff)
[XFRM]: Fix existence lookup in xfrm_state_find
Use 'daddr' instead of &tmpl->id.daddr, since the latter might be zero. Also, only perform the lookup when tmpl->id.spi is non-zero. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/xfrm/xfrm_state.c')
-rw-r--r--net/xfrm/xfrm_state.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index 1db59f11f37d..d11747c2a763 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -357,8 +357,9 @@ xfrm_state_find(xfrm_address_t *daddr, xfrm_address_t *saddr,
357 357
358 x = best; 358 x = best;
359 if (!x && !error && !acquire_in_progress) { 359 if (!x && !error && !acquire_in_progress) {
360 x0 = afinfo->state_lookup(&tmpl->id.daddr, tmpl->id.spi, tmpl->id.proto); 360 if (tmpl->id.spi &&
361 if (x0 != NULL) { 361 (x0 = afinfo->state_lookup(daddr, tmpl->id.spi,
362 tmpl->id.proto)) != NULL) {
362 xfrm_state_put(x0); 363 xfrm_state_put(x0);
363 error = -EEXIST; 364 error = -EEXIST;
364 goto out; 365 goto out;