summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2014-12-04 17:37:04 +0100
committerThomas Haller <thaller@redhat.com>2014-12-04 17:44:11 +0100
commit69860e5d3aa91c1d40b9e8813a8e0565608befb1 (patch)
treee4e1b722c5a7448939133814cdd8bec4e19fd94f
parent440b9d85b4c2dee855c845c7a1c25f3e444e320a (diff)
downloadNetworkManager-69860e5d3aa91c1d40b9e8813a8e0565608befb1.tar.gz
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.
-rw-r--r--libnm-core/nm-utils.c16
1 files 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: