summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-apps/util-linux/files/util-linux-2.31-too_generic_symbols_pt1.patch')
-rw-r--r--sys-apps/util-linux/files/util-linux-2.31-too_generic_symbols_pt1.patch207
1 files changed, 207 insertions, 0 deletions
diff --git a/sys-apps/util-linux/files/util-linux-2.31-too_generic_symbols_pt1.patch b/sys-apps/util-linux/files/util-linux-2.31-too_generic_symbols_pt1.patch
new file mode 100644
index 000000000000..aa296d2bf2f3
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.31-too_generic_symbols_pt1.patch
@@ -0,0 +1,207 @@
+From ff5feb96ec70e8a3fde41bd591b28c9855dab3fc Mon Sep 17 00:00:00 2001
+From: Karel Zak <kzak@redhat.com>
+Date: Tue, 12 Dec 2017 11:29:02 +0100
+Subject: [PATCH] lib/sha1: use ul_/UL_prefix for symbols
+
+Unfortunately, the symbols are visible in statically compiled libuuid
+and the names are too generic.
+
+Addresses: https://github.com/karelzak/util-linux/issues/548
+Signed-off-by: Karel Zak <kzak@redhat.com>
+---
+ include/sha1.h | 49 +++++++++++++++----------------------------------
+ lib/sha1.c | 34 +++++++++++++++++-----------------
+ libuuid/src/gen_uuid.c | 12 ++++++------
+ 3 files changed, 38 insertions(+), 57 deletions(-)
+
+diff --git a/include/sha1.h b/include/sha1.h
+index 5c28bce92..62af1da6f 100644
+--- a/include/sha1.h
++++ b/include/sha1.h
+@@ -1,5 +1,5 @@
+-#ifndef SHA1_H
+-#define SHA1_H
++#ifndef UTIL_LINUX_SHA1_H
++#define UTIL_LINUX_SHA1_H
+
+ /*
+ SHA-1 in C
+@@ -9,38 +9,19 @@
+
+ #include "stdint.h"
+
+-#define SHA1LENGTH 20
++#define UL_SHA1LENGTH 20
+
+ typedef struct
+ {
+- uint32_t state[5];
+- uint32_t count[2];
+- unsigned char buffer[64];
+-} SHA1_CTX;
+-
+-void SHA1Transform(
+- uint32_t state[5],
+- const unsigned char buffer[64]
+- );
+-
+-void SHA1Init(
+- SHA1_CTX * context
+- );
+-
+-void SHA1Update(
+- SHA1_CTX * context,
+- const unsigned char *data,
+- uint32_t len
+- );
+-
+-void SHA1Final(
+- unsigned char digest[SHA1LENGTH],
+- SHA1_CTX * context
+- );
+-
+-void SHA1(
+- char *hash_out,
+- const char *str,
+- unsigned len);
+-
+-#endif /* SHA1_H */
++ uint32_t state[5];
++ uint32_t count[2];
++ unsigned char buffer[64];
++} UL_SHA1_CTX;
++
++void ul_SHA1Transform(uint32_t state[5], const unsigned char buffer[64]);
++void ul_SHA1Init(UL_SHA1_CTX *context);
++void ul_SHA1Update(UL_SHA1_CTX *context, const unsigned char *data, uint32_t len);
++void ul_SHA1Final(unsigned char digest[UL_SHA1LENGTH], UL_SHA1_CTX *context);
++void ul_SHA1(char *hash_out, const char *str, unsigned len);
++
++#endif /* UTIL_LINUX_SHA1_H */
+diff --git a/lib/sha1.c b/lib/sha1.c
+index a2ac7f8ef..62c036774 100644
+--- a/lib/sha1.c
++++ b/lib/sha1.c
+@@ -51,7 +51,7 @@ A million repetitions of "a"
+
+ /* Hash a single 512-bit block. This is the core of the algorithm. */
+
+-void SHA1Transform(
++void ul_SHA1Transform(
+ uint32_t state[5],
+ const unsigned char buffer[64]
+ )
+@@ -179,8 +179,8 @@ void SHA1Transform(
+
+ /* SHA1Init - Initialize new context */
+
+-void SHA1Init(
+- SHA1_CTX * context
++void ul_SHA1Init(
++ UL_SHA1_CTX * context
+ )
+ {
+ /* SHA1 initialization constants */
+@@ -195,8 +195,8 @@ void SHA1Init(
+
+ /* Run your data through this. */
+
+-void SHA1Update(
+- SHA1_CTX * context,
++void ul_SHA1Update(
++ UL_SHA1_CTX * context,
+ const unsigned char *data,
+ uint32_t len
+ )
+@@ -213,10 +213,10 @@ void SHA1Update(
+ if ((j + len) > 63)
+ {
+ memcpy(&context->buffer[j], data, (i = 64 - j));
+- SHA1Transform(context->state, context->buffer);
++ ul_SHA1Transform(context->state, context->buffer);
+ for (; i + 63 < len; i += 64)
+ {
+- SHA1Transform(context->state, &data[i]);
++ ul_SHA1Transform(context->state, &data[i]);
+ }
+ j = 0;
+ }
+@@ -228,9 +228,9 @@ void SHA1Update(
+
+ /* Add padding and return the message digest. */
+
+-void SHA1Final(
++void ul_SHA1Final(
+ unsigned char digest[20],
+- SHA1_CTX * context
++ UL_SHA1_CTX * context
+ )
+ {
+ unsigned i;
+@@ -262,13 +262,13 @@ void SHA1Final(
+ }
+ #endif
+ c = 0200;
+- SHA1Update(context, &c, 1);
++ ul_SHA1Update(context, &c, 1);
+ while ((context->count[0] & 504) != 448)
+ {
+ c = 0000;
+- SHA1Update(context, &c, 1);
++ ul_SHA1Update(context, &c, 1);
+ }
+- SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */
++ ul_SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */
+ for (i = 0; i < 20; i++)
+ {
+ digest[i] = (unsigned char)
+@@ -279,18 +279,18 @@ void SHA1Final(
+ memset(&finalcount, '\0', sizeof(finalcount));
+ }
+
+-void SHA1(
++void ul_SHA1(
+ char *hash_out,
+ const char *str,
+ unsigned len)
+ {
+- SHA1_CTX ctx;
++ UL_SHA1_CTX ctx;
+ unsigned int ii;
+
+- SHA1Init(&ctx);
++ ul_SHA1Init(&ctx);
+ for (ii=0; ii<len; ii+=1)
+- SHA1Update(&ctx, (const unsigned char*)str + ii, 1);
+- SHA1Final((unsigned char *)hash_out, &ctx);
++ ul_SHA1Update(&ctx, (const unsigned char*)str + ii, 1);
++ ul_SHA1Final((unsigned char *)hash_out, &ctx);
+ hash_out[20] = '\0';
+ }
+
+diff --git a/libuuid/src/gen_uuid.c b/libuuid/src/gen_uuid.c
+index cf7cacd55..431bf2064 100644
+--- a/libuuid/src/gen_uuid.c
++++ b/libuuid/src/gen_uuid.c
+@@ -589,15 +589,15 @@ void uuid_generate_md5(uuid_t out, const uuid_t ns, const char *name, size_t len
+ */
+ void uuid_generate_sha1(uuid_t out, const uuid_t ns, const char *name, size_t len)
+ {
+- SHA1_CTX ctx;
+- char hash[SHA1LENGTH];
++ UL_SHA1_CTX ctx;
++ char hash[UL_SHA1LENGTH];
+
+- SHA1Init(&ctx);
++ ul_SHA1Init(&ctx);
+ /* hash concatenation of well-known UUID with name */
+- SHA1Update(&ctx, ns, sizeof(uuid_t));
+- SHA1Update(&ctx, (const unsigned char *)name, len);
++ ul_SHA1Update(&ctx, ns, sizeof(uuid_t));
++ ul_SHA1Update(&ctx, (const unsigned char *)name, len);
+
+- SHA1Final((unsigned char *)hash, &ctx);
++ ul_SHA1Final((unsigned char *)hash, &ctx);
+
+ memcpy(out, hash, sizeof(uuid_t));
+