From: Andrea Zagli Date: Thu, 14 Aug 2025 07:54:03 +0000 (+0200) Subject: Memory leak. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=99afc06f8348509102d32ccd828d380bd1f55cc6;p=zakautho%2Flibzakautho Memory leak. --- diff --git a/docs/reference/autoz-undeclared.txt b/docs/reference/autoz-undeclared.txt deleted file mode 100644 index e69de29..0000000 diff --git a/docs/reference/autoz-undocumented.txt b/docs/reference/autoz-undocumented.txt deleted file mode 100644 index 945bc29..0000000 --- a/docs/reference/autoz-undocumented.txt +++ /dev/null @@ -1,59 +0,0 @@ -2% symbol docs coverage. -1 symbols documented. -5 symbols incomplete. -51 not documented. - - -AUTOZ -AUTOZ_CLASS -AUTOZ_GET_CLASS -Autoz -AutozClass () -AutozIResource -AutozIResourceIface () -AutozIRole -AutozIRoleIface () -AutozResource -AutozResourceClass () -AutozRole -AutozRoleClass () -IS_AUTOZ -IS_AUTOZ_CLASS -TYPE_AUTOZ -autoz_add_parent_to_resource -autoz_add_parent_to_role -autoz_add_parents_to_resource -autoz_add_parents_to_role -autoz_add_resource -autoz_add_resource_with_parents -autoz_add_role -autoz_add_role_with_parents -autoz_allow -autoz_clear -autoz_deny -autoz_get_resource_from_id -autoz_get_role_from_id -autoz_get_type -autoz_get_xml -autoz_iresource_get_resource_id -autoz_irole_get_role_id -autoz_is_allowed -autoz_load_fro_xml -autoz_load_from_db -autoz_new -autoz_resource_is_child -autoz_resource_new -autoz_role_is_child -autoz_role_new -autoz_save_to_db - - -autoz:Short_Description -resource:Long_Description -resource:Short_Description -resource_interface:Long_Description -resource_interface:Short_Description -role:Long_Description -role:Short_Description -role_interface:Long_Description -role_interface:Short_Description diff --git a/docs/reference/autoz-unused.txt b/docs/reference/autoz-unused.txt deleted file mode 100644 index a3dce13..0000000 --- a/docs/reference/autoz-unused.txt +++ /dev/null @@ -1,12 +0,0 @@ -autoz_add_parent_to_resource -autoz_add_parent_to_role -autoz_add_parents_to_resource -autoz_add_parents_to_role -autoz_clear -autoz_deny -autoz_get_xml -autoz_load_from_db -autoz_load_from_xml -autoz_resource_is_child -autoz_role_is_child -autoz_save_to_db diff --git a/docs/reference/autoz.args b/docs/reference/autoz.args deleted file mode 100644 index e69de29..0000000 diff --git a/docs/reference/autoz.hierarchy b/docs/reference/autoz.hierarchy deleted file mode 100644 index c92c2ab..0000000 --- a/docs/reference/autoz.hierarchy +++ /dev/null @@ -1,8 +0,0 @@ -GObject - Autoz - AutozResource - AutozRole -GInterface - GTypePlugin - AutozIResource - AutozIRole diff --git a/docs/reference/autoz.interfaces b/docs/reference/autoz.interfaces deleted file mode 100644 index 642b295..0000000 --- a/docs/reference/autoz.interfaces +++ /dev/null @@ -1,2 +0,0 @@ -AutozResource AutozIResource -AutozRole AutozIRole diff --git a/docs/reference/autoz.prerequisites b/docs/reference/autoz.prerequisites deleted file mode 100644 index 8b67f96..0000000 --- a/docs/reference/autoz.prerequisites +++ /dev/null @@ -1,2 +0,0 @@ -AutozIResource GObject -AutozIRole GObject diff --git a/docs/reference/autoz.signals b/docs/reference/autoz.signals deleted file mode 100644 index e69de29..0000000 diff --git a/src/autho.c b/src/autho.c index e97e740..06919e5 100644 --- a/src/autho.c +++ b/src/autho.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2016 Andrea Zagli + * Copyright (C) 2010-2024 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -821,8 +821,9 @@ zak_autho_allow (ZakAutho *zak_autho, ZakAuthoIRole *irole, ZakAuthoIResource *i if (g_hash_table_lookup (priv->rules_allow, str_id) == NULL) { - g_hash_table_insert (priv->rules_allow, str_id, r); + g_hash_table_insert (priv->rules_allow, g_strdup (str_id), r); } + g_free (str_id); } /** @@ -883,8 +884,9 @@ zak_autho_deny (ZakAutho *zak_autho, ZakAuthoIRole *irole, ZakAuthoIResource *ir if (g_hash_table_lookup (priv->rules_deny, str_id) == NULL) { - g_hash_table_insert (priv->rules_deny, str_id, r); + g_hash_table_insert (priv->rules_deny, g_strdup (str_id), r); } + g_free (str_id); } static ZakAuthoIsAllowed @@ -907,14 +909,17 @@ _zak_autho_is_allowed_role (ZakAutho *zak_autho, Role *role, Resource *resource, if (g_hash_table_lookup (priv->rules_deny, str_id) != NULL) { + g_free (str_id); ret = ZAK_AUTHO_DENIED; return ret; } if (g_hash_table_lookup (priv->rules_allow, str_id) != NULL) { + g_free (str_id); ret = ZAK_AUTHO_ALLOWED; return ret; } + g_free (str_id); } /* and after for specific resource */ @@ -925,14 +930,17 @@ _zak_autho_is_allowed_role (ZakAutho *zak_autho, Role *role, Resource *resource, if (g_hash_table_lookup (priv->rules_deny, str_id) != NULL) { + g_free (str_id); ret = ZAK_AUTHO_DENIED; return ret; } if (g_hash_table_lookup (priv->rules_allow, str_id) != NULL) { + g_free (str_id); ret = ZAK_AUTHO_ALLOWED; return ret; } + g_free (str_id); if (ret == ZAK_AUTHO_NOT_FOUND && resource->parents != NULL) { @@ -991,16 +999,20 @@ _zak_autho_is_allowed_resource (ZakAutho *zak_autho, Role *role, Resource *resou if (g_hash_table_lookup (priv->rules_deny, str_id) != NULL) { + g_free (str_id); ret = ZAK_AUTHO_DENIED; return ret; } else if (g_hash_table_lookup (priv->rules_allow, str_id) != NULL) { + g_free (str_id); ret = ZAK_AUTHO_ALLOWED; return ret; } else if (resource->parents != NULL) { + g_free (str_id); + /* trying parents */ GList *parents; @@ -1118,14 +1130,17 @@ zak_autho_is_allowed (ZakAutho *zak_autho, ZakAuthoIRole *irole, ZakAuthoIResour if (g_hash_table_lookup (priv->rules_deny, str_id) != NULL) { + g_free (str_id); ret = FALSE; return ret; } if (g_hash_table_lookup (priv->rules_allow, str_id) != NULL) { + g_free (str_id); ret = TRUE; return ret; } + g_free (str_id); } g_return_val_if_fail (ZAK_AUTHO_IS_IRESOURCE (iresource), FALSE); @@ -1145,14 +1160,17 @@ zak_autho_is_allowed (ZakAutho *zak_autho, ZakAuthoIRole *irole, ZakAuthoIResour if (g_hash_table_lookup (priv->rules_deny, str_id) != NULL) { + g_free (str_id); ret = FALSE; return ret; } if (g_hash_table_lookup (priv->rules_allow, str_id) != NULL) { + g_free (str_id); ret = TRUE; return ret; } + g_free (str_id); if (!ret && resource->parents != NULL) { @@ -2042,9 +2060,11 @@ zak_autho_load_from_db (ZakAutho *zak_autho, GdaConnection *gdacon, const gchar rows = gda_data_model_get_n_rows (dm); for (row = 0; row < rows; row++) { + gchar *role = gda_value_stringify (gda_data_model_get_value_at (dm, 0, row, &error)); error = NULL; - irole = ZAK_AUTHO_IROLE (zak_autho_role_new (gda_value_stringify (gda_data_model_get_value_at (dm, 0, row, &error)))); + irole = ZAK_AUTHO_IROLE (zak_autho_role_new (role)); zak_autho_add_role (zak_autho, irole); + g_free (role); } } else if (error != NULL) @@ -2053,7 +2073,10 @@ zak_autho_load_from_db (ZakAutho *zak_autho, GdaConnection *gdacon, const gchar prefix, error->message != NULL ? error->message : "no details"); } - g_object_unref (dm); + if (dm != NULL) + { + g_object_unref (dm); + } /* roles parents */ error = NULL; @@ -2072,11 +2095,15 @@ zak_autho_load_from_db (ZakAutho *zak_autho, GdaConnection *gdacon, const gchar rows = gda_data_model_get_n_rows (dm); for (row = 0; row < rows; row++) { + gchar *role = gda_value_stringify (gda_data_model_get_value_at (dm, 0, row, &error)); error = NULL; - irole = ZAK_AUTHO_IROLE (zak_autho_role_new (gda_value_stringify (gda_data_model_get_value_at (dm, 0, row, &error)))); + irole = ZAK_AUTHO_IROLE (zak_autho_role_new (role)); + g_free (role); + role = gda_value_stringify (gda_data_model_get_value_at (dm, 1, row, &error)); error = NULL; - irole_parent = ZAK_AUTHO_IROLE (zak_autho_role_new (gda_value_stringify (gda_data_model_get_value_at (dm, 1, row, &error)))); + irole_parent = ZAK_AUTHO_IROLE (zak_autho_role_new (role)); zak_autho_add_parent_to_role (zak_autho, irole, irole_parent); + g_free (role); } } else if (error != NULL) @@ -2085,7 +2112,10 @@ zak_autho_load_from_db (ZakAutho *zak_autho, GdaConnection *gdacon, const gchar prefix, error->message != NULL ? error->message : "no details"); } - g_object_unref (dm); + if (dm != NULL) + { + g_object_unref (dm); + } /* resources */ error = NULL; @@ -2099,8 +2129,10 @@ zak_autho_load_from_db (ZakAutho *zak_autho, GdaConnection *gdacon, const gchar for (row = 0; row < rows; row++) { error = NULL; - iresource = ZAK_AUTHO_IRESOURCE (zak_autho_resource_new (gda_value_stringify (gda_data_model_get_value_at (dm, 0, row, &error)))); + gchar *resource = gda_value_stringify (gda_data_model_get_value_at (dm, 0, row, &error)); + iresource = ZAK_AUTHO_IRESOURCE (zak_autho_resource_new (resource)); zak_autho_add_resource (zak_autho, iresource); + g_free (resource); } } else if (error != NULL) @@ -2109,7 +2141,10 @@ zak_autho_load_from_db (ZakAutho *zak_autho, GdaConnection *gdacon, const gchar prefix, error->message != NULL ? error->message : "no details"); } - g_object_unref (dm); + if (dm != NULL) + { + g_object_unref (dm); + } /* resources parents */ error = NULL; @@ -2128,11 +2163,15 @@ zak_autho_load_from_db (ZakAutho *zak_autho, GdaConnection *gdacon, const gchar rows = gda_data_model_get_n_rows (dm); for (row = 0; row < rows; row++) { + gchar *resource = gda_value_stringify (gda_data_model_get_value_at (dm, 0, row, &error)); error = NULL; - iresource = ZAK_AUTHO_IRESOURCE (zak_autho_resource_new (gda_value_stringify (gda_data_model_get_value_at (dm, 0, row, &error)))); + iresource = ZAK_AUTHO_IRESOURCE (zak_autho_resource_new (resource)); + g_free (resource); + resource = gda_value_stringify (gda_data_model_get_value_at (dm, 1, row, &error)); error = NULL; - iresource_parent = ZAK_AUTHO_IRESOURCE (zak_autho_resource_new (gda_value_stringify (gda_data_model_get_value_at (dm, 1, row, &error)))); + iresource_parent = ZAK_AUTHO_IRESOURCE (zak_autho_resource_new (resource)); zak_autho_add_parent_to_resource (zak_autho, iresource, iresource_parent); + g_free (resource); } } else if (error != NULL) @@ -2141,7 +2180,10 @@ zak_autho_load_from_db (ZakAutho *zak_autho, GdaConnection *gdacon, const gchar prefix, error->message != NULL ? error->message : "no details"); } - g_object_unref (dm); + if (dm != NULL) + { + g_object_unref (dm); + } /* rules */ error = NULL; @@ -2170,6 +2212,7 @@ zak_autho_load_from_db (ZakAutho *zak_autho, GdaConnection *gdacon, const gchar { role_id = gda_value_stringify (gval); irole = zak_autho_get_role_from_id (zak_autho, role_id); + g_free (role_id); if (irole != NULL) { error = NULL; @@ -2187,6 +2230,7 @@ zak_autho_load_from_db (ZakAutho *zak_autho, GdaConnection *gdacon, const gchar { resource_id = gda_value_stringify (gval); iresource = zak_autho_get_resource_from_id (zak_autho, resource_id); + g_free (resource_id); } error = NULL; @@ -2222,7 +2266,10 @@ zak_autho_load_from_db (ZakAutho *zak_autho, GdaConnection *gdacon, const gchar prefix, error->message != NULL ? error->message : "no details"); } - g_object_unref (dm); + if (dm != NULL) + { + g_object_unref (dm); + } g_free (prefix); diff --git a/src/resource.c b/src/resource.c index b8f284f..3f753fa 100644 --- a/src/resource.c +++ b/src/resource.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2015 Andrea Zagli + * Copyright (C) 2010-2024 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -109,7 +109,7 @@ static const gchar priv = ZAK_AUTHO_RESOURCE_GET_PRIVATE (iresource); - ret = (const gchar *)g_strdup (priv->resource_id); + ret = (const gchar *)priv->resource_id; return ret; } diff --git a/src/role.c b/src/role.c index 1af6c4d..97dea44 100644 --- a/src/role.c +++ b/src/role.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2015 Andrea Zagli + * Copyright (C) 2010-2024 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -109,7 +109,7 @@ static const gchar priv = ZAK_AUTHO_ROLE_GET_PRIVATE (irole); - ret = (const gchar *)g_strdup (priv->role_id); + ret = (const gchar *)priv->role_id; return ret; }