fixup! cloud-setup: parse OCI metadata related to VLAN config

.get_config_data is only alive while the get_config task is running. We
can't reach into it afterwards.

  ==92303== Invalid read of size 8
  ==92303==    at 0x41247D: _iface_data_free (nmcs-provider.c:228)
  ==92303==    by 0x4CB33C1: ??? (in /usr/lib64/libglib-2.0.so.0.6800.4)
  ==92303==    by 0x4CB8082: g_hash_table_unref (in /usr/lib64/libglib-2.0.so.0.6800.4)
  ==92303==    by 0x412425: nm_g_hash_table_unref (nm-shared-utils.h:2171)
  ==92303==    by 0x412425: nmcs_provider_get_config_result_free (nmcs-provider.c:133)
  ==92303==    by 0x407871: main (main.c:995)
  ==92303==  Address 0x63b63f8 is 8 bytes inside a block of size 64 free'd
  ==92303==    at 0x4847B4C: free (vg_replace_malloc.c:989)
  ==92303==    by 0x4CCB76C: g_free (in /usr/lib64/libglib-2.0.so.0.6800.4)
  ==92303==    by 0x4CE81DF: g_slice_free1 (in /usr/lib64/libglib-2.0.so.0.6800.4)
  ==92303==    by 0x411C7B: _get_config_done_cb (nmcs-provider-oci.c:247)
  ==92303==    by 0x4AF2489: ??? (in /usr/lib64/libgio-2.0.so.0.6800.4)
  ==92303==    by 0x4AF268A: ??? (in /usr/lib64/libgio-2.0.so.0.6800.4)
  ==92303==    by 0x40A91C: _poll_req_done_cb (nm-http-client.c:529)
  ==92303==    by 0x4AF2489: ??? (in /usr/lib64/libgio-2.0.so.0.6800.4)
  ==92303==    by 0x4AF268A: ??? (in /usr/lib64/libgio-2.0.so.0.6800.4)
  ==92303==    by 0x415381: _poll_return (nm-shared-utils.c:7174)
  ==92303==    by 0x416D97: _poll_done_cb (nm-shared-utils.c:7201)
  ==92303==    by 0x4AF2489: ??? (in /usr/lib64/libgio-2.0.so.0.6800.4)
  ==92303==  Block was alloc'd at
  ==92303==    at 0x484482F: malloc (vg_replace_malloc.c:446)
  ==92303==    by 0x4CCEB88: g_malloc (in /usr/lib64/libglib-2.0.so.0.6800.4)
  ==92303==    by 0x4CE8C64: g_slice_alloc (in /usr/lib64/libglib-2.0.so.0.6800.4)
  ==92303==    by 0x413113: nmcs_provider_get_config (nmcs-provider.c:304)
  ==92303==    by 0x4076BD: _get_config (main.c:359)
  ==92303==    by 0x4076BD: main (main.c:985)
This commit is contained in:
Lubomir Rintel 2024-12-13 13:54:43 +01:00
parent 1d412859c0
commit 0728a79194
2 changed files with 5 additions and 1 deletions

View file

@ -188,6 +188,7 @@ nmcs_provider_get_config_iface_data_create(NMCSProviderGetConfigTaskData *get_co
iface_data = g_slice_new(NMCSProviderGetConfigIfaceData);
*iface_data = (NMCSProviderGetConfigIfaceData) {
.provider = g_object_ref(get_config_data->self),
.get_config_data = get_config_data,
.hwaddr = g_strdup(hwaddr),
.iface_idx = -1,
@ -225,8 +226,9 @@ _iface_data_free(gpointer data)
g_free(iface_data->ipv4s_arr);
nm_g_ptr_array_unref(iface_data->iproutes);
g_free((char *) iface_data->hwaddr);
if (G_OBJECT_TYPE(iface_data->get_config_data->self) == nmcs_provider_oci_get_type())
if (G_OBJECT_TYPE(iface_data->provider) == nmcs_provider_oci_get_type())
g_free((char *) iface_data->priv.oci.parent_hwaddr);
g_clear_object(&iface_data->provider);
nm_g_slice_free(iface_data);
}

View file

@ -17,6 +17,8 @@ typedef struct {
* dictionary. */
const char *hwaddr;
struct _NMCSProvider *provider;
struct _NMCSProviderGetConfigTaskData *get_config_data;
in_addr_t *ipv4s_arr;