Clang warns about null-pointer subtractions, which are undefined
behavior per the C standards. Replace the subtractions with
explicit casts to `uintptr_t`.
---
 libcrypt/sha256-crypt.c | 12 ++++++------
 libcrypt/sha512-crypt.c | 10 +++++-----
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/libcrypt/sha256-crypt.c b/libcrypt/sha256-crypt.c
index 81bbe6ae6..b2ab62e48 100644
--- a/libcrypt/sha256-crypt.c
+++ b/libcrypt/sha256-crypt.c
@@ -104,24 +104,24 @@ __sha256_crypt_r (const char *key,
   salt_len = MIN (strcspn (salt, "$"), SALT_LEN_MAX);
   key_len = strlen (key);
 
-  if ((key - (char *) 0) % __alignof__ (uint32_t) != 0)
+  if ((uintptr_t)key % __alignof__ (uint32_t) != 0)
     {
       char *tmp = (char *) alloca (key_len + __alignof__ (uint32_t));
       key = copied_key =
        memcpy (tmp + __alignof__ (uint32_t)
-               - (tmp - (char *) 0) % __alignof__ (uint32_t),
+               - (uintptr_t)tmp  % __alignof__ (uint32_t),
                key, key_len);
-      assert ((key - (char *) 0) % __alignof__ (uint32_t) == 0);
+      assert ((uintptr_t)key % __alignof__ (uint32_t) == 0);
     }
 
-  if ((salt - (char *) 0) % __alignof__ (uint32_t) != 0)
+  if ((uintptr_t)salt % __alignof__ (uint32_t) != 0)
     {
       char *tmp = (char *) alloca (salt_len + __alignof__ (uint32_t));
       salt = copied_salt =
        memcpy (tmp + __alignof__ (uint32_t)
-               - (tmp - (char *) 0) % __alignof__ (uint32_t),
+               - (uintptr_t)tmp % __alignof__ (uint32_t),
                salt, salt_len);
-      assert ((salt - (char *) 0) % __alignof__ (uint32_t) == 0);
+      assert ((uintptr_t)salt % __alignof__ (uint32_t) == 0);
     }
 
   struct sha256_ctx ctx;
diff --git a/libcrypt/sha512-crypt.c b/libcrypt/sha512-crypt.c
index 9d17255aa..b8984d4ab 100644
--- a/libcrypt/sha512-crypt.c
+++ b/libcrypt/sha512-crypt.c
@@ -104,24 +104,24 @@ __sha512_crypt_r (const char *key,
   salt_len = MIN (strcspn (salt, "$"), SALT_LEN_MAX);
   key_len = strlen (key);
 
-  if ((key - (char *) 0) % __alignof__ (uint64_t) != 0)
+  if ((uintptr_t)key % __alignof__ (uint64_t) != 0)
     {
       char *tmp = (char *) alloca (key_len + __alignof__ (uint64_t));
       key = copied_key =
        memcpy (tmp + __alignof__ (uint64_t)
-               - (tmp - (char *) 0) % __alignof__ (uint64_t),
+               - (uintptr_t)tmp % __alignof__ (uint64_t),
                key, key_len);
       assert ((key - (char *) 0) % __alignof__ (uint64_t) == 0);
     }
 
-  if ((salt - (char *) 0) % __alignof__ (uint64_t) != 0)
+  if ((uintptr_t)salt % __alignof__ (uint64_t) != 0)
     {
       char *tmp = (char *) alloca (salt_len + __alignof__ (uint64_t));
       salt = copied_salt =
        memcpy (tmp + __alignof__ (uint64_t)
-               - (tmp - (char *) 0) % __alignof__ (uint64_t),
+               - (uintptr_t)tmp % __alignof__ (uint64_t),
                salt, salt_len);
-      assert ((salt - (char *) 0) % __alignof__ (uint64_t) == 0);
+      assert ((uintptr_t)salt % __alignof__ (uint64_t) == 0);
     }
 
   struct sha512_ctx ctx;
-- 
2.43.0

_______________________________________________
devel mailing list -- devel@uclibc-ng.org
To unsubscribe send an email to devel-le...@uclibc-ng.org

Reply via email to