diff options
Diffstat (limited to 'src/libnm-glib-aux/nm-uuid.c')
| -rw-r--r-- | src/libnm-glib-aux/nm-uuid.c | 69 |
1 files changed, 37 insertions, 32 deletions
diff --git a/src/libnm-glib-aux/nm-uuid.c b/src/libnm-glib-aux/nm-uuid.c index 2c6e218a..e7f67c70 100644 --- a/src/libnm-glib-aux/nm-uuid.c +++ b/src/libnm-glib-aux/nm-uuid.c @@ -9,6 +9,13 @@ /*****************************************************************************/ +const NMUuid nm_uuid_ns_zero = + NM_UUID_INIT(00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00); + +/* arbitrarily chosen namespace UUID for nm_uuid_generate_from_strings() */ +const NMUuid nm_uuid_ns_1 = + NM_UUID_INIT(b4, 25, e9, fb, 75, 98, 44, b4, 9e, 3b, 5a, 2e, 3a, aa, 49, 05); + char * nm_uuid_unparse_case(const NMUuid *uuid, char out_str[static 37], gboolean upper_case) { @@ -171,7 +178,7 @@ nm_uuid_is_valid_nmlegacy(const char *str) } /* While we accept here bogus strings as UUIDs, they must contain only - * hexdigits and '-', and they must be eithr 36 or 40 chars long. */ + * hexdigits and '-', and they must be either 36 or 40 chars long. */ if ((num_dashes == 4) && (p - str == 36)) return TRUE; @@ -234,16 +241,20 @@ nm_uuid_is_valid_nm(const char *str, nm_assert(strlen(str) < G_N_ELEMENTS(str_lower)); /* normalize first to lower-case. */ - g_strlcpy(str_lower, str, sizeof(str_lower)); - for (i = 0; str_lower[i]; i++) - str_lower[i] = g_ascii_tolower(str_lower[i]); + for (i = 0; str[i]; i++) { + nm_assert(i < G_N_ELEMENTS(str_lower)); + str_lower[i] = g_ascii_tolower(str[i]); + } + nm_assert(i < G_N_ELEMENTS(str_lower)); + str_lower[i] = '\0'; /* The namespace UUID is chosen randomly. */ - nm_uuid_generate_from_string(&uuid, - str_lower, - -1, - NM_UUID_TYPE_VERSION5, - "4e72f709-ca95-4405-9053-1f43294a618c"); + nm_uuid_generate_from_string( + &uuid, + str_lower, + -1, + NM_UUID_TYPE_VERSION5, + &NM_UUID_INIT(4e, 72, f7, 09, ca, 95, 44, 05, 90, 53, 1f, 43, 29, 4a, 61, 8c)); nm_uuid_unparse(&uuid, out_normalized_str); } return TRUE; @@ -299,11 +310,11 @@ nm_uuid_generate_random_str(char buf[static 37]) * Returns: the input @uuid. This function cannot fail. **/ NMUuid * -nm_uuid_generate_from_string(NMUuid * uuid, - const char *s, - gssize slen, - NMUuidType uuid_type, - gpointer type_args) +nm_uuid_generate_from_string(NMUuid * uuid, + const char * s, + gssize slen, + NMUuidType uuid_type, + const NMUuid *type_args) { g_return_val_if_fail(uuid, FALSE); g_return_val_if_fail(slen == 0 || s, FALSE); @@ -313,26 +324,20 @@ nm_uuid_generate_from_string(NMUuid * uuid, switch (uuid_type) { case NM_UUID_TYPE_LEGACY: - g_return_val_if_fail(!type_args, NULL); + nm_assert(!type_args); nm_crypto_md5_hash(NULL, 0, (guint8 *) s, slen, (guint8 *) uuid, sizeof(*uuid)); break; case NM_UUID_TYPE_VERSION3: case NM_UUID_TYPE_VERSION5: { - NMUuid ns_uuid; - - if (type_args) { - /* type_args can be a name space UUID. Interpret it as (char *) */ - if (!nm_uuid_parse(type_args, &ns_uuid)) - g_return_val_if_reached(NULL); - } else - ns_uuid = (NMUuid){}; + if (!type_args) + type_args = &nm_uuid_ns_zero; if (uuid_type == NM_UUID_TYPE_VERSION3) { nm_crypto_md5_hash((guint8 *) s, slen, - (guint8 *) &ns_uuid, - sizeof(ns_uuid), + (guint8 *) type_args, + sizeof(*type_args), (guint8 *) uuid, sizeof(*uuid)); } else { @@ -343,7 +348,7 @@ nm_uuid_generate_from_string(NMUuid * uuid, } digest; sum = g_checksum_new(G_CHECKSUM_SHA1); - g_checksum_update(sum, (guchar *) &ns_uuid, sizeof(ns_uuid)); + g_checksum_update(sum, (guchar *) type_args, sizeof(*type_args)); g_checksum_update(sum, (guchar *) s, slen); nm_utils_checksum_get_digest(sum, digest.sha1); @@ -377,10 +382,10 @@ nm_uuid_generate_from_string(NMUuid * uuid, * object's #NMSettingConnection:id: property **/ char * -nm_uuid_generate_from_string_str(const char *s, - gssize slen, - NMUuidType uuid_type, - gpointer type_args) +nm_uuid_generate_from_string_str(const char * s, + gssize slen, + NMUuidType uuid_type, + const NMUuid *type_args) { NMUuid uuid; @@ -405,7 +410,7 @@ char * nm_uuid_generate_from_strings(const char *string1, ...) { if (!string1) - return nm_uuid_generate_from_string_str(NULL, 0, NM_UUID_TYPE_VERSION3, NM_UUID_NS1); + return nm_uuid_generate_from_string_str(NULL, 0, NM_UUID_TYPE_VERSION3, &nm_uuid_ns_1); { nm_auto_str_buf NMStrBuf str = NM_STR_BUF_INIT(NM_UTILS_GET_NEXT_REALLOC_SIZE_104, FALSE); @@ -425,6 +430,6 @@ nm_uuid_generate_from_strings(const char *string1, ...) return nm_uuid_generate_from_string_str(nm_str_buf_get_str_unsafe(&str), str.len, NM_UUID_TYPE_VERSION3, - NM_UUID_NS1); + &nm_uuid_ns_1); } } |