[ovs-dev] [PATCH] odp-util: Fix parsing corner case for encap_nsh() actions.
Ben Pfaff
blp at ovn.org
Tue Nov 28 18:20:32 UTC 2017
When nothing matched, the code would loop forever.
Found with libfuzzer.
Reported-by: Bhargava Shastry <bshastry at sec.t-labs.tu-berlin.de>
Signed-off-by: Ben Pfaff <blp at ovn.org>
---
lib/odp-util.c | 2 ++
tests/odp.at | 8 ++++++++
2 files changed, 10 insertions(+)
diff --git a/lib/odp-util.c b/lib/odp-util.c
index 45a890c46aa0..3e30b9ae7719 100644
--- a/lib/odp-util.c
+++ b/lib/odp-util.c
@@ -1870,6 +1870,8 @@ parse_odp_encap_nsh_action(const char *s, struct ofpbuf *actions)
}
continue;
}
+
+ return -EINVAL;
}
out:
if (ret < 0) {
diff --git a/tests/odp.at b/tests/odp.at
index cd01b32d72ef..1a80322890eb 100644
--- a/tests/odp.at
+++ b/tests/odp.at
@@ -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
--
2.10.2
More information about the dev
mailing list