Rather than crashing when a mod_double is requested, return
`Operation not supported`.

Signed-off-by: Eelco Chaudron <echau...@redhat.com>
---
 ovsdb/mutation.c |   14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/ovsdb/mutation.c b/ovsdb/mutation.c
index cbc71bc49..794560019 100644
--- a/ovsdb/mutation.c
+++ b/ovsdb/mutation.c
@@ -236,7 +236,8 @@ ovsdb_mutation_set_destroy(struct ovsdb_mutation_set *set)
 enum ovsdb_mutation_scalar_error {
     ME_OK,
     ME_DOM,
-    ME_RANGE
+    ME_RANGE,
+    ME_NOTSUP
 };
 
 struct ovsdb_scalar_mutation {
@@ -267,6 +268,9 @@ ovsdb_mutation_scalar_error(enum 
ovsdb_mutation_scalar_error error,
                            "Result of \"%s\" operation is out of range.",
                            ovsdb_mutator_to_string(mutator));
 
+    case ME_NOTSUP:
+        return ovsdb_error(NULL, "Operation not supported.");
+
     default:
         return OVSDB_BUG("unexpected error");
     }
@@ -514,6 +518,12 @@ div_double(double *x, double y)
     }
 }
 
+static int
+mod_double(double *x OVS_UNUSED, double y OVS_UNUSED)
+{
+    return ME_NOTSUP;
+}
+
 static const struct ovsdb_scalar_mutation add_mutation = {
     add_int, add_double, OVSDB_M_ADD
 };
@@ -531,5 +541,5 @@ static const struct ovsdb_scalar_mutation div_mutation = {
 };
 
 static const struct ovsdb_scalar_mutation mod_mutation = {
-    mod_int, NULL, OVSDB_M_MOD
+    mod_int, mod_double, OVSDB_M_MOD
 };

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to