]> granicus.if.org Git - sudo/commitdiff
Fix symbol name collision with systems that have their own sha2
authorTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 5 Mar 2015 19:27:26 +0000 (12:27 -0700)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 5 Mar 2015 19:27:26 +0000 (12:27 -0700)
implementation.  This can result in PAM using the wrong sha2
implementation on Solaris systems configured to use SHA512 for
passwords.

configure
configure.ac
include/compat/sha2.h

index b233bf9b0133e69ff93ec0ba762dcde9f0e07c71..c3bd87eb0d2f332bb70d8c058b2ce60f6e088bec 100755 (executable)
--- a/configure
+++ b/configure
@@ -19826,7 +19826,7 @@ if test X"$FOUND_SHA2" = X"no"; then
 esac
 
 
-    for _sym in SHA224Final SHA224Init SHA224Pad SHA224Transform SHA224Update SHA256Final SHA256Init SHA256Pad SHA256Transform SHA256Update SHA384Final SHA384Init SHA384Pad SHA384Transform SHA384Update SHA512Final SHA512Init SHA512Pad SHA512Transform SHA512Update; do
+    for _sym in sudo_SHA224Final sudo_SHA224Init sudo_SHA224Pad sudo_SHA224Transform sudo_SHA224Update sudo_SHA256Final sudo_SHA256Init sudo_SHA256Pad sudo_SHA256Transform sudo_SHA256Update sudo_SHA384Final sudo_SHA384Init sudo_SHA384Pad sudo_SHA384Transform sudo_SHA384Update sudo_SHA512Final sudo_SHA512Init sudo_SHA512Pad sudo_SHA512Transform sudo_SHA512Update; do
        COMPAT_EXP="${COMPAT_EXP}${_sym}
 "
     done
index fb6a8773e695497d211ac914607263fcd57a38d5..2f9240db01d4617fb07b8f5d280c615d5da6f53d 100644 (file)
@@ -2609,7 +2609,7 @@ AC_CHECK_HEADER([sha2.h], [
 ])
 if test X"$FOUND_SHA2" = X"no"; then
     AC_LIBOBJ(sha2)
-    SUDO_APPEND_COMPAT_EXP(SHA224Final SHA224Init SHA224Pad SHA224Transform SHA224Update SHA256Final SHA256Init SHA256Pad SHA256Transform SHA256Update SHA384Final SHA384Init SHA384Pad SHA384Transform SHA384Update SHA512Final SHA512Init SHA512Pad SHA512Transform SHA512Update)
+    SUDO_APPEND_COMPAT_EXP(sudo_SHA224Final sudo_SHA224Init sudo_SHA224Pad sudo_SHA224Transform sudo_SHA224Update sudo_SHA256Final sudo_SHA256Init sudo_SHA256Pad sudo_SHA256Transform sudo_SHA256Update sudo_SHA384Final sudo_SHA384Init sudo_SHA384Pad sudo_SHA384Transform sudo_SHA384Update sudo_SHA512Final sudo_SHA512Init sudo_SHA512Pad sudo_SHA512Transform sudo_SHA512Update)
 fi
 dnl
 dnl Function checks for sudo_noexec
index 34e4747000785bf0a623af4028eb418b3a57a863..7c189b81afdbfbb6af41fc370f3eefd98b8a09c1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2014 Todd C. Miller <Todd.Miller@courtesan.com>
+ * Copyright (c) 2013-2015 Todd C. Miller <Todd.Miller@courtesan.com>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -47,28 +47,52 @@ typedef struct {
     uint8_t buffer[SHA512_BLOCK_LENGTH];
 } SHA2_CTX;
 
-__dso_public void SHA224Init(SHA2_CTX *ctx);
-__dso_public void SHA224Pad(SHA2_CTX *ctx);
-__dso_public void SHA224Transform(uint32_t state[8], const uint8_t buffer[SHA224_BLOCK_LENGTH]);
-__dso_public void SHA224Update(SHA2_CTX *ctx, const uint8_t *data, size_t len);
-__dso_public void SHA224Final(uint8_t digest[SHA224_DIGEST_LENGTH], SHA2_CTX *ctx);
-
-__dso_public void SHA256Init(SHA2_CTX *ctx);
-__dso_public void SHA256Pad(SHA2_CTX *ctx);
-__dso_public void SHA256Transform(uint32_t state[8], const uint8_t buffer[SHA256_BLOCK_LENGTH]);
-__dso_public void SHA256Update(SHA2_CTX *ctx, const uint8_t *data, size_t len);
-__dso_public void SHA256Final(uint8_t digest[SHA256_DIGEST_LENGTH], SHA2_CTX *ctx);
-
-__dso_public void SHA384Init(SHA2_CTX *ctx);
-__dso_public void SHA384Pad(SHA2_CTX *ctx);
-__dso_public void SHA384Transform(uint64_t state[8], const uint8_t buffer[SHA384_BLOCK_LENGTH]);
-__dso_public void SHA384Update(SHA2_CTX *ctx, const uint8_t *data, size_t len);
-__dso_public void SHA384Final(uint8_t digest[SHA384_DIGEST_LENGTH], SHA2_CTX *ctx);
-
-__dso_public void SHA512Init(SHA2_CTX *ctx);
-__dso_public void SHA512Pad(SHA2_CTX *ctx);
-__dso_public void SHA512Transform(uint64_t state[8], const uint8_t buffer[SHA512_BLOCK_LENGTH]);
-__dso_public void SHA512Update(SHA2_CTX *ctx, const uint8_t *data, size_t len);
-__dso_public void SHA512Final(uint8_t digest[SHA512_DIGEST_LENGTH], SHA2_CTX *ctx);
+__dso_public void sudo_SHA224Init(SHA2_CTX *ctx);
+__dso_public void sudo_SHA224Pad(SHA2_CTX *ctx);
+__dso_public void sudo_SHA224Transform(uint32_t state[8], const uint8_t buffer[SHA224_BLOCK_LENGTH]);
+__dso_public void sudo_SHA224Update(SHA2_CTX *ctx, const uint8_t *data, size_t len);
+__dso_public void sudo_SHA224Final(uint8_t digest[SHA224_DIGEST_LENGTH], SHA2_CTX *ctx);
+
+#define SHA224Init             sudo_SHA224Init
+#define SHA224Pad              sudo_SHA224Pad
+#define SHA224Transform                sudo_SHA224Transform
+#define SHA224Update           sudo_SHA224Update
+#define SHA224Final            sudo_SHA224Final
+
+__dso_public void sudo_SHA256Init(SHA2_CTX *ctx);
+__dso_public void sudo_SHA256Pad(SHA2_CTX *ctx);
+__dso_public void sudo_SHA256Transform(uint32_t state[8], const uint8_t buffer[SHA256_BLOCK_LENGTH]);
+__dso_public void sudo_SHA256Update(SHA2_CTX *ctx, const uint8_t *data, size_t len);
+__dso_public void sudo_SHA256Final(uint8_t digest[SHA256_DIGEST_LENGTH], SHA2_CTX *ctx);
+
+#define SHA256Init             sudo_SHA256Init
+#define SHA256Pad              sudo_SHA256Pad
+#define SHA256Transform                sudo_SHA256Transform
+#define SHA256Update           sudo_SHA256Update
+#define SHA256Final            sudo_SHA256Final
+
+__dso_public void sudo_SHA384Init(SHA2_CTX *ctx);
+__dso_public void sudo_SHA384Pad(SHA2_CTX *ctx);
+__dso_public void sudo_SHA384Transform(uint64_t state[8], const uint8_t buffer[SHA384_BLOCK_LENGTH]);
+__dso_public void sudo_SHA384Update(SHA2_CTX *ctx, const uint8_t *data, size_t len);
+__dso_public void sudo_SHA384Final(uint8_t digest[SHA384_DIGEST_LENGTH], SHA2_CTX *ctx);
+
+#define SHA384Init             sudo_SHA384Init
+#define SHA384Pad              sudo_SHA384Pad
+#define SHA384Transform                sudo_SHA384Transform
+#define SHA384Update           sudo_SHA384Update
+#define SHA384Final            sudo_SHA384Final
+
+__dso_public void sudo_SHA512Init(SHA2_CTX *ctx);
+__dso_public void sudo_SHA512Pad(SHA2_CTX *ctx);
+__dso_public void sudo_SHA512Transform(uint64_t state[8], const uint8_t buffer[SHA512_BLOCK_LENGTH]);
+__dso_public void sudo_SHA512Update(SHA2_CTX *ctx, const uint8_t *data, size_t len);
+__dso_public void sudo_SHA512Final(uint8_t digest[SHA512_DIGEST_LENGTH], SHA2_CTX *ctx);
+
+#define SHA512Init             sudo_SHA512Init
+#define SHA512Pad              sudo_SHA512Pad
+#define SHA512Transform                sudo_SHA512Transform
+#define SHA512Update           sudo_SHA512Update
+#define SHA512Final            sudo_SHA512Final
 
 #endif /* _SUDOERS_SHA2_H */