diff mbox series

[ovs-dev] meta-flow: Make mf_vl_mff_mf_from_nxm_header() require a valid field.

Message ID 20180731215154.26903-1-blp@ovn.org
State Accepted
Headers show
Series [ovs-dev] meta-flow: Make mf_vl_mff_mf_from_nxm_header() require a valid field. | expand

Commit Message

Ben Pfaff July 31, 2018, 9:51 p.m. UTC
All the users of mf_vl_mff_mf_from_nxm_header() expect it to always obtain
a valid field or to report an error.  In practice, it did not report an
error in the case where the field was unknown (although it did report an
error in some other cases).  This commit fixes the problem.

Reported-at: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9652
Signed-off-by: Ben Pfaff <blp@ovn.org>
---
 lib/meta-flow.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Alin-Gabriel Serdean Aug. 3, 2018, 5:23 p.m. UTC | #1
> 
> All the users of mf_vl_mff_mf_from_nxm_header() expect it to always
> obtain a valid field or to report an error.  In practice, it did not
report an error
> in the case where the field was unknown (although it did report an error
in
> some other cases).  This commit fixes the problem.
> 
> Reported-at: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9652
> Signed-off-by: Ben Pfaff <blp@ovn.org>
> ---
>  lib/meta-flow.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/meta-flow.c b/lib/meta-flow.c index
> fd8f3c6d85ea..b6d9e92b691d 100644
> --- a/lib/meta-flow.c
> +++ b/lib/meta-flow.c
> @@ -3519,7 +3519,9 @@ mf_vl_mff_mf_from_nxm_header(uint32_t
> header,
>                               uint64_t *tlv_bitmap)  {
>      *field = mf_from_nxm_header(header, vl_mff_map);
> -    if (mf_vl_mff_invalid(*field, vl_mff_map)) {
> +    if (!*field) {
> +        return OFPERR_OFPBAC_BAD_SET_TYPE;
> +    } else if (mf_vl_mff_invalid(*field, vl_mff_map)) {
>          return OFPERR_NXFMFC_INVALID_TLV_FIELD;
>      }
> 
> --
> 2.16.1
> 

Acked-by: Alin Gabriel Serdean <aserdean@ovn.org>
Ben Pfaff Aug. 3, 2018, 11:54 p.m. UTC | #2
On Fri, Aug 03, 2018 at 08:23:07PM +0300, aserdean@ovn.org wrote:
> 
> > 
> > All the users of mf_vl_mff_mf_from_nxm_header() expect it to always
> > obtain a valid field or to report an error.  In practice, it did not
> report an error
> > in the case where the field was unknown (although it did report an error
> in
> > some other cases).  This commit fixes the problem.
> > 
> > Reported-at: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9652
> > Signed-off-by: Ben Pfaff <blp@ovn.org>
> > ---
> >  lib/meta-flow.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/lib/meta-flow.c b/lib/meta-flow.c index
> > fd8f3c6d85ea..b6d9e92b691d 100644
> > --- a/lib/meta-flow.c
> > +++ b/lib/meta-flow.c
> > @@ -3519,7 +3519,9 @@ mf_vl_mff_mf_from_nxm_header(uint32_t
> > header,
> >                               uint64_t *tlv_bitmap)  {
> >      *field = mf_from_nxm_header(header, vl_mff_map);
> > -    if (mf_vl_mff_invalid(*field, vl_mff_map)) {
> > +    if (!*field) {
> > +        return OFPERR_OFPBAC_BAD_SET_TYPE;
> > +    } else if (mf_vl_mff_invalid(*field, vl_mff_map)) {
> >          return OFPERR_NXFMFC_INVALID_TLV_FIELD;
> >      }
> > 
> > --
> > 2.16.1
> > 
> 
> Acked-by: Alin Gabriel Serdean <aserdean@ovn.org>

Thanks.  I applied this to master and backported it as far as it would
go.
diff mbox series

Patch

diff --git a/lib/meta-flow.c b/lib/meta-flow.c
index fd8f3c6d85ea..b6d9e92b691d 100644
--- a/lib/meta-flow.c
+++ b/lib/meta-flow.c
@@ -3519,7 +3519,9 @@  mf_vl_mff_mf_from_nxm_header(uint32_t header,
                              uint64_t *tlv_bitmap)
 {
     *field = mf_from_nxm_header(header, vl_mff_map);
-    if (mf_vl_mff_invalid(*field, vl_mff_map)) {
+    if (!*field) {
+        return OFPERR_OFPBAC_BAD_SET_TYPE;
+    } else if (mf_vl_mff_invalid(*field, vl_mff_map)) {
         return OFPERR_NXFMFC_INVALID_TLV_FIELD;
     }