]> git.proxmox.com Git - mirror_ovs.git/commitdiff
odp-util: Fix parsing corner case for encap_nsh() actions.
authorBen Pfaff <blp@ovn.org>
Tue, 28 Nov 2017 18:20:32 +0000 (10:20 -0800)
committerBen Pfaff <blp@ovn.org>
Fri, 1 Dec 2017 16:43:52 +0000 (08:43 -0800)
When nothing matched, the code would loop forever.

Found with libfuzzer.

Reported-by: Bhargava Shastry <bshastry@sec.t-labs.tu-berlin.de>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Jan Scheurich <jan.scheurich@ericsson.com>
lib/odp-util.c
tests/odp.at

index 45a890c46aa0ad264d2099a90e40494298fa0354..ab48b1a5fa128892fcde2273cede930384a39ae0 100644 (file)
@@ -1870,6 +1870,9 @@ parse_odp_encap_nsh_action(const char *s, struct ofpbuf *actions)
             }
             continue;
         }
+
+        ret = -EINVAL;
+        goto out;
     }
 out:
     if (ret < 0) {
index cd01b32d72ef3f46ee0b8c0ec3c0714c7c2a8af5..1a80322890eb4716479b9fcc4395f96edc661dba 100644 (file)
@@ -362,3 +362,11 @@ AT_CHECK_UNQUOTED([ovstest test-odp parse-actions < actions.txt], [0],
   [`cat actions.txt`
 ])
 AT_CLEANUP
+
+AT_SETUP([OVS datapath actions parsing and formatting - invalid forms])
+dnl This caused a hang in older versions.
+AT_CHECK([echo 'encap_nsh@:{@' | ovstest test-odp parse-actions
+], [0], [dnl
+odp_actions_from_string: error
+])
+AT_CLEANUP