From: Douglas Bagnall Date: Wed, 3 Apr 2024 22:07:06 +0000 (+1300) Subject: util:datablob: avoid non-transitive comparison in data_blob_cmp() X-Git-Tag: ldb-2.8.1~42 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=fe804401b9b165e5c6423f00f78372067af43e90;p=thirdparty%2Fsamba.git util:datablob: avoid non-transitive comparison in data_blob_cmp() BUG: https://bugzilla.samba.org/show_bug.cgi?id=15625 Signed-off-by: Douglas Bagnall Reviewed-by: Andrew Bartlett (backported from commit e1519c3667841ce27b15983eae378799ef9936f7) [dbagnall@samba.org: changed in master for conditional ACEs] --- diff --git a/lib/util/data_blob.c b/lib/util/data_blob.c index 677f7c19211..687b6c8d3d5 100644 --- a/lib/util/data_blob.c +++ b/lib/util/data_blob.c @@ -22,6 +22,7 @@ #include "attr.h" #include "data_blob.h" #include "lib/util/samba_util.h" +#include "lib/util/tsort.h" const DATA_BLOB data_blob_null = { NULL, 0 }; @@ -121,11 +122,11 @@ _PUBLIC_ int data_blob_cmp(const DATA_BLOB *d1, const DATA_BLOB *d2) return 1; } if (d1->data == d2->data) { - return d1->length - d2->length; + return NUMERIC_CMP(d1->length, d2->length); } ret = memcmp(d1->data, d2->data, MIN(d1->length, d2->length)); if (ret == 0) { - return d1->length - d2->length; + return NUMERIC_CMP(d1->length, d2->length); } return ret; }