From eba2217ac06dab658526991e93e018b91c92d7b5 Mon Sep 17 00:00:00 2001
From: Kotresh HR <khiremat@redhat.com>
Date: Tue, 19 Dec 2017 00:05:05 -0500
Subject: [PATCH 364/385] fips: Replace md5sum usage to enable fips support
md5sum is not fips compliant. Using xxhash64 instead of
md5sum for socket file generation in glusterd and
changelog to enable fips support.
NOTE: md5sum is 128 bit hash. xxhash used is 64 bit.
Backport of:
> Patch: https://review.gluster.org/19048
> Updates: #230
> Change-Id: I1bf2ea05905b9151cd29fa951f903685ab0dc84c
> Signed-off-by: Kotresh HR <khiremat@redhat.com>
BUG: 1459709
Change-Id: I1bf2ea05905b9151cd29fa951f903685ab0dc84c
Signed-off-by: Kotresh HR <khiremat@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/149770
Tested-by: RHGS Build Bot <nigelb@redhat.com>
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
---
libglusterfs/src/common-utils.c | 11 -----------
libglusterfs/src/common-utils.h | 1 -
xlators/features/changelog/src/changelog-misc.h | 20 ++++++++++----------
xlators/mgmt/glusterd/src/glusterd-utils.c | 8 +++++---
4 files changed, 15 insertions(+), 25 deletions(-)
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c
index fd2f004..f632e78 100644
--- a/libglusterfs/src/common-utils.c
+++ b/libglusterfs/src/common-utils.c
@@ -75,17 +75,6 @@ typedef int32_t (*rw_op_t)(int32_t fd, char *buf, int32_t size);
typedef int32_t (*rwv_op_t)(int32_t fd, const struct iovec *buf, int32_t size);
void
-md5_wrapper(const unsigned char *data, size_t len, char *md5)
-{
- unsigned short i = 0;
- unsigned short lim = MD5_DIGEST_LENGTH*2+1;
- unsigned char scratch[MD5_DIGEST_LENGTH] = {0,};
- MD5(data, len, scratch);
- for (; i < MD5_DIGEST_LENGTH; i++)
- snprintf(md5 + i * 2, lim-i*2, "%02x", scratch[i]);
-}
-
-void
gf_xxh64_wrapper(const unsigned char *data, size_t len, unsigned long long seed,
char *xxh64)
{
diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h
index 0131070..da943f4 100644
--- a/libglusterfs/src/common-utils.h
+++ b/libglusterfs/src/common-utils.h
@@ -835,7 +835,6 @@ gf_ports_reserved (char *blocked_port, unsigned char *ports, uint32_t ceiling);
int gf_get_hostname_from_ip (char *client_ip, char **hostname);
gf_boolean_t gf_is_local_addr (char *hostname);
gf_boolean_t gf_is_same_address (char *host1, char *host2);
-void md5_wrapper(const unsigned char *data, size_t len, char *md5);
void gf_xxh64_wrapper(const unsigned char *data, size_t len,
unsigned long long seed, char *xxh64);
int gf_set_timestamp (const char *src, const char* dest);
diff --git a/xlators/features/changelog/src/changelog-misc.h b/xlators/features/changelog/src/changelog-misc.h
index 94d6c50..93af201 100644
--- a/xlators/features/changelog/src/changelog-misc.h
+++ b/xlators/features/changelog/src/changelog-misc.h
@@ -36,24 +36,24 @@
"GlusterFS Changelog | version: v%d.%d | encoding : %d\n"
#define CHANGELOG_MAKE_SOCKET_PATH(brick_path, sockpath, len) do { \
- char md5_sum[MD5_DIGEST_LENGTH*2+1] = {0,}; \
- md5_wrapper((unsigned char *) brick_path, \
- strlen(brick_path), \
- md5_sum); \
+ char xxh64[GF_XXH64_DIGEST_LENGTH*2+1] = {0,}; \
+ gf_xxh64_wrapper ((unsigned char *)brick_path, \
+ strlen(brick_path), \
+ GF_XXHSUM64_DEFAULT_SEED, xxh64); \
(void) snprintf (sockpath, len, \
- CHANGELOG_UNIX_SOCK, md5_sum); \
+ CHANGELOG_UNIX_SOCK, xxh64); \
} while (0)
#define CHANGELOG_MAKE_TMP_SOCKET_PATH(brick_path, sockpath, len) do { \
unsigned long pid = 0; \
- char md5_sum[MD5_DIGEST_LENGTH*2+1] = {0,}; \
+ char xxh64[GF_XXH64_DIGEST_LENGTH*2+1] = {0,}; \
pid = (unsigned long) getpid (); \
- md5_wrapper((unsigned char *) brick_path, \
- strlen(brick_path), \
- md5_sum); \
+ gf_xxh64_wrapper ((unsigned char *)brick_path, \
+ strlen(brick_path), \
+ GF_XXHSUM64_DEFAULT_SEED, xxh64); \
(void) snprintf (sockpath, \
len, CHANGELOG_TMP_UNIX_SOCK, \
- md5_sum, pid); \
+ xxh64, pid); \
} while (0)
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index 01345cd..4fd8575 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -1852,10 +1852,12 @@ out:
void
glusterd_set_socket_filepath (char *sock_filepath, char *sockpath, size_t len)
{
- char md5_sum[MD5_DIGEST_LENGTH*2+1] = {0,};
+ char xxh64[GF_XXH64_DIGEST_LENGTH*2+1] = {0,};
- md5_wrapper ((unsigned char *) sock_filepath, strlen(sock_filepath), md5_sum);
- snprintf (sockpath, len, "%s/%s.socket", GLUSTERD_SOCK_DIR, md5_sum);
+ gf_xxh64_wrapper ((unsigned char *)sock_filepath,
+ strlen(sock_filepath),
+ GF_XXHSUM64_DEFAULT_SEED, xxh64);
+ snprintf (sockpath, len, "%s/%s.socket", GLUSTERD_SOCK_DIR, xxh64);
}
void
--
1.8.3.1