~ubuntu-branches/ubuntu/trusty/libzeitgeist/trusty-proposed

« back to all changes in this revision

Viewing changes to src/zeitgeist-data-source-registry.c

  • Committer: Package Import Robot
  • Author(s): Didier Roche
  • Date: 2011-09-08 11:24:53 UTC
  • mfrom: (1.1.10 upstream)
  • Revision ID: package-import@ubuntu.com-20110908112453-7p3c56xeayfo2zna
Tags: 0.3.12-0ubuntu1
* New upstream release
  - Leaks related to gvariant unpacking (LP: #844578)
  - Bad gvariant unpacking in ZeitgeistDataSourceRegistry (LP: #844574)

Show diffs side-by-side

added added

removed removed

Lines of Context:
204
204
  ZeitgeistDataSource                *src;
205
205
  gchar                              *unique_id;
206
206
  gboolean                            enabled;
 
207
  GVariant                           *vsrc;
207
208
 
208
209
  self = ZEITGEIST_DATA_SOURCE_REGISTRY (user_data);
209
210
  priv = ZEITGEIST_DATA_SOURCE_REGISTRY_GET_PRIVATE (self);
210
211
 
211
212
  if (g_strcmp0 (signal_name, "DataSourceRegistered") == 0)
212
213
    {
213
 
      src = zeitgeist_data_source_new_from_variant (g_variant_get_child_value (parameters, 0)); // FIXME: ref?
214
 
      g_signal_emit (self, _registry_signals[SOURCE_REGISTERED],
215
 
                     0, src);
 
214
      vsrc = g_variant_get_child_value (parameters, 0);
 
215
      src = zeitgeist_data_source_new_from_variant (vsrc);
 
216
      g_signal_emit (self, _registry_signals[SOURCE_REGISTERED], 0, src);
 
217
      g_variant_unref (vsrc);
216
218
      g_object_unref (src);
217
219
    }
218
220
  else if (g_strcmp0 (signal_name, "DataSourceDisconnected") == 0)
219
221
    {
220
 
      src = zeitgeist_data_source_new_from_variant (g_variant_get_child_value (parameters, 0)); // FIXME: ref?
221
 
      g_signal_emit (self, _registry_signals[SOURCE_DISCONNECTED],
222
 
                     0, src);
 
222
      vsrc = g_variant_get_child_value (parameters, 0);
 
223
      src = zeitgeist_data_source_new_from_variant (vsrc);
 
224
      g_signal_emit (self, _registry_signals[SOURCE_DISCONNECTED], 0, src);
 
225
      g_variant_unref (vsrc);
223
226
      g_object_unref (src);
224
227
    }
225
228
  else if (g_strcmp0 (signal_name, "DataSourceEnabled") == 0)
226
229
    {
227
 
      g_variant_get (parameters, "sb", &unique_id, &enabled); // FIXME: unref?
 
230
      g_variant_get (parameters, "(sb)", &unique_id, &enabled); // FIXME: unref?
228
231
      g_signal_emit (self, _registry_signals[SOURCE_ENABLED],
229
232
          0, unique_id, enabled);
230
233
      g_free (unique_id);
363
366
  vsources = g_variant_get_child_value (val, 0);
364
367
  g_variant_unref (val);
365
368
 
366
 
  return zeitgeist_data_sources_from_variant (vsources); // owns ref
 
369
  sources = zeitgeist_data_sources_from_variant (vsources);
 
370
  g_variant_unref (vsources);
 
371
 
 
372
  return sources;
367
373
}
368
374
 
369
375
/**