summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJoseph Sutton <josephsutton@catalyst.net.nz>2022-05-11 12:07:43 +1200
committerAndrew Bartlett <abartlet@samba.org>2022-06-09 22:49:29 +0000
commitfeb36dbebf1f0f48f4d9f2549471d355b4ead788 (patch)
treeb54ff5df21115ce11b642174a098345545d1fff8 /lib
parenta554e2ce53cbee584bf3c0944d466cbdf73dd3b2 (diff)
downloadsamba-feb36dbebf1f0f48f4d9f2549471d355b4ead788.tar.gz
lib/util: Change function to mem_equal_const_time()
Since memcmp_const_time() doesn't act as an exact replacement for memcmp(), and its return value is only ever compared with zero, simplify it and emphasize the intention of checking equality by returning a bool instead. Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/util/data_blob.c6
-rw-r--r--lib/util/samba_util.h4
-rw-r--r--lib/util/util.c4
3 files changed, 7 insertions, 7 deletions
diff --git a/lib/util/data_blob.c b/lib/util/data_blob.c
index 3dccdc1c58a..677f7c19211 100644
--- a/lib/util/data_blob.c
+++ b/lib/util/data_blob.c
@@ -136,7 +136,7 @@ contents of either blob.
**/
_PUBLIC_ bool data_blob_equal_const_time(const DATA_BLOB *d1, const DATA_BLOB *d2)
{
- int ret;
+ bool ret;
if (d1->data == NULL && d2->data != NULL) {
return false;
}
@@ -149,8 +149,8 @@ _PUBLIC_ bool data_blob_equal_const_time(const DATA_BLOB *d1, const DATA_BLOB *d
if (d1->data == d2->data) {
return true;
}
- ret = memcmp_const_time(d1->data, d2->data, d1->length);
- return ret == 0;
+ ret = mem_equal_const_time(d1->data, d2->data, d1->length);
+ return ret;
}
/**
diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h
index ca185909997..ac185cc06c5 100644
--- a/lib/util/samba_util.h
+++ b/lib/util/samba_util.h
@@ -321,9 +321,9 @@ _PUBLIC_ bool conv_str_u64(const char * str, uint64_t * val);
*
* @param[in] n The length of the memory to comapre.
*
- * @return 0 when the memory regions are equal, 0 if not.
+ * @return true when the memory regions are equal, false if not.
*/
-_PUBLIC_ int memcmp_const_time(const void *s1, const void *s2, size_t n);
+_PUBLIC_ bool mem_equal_const_time(const void *s1, const void *s2, size_t n);
/**
* @brief Build up a string buffer, handle allocation failure
diff --git a/lib/util/util.c b/lib/util/util.c
index 1cf3ff4e525..f039452976f 100644
--- a/lib/util/util.c
+++ b/lib/util/util.c
@@ -1097,7 +1097,7 @@ _PUBLIC_ size_t ascii_len_n(const char *src, size_t n)
return len;
}
-_PUBLIC_ int memcmp_const_time(const void *s1, const void *s2, size_t n)
+_PUBLIC_ bool mem_equal_const_time(const void *s1, const void *s2, size_t n)
{
const uint8_t *p1 = s1, *p2 = s2;
size_t i, sum = 0;
@@ -1106,7 +1106,7 @@ _PUBLIC_ int memcmp_const_time(const void *s1, const void *s2, size_t n)
sum |= (p1[i] ^ p2[i]);
}
- return sum != 0;
+ return sum == 0;
}
struct anonymous_shared_header {