diff options
author | Thomas Haller <thaller@redhat.com> | 2019-05-02 11:37:49 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-05-12 09:56:36 +0200 |
commit | 6085ded6f409608420156934f8ddc301ed81c154 (patch) | |
tree | 94913586ed7871264287059685a11b8c0096140c /src/nm-auth-utils.c | |
parent | 4d79e3276b2ff67c729a4fd3ca611c69064b865d (diff) | |
download | NetworkManager-6085ded6f409608420156934f8ddc301ed81c154.tar.gz |
auth-chain: cleanup chain-data in NMAuthChain
- consistently name the ChainData variable "chain_data"
- return the ChainData element from _get_data(). This way it
also can be used by nm_auth_chain_steal_data(), which needs
the ChainData element.
Diffstat (limited to 'src/nm-auth-utils.c')
-rw-r--r-- | src/nm-auth-utils.c | 88 |
1 files changed, 44 insertions, 44 deletions
diff --git a/src/nm-auth-utils.c b/src/nm-auth-utils.c index 808dfca23e..6c1998d436 100644 --- a/src/nm-auth-utils.c +++ b/src/nm-auth-utils.c @@ -80,10 +80,7 @@ auth_call_free (AuthCall *call) /*****************************************************************************/ typedef struct { - - /* must be the first field. */ const char *tag; - gpointer data; GDestroyNotify destroy; char tag_data[]; @@ -92,45 +89,47 @@ typedef struct { static ChainData * chain_data_new (const char *tag, gpointer data, GDestroyNotify destroy) { - ChainData *tmp; - gsize l = strlen (tag); - - tmp = g_malloc (sizeof (ChainData) + l + 1); - tmp->tag = &tmp->tag_data[0]; - tmp->data = data; - tmp->destroy = destroy; - memcpy (&tmp->tag_data[0], tag, l + 1); - return tmp; + ChainData *chain_data; + gsize l_p_1; + + nm_assert (tag); + nm_assert (data); + + l_p_1 = strlen (tag) + 1; + chain_data = g_malloc (sizeof (ChainData) + l_p_1); + chain_data->tag = &chain_data->tag_data[0]; + chain_data->data = data; + chain_data->destroy = destroy; + memcpy (&chain_data->tag_data[0], tag, l_p_1); + return chain_data; } static void -chain_data_free (gpointer data) +chain_data_free (ChainData *chain_data) { - ChainData *tmp = data; - - if (tmp->destroy) - tmp->destroy (tmp->data); - g_free (tmp); + if (chain_data->destroy) + chain_data->destroy (chain_data->data); + g_free (chain_data); } -static gpointer +static ChainData * _get_data (NMAuthChain *self, const char *tag) { - ChainData *tmp; - if (!self->data_hash) return NULL; - tmp = g_hash_table_lookup (self->data_hash, &tag); - return tmp ? tmp->data : NULL; + return g_hash_table_lookup (self->data_hash, &tag); } gpointer nm_auth_chain_get_data (NMAuthChain *self, const char *tag) { + ChainData *chain_data; + g_return_val_if_fail (self, NULL); g_return_val_if_fail (tag, NULL); - return _get_data (self, tag); + chain_data = _get_data (self, tag); + return chain_data ? chain_data->data : NULL; } /** @@ -147,24 +146,21 @@ nm_auth_chain_get_data (NMAuthChain *self, const char *tag) gpointer nm_auth_chain_steal_data (NMAuthChain *self, const char *tag) { - ChainData *tmp; - gpointer value = NULL; + ChainData *chain_data; + gpointer value; g_return_val_if_fail (self, NULL); g_return_val_if_fail (tag, NULL); - if (!self->data_hash) - return NULL; - - tmp = g_hash_table_lookup (self->data_hash, &tag); - if (!tmp) + chain_data = _get_data (self, tag); + if (!chain_data) return NULL; - value = tmp->data; + value = chain_data->data; /* Make sure the destroy handler isn't called when freeing */ - tmp->destroy = NULL; - g_hash_table_remove (self->data_hash, tmp); + chain_data->destroy = NULL; + g_hash_table_remove (self->data_hash, chain_data); return value; } @@ -180,14 +176,16 @@ nm_auth_chain_set_data (NMAuthChain *self, if (data == NULL) { if (self->data_hash) g_hash_table_remove (self->data_hash, &tag); - } else { - if (!self->data_hash) { - self->data_hash = g_hash_table_new_full (nm_pstr_hash, nm_pstr_equal, - NULL, chain_data_free); - } - g_hash_table_add (self->data_hash, - chain_data_new (tag, data, data_destroy)); + return; + } + + if (!self->data_hash) { + G_STATIC_ASSERT (G_STRUCT_OFFSET (ChainData, tag) == 0); + self->data_hash = g_hash_table_new_full (nm_pstr_hash, nm_pstr_equal, + NULL, (GDestroyNotify) chain_data_free); } + g_hash_table_add (self->data_hash, + chain_data_new (tag, data, data_destroy)); } /*****************************************************************************/ @@ -195,13 +193,15 @@ nm_auth_chain_set_data (NMAuthChain *self, NMAuthCallResult nm_auth_chain_get_result (NMAuthChain *self, const char *permission) { - gpointer data; + ChainData *chain_data; g_return_val_if_fail (self, NM_AUTH_CALL_RESULT_UNKNOWN); g_return_val_if_fail (permission, NM_AUTH_CALL_RESULT_UNKNOWN); - data = _get_data (self, permission); - return data ? GPOINTER_TO_UINT (data) : NM_AUTH_CALL_RESULT_UNKNOWN; + chain_data = _get_data (self, permission); + return chain_data + ? (NMAuthCallResult) GPOINTER_TO_UINT (chain_data->data) + : NM_AUTH_CALL_RESULT_UNKNOWN; } NMAuthSubject * |