summaryrefslogtreecommitdiff
path: root/src/nm-auth-utils.c
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-05-02 11:37:49 +0200
committerThomas Haller <thaller@redhat.com>2019-05-12 09:56:36 +0200
commit6085ded6f409608420156934f8ddc301ed81c154 (patch)
tree94913586ed7871264287059685a11b8c0096140c /src/nm-auth-utils.c
parent4d79e3276b2ff67c729a4fd3ca611c69064b865d (diff)
downloadNetworkManager-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.c88
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 *