diff options
author | Joseph Sutton <josephsutton@catalyst.net.nz> | 2022-05-11 12:07:43 +1200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2022-06-09 22:49:29 +0000 |
commit | feb36dbebf1f0f48f4d9f2549471d355b4ead788 (patch) | |
tree | b54ff5df21115ce11b642174a098345545d1fff8 /lib | |
parent | a554e2ce53cbee584bf3c0944d466cbdf73dd3b2 (diff) | |
download | samba-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.c | 6 | ||||
-rw-r--r-- | lib/util/samba_util.h | 4 | ||||
-rw-r--r-- | lib/util/util.c | 4 |
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 { |