diff options
author | Thomas Haller <thaller@redhat.com> | 2020-04-22 09:32:06 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-04-22 09:49:45 +0200 |
commit | b2a5b179fd131161925a7f2bea1c6b0a973b1a8e (patch) | |
tree | 025513410c79ed8c68f5b5b02fa45b95047c20ce | |
parent | 95ccfdb69adbd20b022c9aa34175b3b56728cda2 (diff) | |
download | NetworkManager-b2a5b179fd131161925a7f2bea1c6b0a973b1a8e.tar.gz |
platform: avoid undefined behavior comparing unrelated pointers in nmp_object_id_cmp()
Pointers cannot in general be compared directly. Cast to an int first
to avoid the undefined behavior.
-rw-r--r-- | src/platform/nmp-object.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/platform/nmp-object.c b/src/platform/nmp-object.c index 541211cdc1..a6aa5e2239 100644 --- a/src/platform/nmp-object.c +++ b/src/platform/nmp-object.c @@ -1405,15 +1405,15 @@ nmp_object_id_cmp (const NMPObject *obj1, const NMPObject *obj2) nm_assert (klass2); NM_CMP_DIRECT (klass->obj_type, klass2->obj_type); /* resort to pointer comparison */ - if (klass < klass2) - return -1; - return 1; + NM_CMP_DIRECT_PTR (klass, klass2); + return 0; } if (!klass->cmd_plobj_id_cmp) { /* the klass doesn't implement ID cmp(). That means, different objects * never compare equal, but the cmp() according to their pointer value. */ - return (obj1 < obj2) ? -1 : 1; + NM_CMP_DIRECT_PTR (obj1, obj2); + return 0; } return klass->cmd_plobj_id_cmp (&obj1->object, &obj2->object); |