|
@@ -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)
|