[ovs-dev] [PATCH] encaps: Fix potential null pointer dereferences.

Ben Pfaff blp at ovn.org
Wed Jul 20 21:55:19 UTC 2016


Found by inspection.

Signed-off-by: Ben Pfaff <blp at ovn.org>
---
 ovn/controller/encaps.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/ovn/controller/encaps.c b/ovn/controller/encaps.c
index 03ec732..977cc3a 100644
--- a/ovn/controller/encaps.c
+++ b/ovn/controller/encaps.c
@@ -103,6 +103,10 @@ port_hash_rec(const struct ovsrec_port *port)
 
     iface = port->interfaces[0];
     ip = smap_get(&iface->options, "remote_ip");
+    if (!ip) {
+        /* This should not happen for an OVN-created port. */
+        return 0;
+    }
 
     return port_hash(chassis_id, iface->type, ip);
 }
@@ -314,7 +318,8 @@ check_and_update_tunnel(const struct sbrec_chassis *chassis_rec)
         if (strcmp(encap->type, iface->type)) {
             ovsrec_interface_set_type(iface, encap->type);
         }
-        if (strcmp(encap->ip, smap_get(&iface->options, "remote_ip"))) {
+        const char *ip = smap_get(&iface->options, "remote_ip");
+        if (!ip || strcmp(encap->ip, ip)) {
             struct smap options = SMAP_INITIALIZER(&options);
             smap_add(&options, "remote_ip", encap->ip);
             smap_add(&options, "key", "flow");
@@ -322,8 +327,8 @@ check_and_update_tunnel(const struct sbrec_chassis *chassis_rec)
             smap_destroy(&options);
         }
 
-        if (strcmp(chassis_rec->name, smap_get(&port->external_ids,
-                                               "ovn-chassis-id"))) {
+        const char *chassis = smap_get(&port->external_ids, "ovn-chassis-id");
+        if (!chassis || strcmp(chassis_rec->name, chassis)) {
             const struct smap id = SMAP_CONST1(&id, "ovn-chassis-id",
                                                chassis_rec->name);
             ovsrec_port_set_external_ids(port, &id);
-- 
2.1.3




More information about the dev mailing list