xfrm: do not leak ESRCH to user space
I noticed that, under certain conditions, ESRCH can be leaked from the xfrm layer to user space through sys_connect. In particular, this seems to happen reliably when the kernel fails to resolve a template either because the AF_KEY receive buffer being used by racoon is full or because the SA entry we are trying to use is in XFRM_STATE_EXPIRED state. However, since this could be a transient issue it could be argued that EAGAIN would be more appropriate. Besides this error code is not even documented in the man page for sys_connect (as of man-pages 3.07). Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3a8af72249
commit
a432226614
|
@ -1251,6 +1251,8 @@ xfrm_tmpl_resolve_one(struct xfrm_policy *policy, struct flowi *fl,
|
|||
-EINVAL : -EAGAIN);
|
||||
xfrm_state_put(x);
|
||||
}
|
||||
else if (error == -ESRCH)
|
||||
error = -EAGAIN;
|
||||
|
||||
if (!tmpl->optional)
|
||||
goto fail;
|
||||
|
|
Loading…
Reference in New Issue