From 69860e5d3aa91c1d40b9e8813a8e0565608befb1 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 4 Dec 2014 17:37:04 +0100 Subject: libnm: don't allocate temporary buffer in nm_utils_uuid_generate_from_strings() crypto_md5_sum() already accepts two separate strings: salt and password. No need to allocate a temporary buffer. Just pass @ns_uuid and @s separately. --- libnm-core/nm-utils.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c index 22804b7b30..835937dbdc 100644 --- a/libnm-core/nm-utils.c +++ b/libnm-core/nm-utils.c @@ -1967,38 +1967,30 @@ char * nm_utils_uuid_generate_from_string (const char *s, gssize slen, int uuid_type, gpointer type_args) { uuid_t uuid; - char *buf = NULL; + char *buf; g_return_val_if_fail (slen == 0 || s, FALSE); g_return_val_if_fail (uuid_type == NM_UTILS_UUID_TYPE_LEGACY || uuid_type == NM_UTILS_UUID_TYPE_VARIANT3, NULL); g_return_val_if_fail (!type_args || uuid_type == NM_UTILS_UUID_TYPE_VARIANT3, NULL); - if (slen < 0) - slen = strlen (s); - else if (slen == 0) - s = ""; - switch (uuid_type) { case NM_UTILS_UUID_TYPE_LEGACY: crypto_md5_hash (NULL, 0, s, slen, (char *) uuid, sizeof (uuid)); break; case NM_UTILS_UUID_TYPE_VARIANT3: { uuid_t ns_uuid = { 0 }; - char *str; if (type_args) { /* type_args can be a name space UUID. Interpret it as (char *) */ if (uuid_parse ((char *) type_args, ns_uuid) != 0) g_return_val_if_reached (NULL); } - str = g_new (char, sizeof (ns_uuid) + slen); - memcpy (&str[0], ns_uuid, sizeof (ns_uuid)); - memcpy (&str[sizeof (ns_uuid)], s, slen); - crypto_md5_hash (NULL, 0, str, sizeof (ns_uuid) + slen, (char *) uuid, sizeof (uuid)); + + crypto_md5_hash (s, slen, (char *) ns_uuid, sizeof (ns_uuid), (char *) uuid, sizeof (uuid)); + uuid[6] = (uuid[6] & 0x0F) | 0x30; uuid[8] = (uuid[8] & 0x3F) | 0x80; - g_free (str); break; } default: -- cgit v1.2.1