From 3a24d2aeb1b6fc64de1041f67c895d7d6d9a002a Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Wed, 19 Dec 2007 23:44:29 -0800 Subject: [PATCH] --- yaml --- r: 75129 b: refs/heads/master c: f398035f2dec0a6150833b0bc105057953594edb h: refs/heads/master i: 75127: ed60416b0d31bf4abbd7c83c4f8823998dad09ba v: v3 --- [refs] | 2 +- trunk/net/key/af_key.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 14039294f62d..da3d0b4bd309 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e0260feddf8a68301c75cdfff9ec251d5851b006 +refs/heads/master: f398035f2dec0a6150833b0bc105057953594edb diff --git a/trunk/net/key/af_key.c b/trunk/net/key/af_key.c index 878039b9557d..26d5e63c4cc5 100644 --- a/trunk/net/key/af_key.c +++ b/trunk/net/key/af_key.c @@ -2784,12 +2784,22 @@ static struct sadb_msg *pfkey_get_base_msg(struct sk_buff *skb, int *errp) static inline int aalg_tmpl_set(struct xfrm_tmpl *t, struct xfrm_algo_desc *d) { - return t->aalgos & (1 << d->desc.sadb_alg_id); + unsigned int id = d->desc.sadb_alg_id; + + if (id >= sizeof(t->aalgos) * 8) + return 0; + + return (t->aalgos >> id) & 1; } static inline int ealg_tmpl_set(struct xfrm_tmpl *t, struct xfrm_algo_desc *d) { - return t->ealgos & (1 << d->desc.sadb_alg_id); + unsigned int id = d->desc.sadb_alg_id; + + if (id >= sizeof(t->ealgos) * 8) + return 0; + + return (t->ealgos >> id) & 1; } static int count_ah_combs(struct xfrm_tmpl *t)