From: Paul Moore <hidden> Date: 2012-05-31 20:09:23
When NetLabel is not enabled, e.g. CONFIG_NETLABEL=n, and the system
receives a CIPSO tagged packet it is dropped (cipso_v4_validate()
returns non-zero). In most cases this is the correct and desired
behavior, however, in the case where we are simply forwarding the
traffic, e.g. acting as a network bridge, this becomes a problem.
This patch fixes the forwarding problem by providing the basic CIPSO
validation code directly in ip_options_compile() without the need for
the NetLabel or CIPSO code. The new validation code can not perform
any of the CIPSO option label/value verification that
cipso_v4_validate() does, but it can verify the basic CIPSO option
format.
The behavior when NetLabel is enabled is unchanged.
Signed-off-by: Paul Moore <redacted>
---
net/ipv4/ip_options.c | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
From: David Miller <davem@davemloft.net> Date: 2012-05-31 23:07:05
From: Paul Moore <redacted>
Date: Thu, 31 May 2012 16:09:23 -0400
When NetLabel is not enabled, e.g. CONFIG_NETLABEL=n, and the system
receives a CIPSO tagged packet it is dropped (cipso_v4_validate()
returns non-zero). In most cases this is the correct and desired
behavior, however, in the case where we are simply forwarding the
traffic, e.g. acting as a network bridge, this becomes a problem.
This patch fixes the forwarding problem by providing the basic CIPSO
validation code directly in ip_options_compile() without the need for
the NetLabel or CIPSO code. The new validation code can not perform
any of the CIPSO option label/value verification that
cipso_v4_validate() does, but it can verify the basic CIPSO option
format.
The behavior when NetLabel is enabled is unchanged.
Signed-off-by: Paul Moore <redacted>
I don't like this at all.
The only conclusion I can come to is that cipso_v4_validate() is doing
the wrong thing when NETLABEL is disabled.
There is never a good reason to crap all over a function with ifdefs.
This is especially true when it's being done to paper over a function
with poor semantics.
The whole idea is to abstract and put all of this kind of logic into
cipso_v4_validate().
From: Paul Moore <hidden> Date: 2012-06-01 13:14:44
On Thursday, May 31, 2012 07:07:05 PM David Miller wrote:
From: Paul Moore <redacted>
Date: Thu, 31 May 2012 16:09:23 -0400
quoted
When NetLabel is not enabled, e.g. CONFIG_NETLABEL=n, and the system
receives a CIPSO tagged packet it is dropped (cipso_v4_validate()
returns non-zero). In most cases this is the correct and desired
behavior, however, in the case where we are simply forwarding the
traffic, e.g. acting as a network bridge, this becomes a problem.
This patch fixes the forwarding problem by providing the basic CIPSO
validation code directly in ip_options_compile() without the need for
the NetLabel or CIPSO code. The new validation code can not perform
any of the CIPSO option label/value verification that
cipso_v4_validate() does, but it can verify the basic CIPSO option
format.
The behavior when NetLabel is enabled is unchanged.
Signed-off-by: Paul Moore <redacted>
I don't like this at all.
The only conclusion I can come to is that cipso_v4_validate() is doing
the wrong thing when NETLABEL is disabled.
There is never a good reason to crap all over a function with ifdefs.
This is especially true when it's being done to paper over a function
with poor semantics.
The whole idea is to abstract and put all of this kind of logic into
cipso_v4_validate().
I originally had the #ifdef'd code in the non-CONFIG_NETLABEL
cipso_v4_validate() in include/net/cipso_ipv4.h but thought it was too much
code to put there. No worries, I'll just move it back and resubmit.
--
paul moore
security and virtualization @ redhat