Merge branch 'collectd-5.5'
authorFlorian Forster <octo@collectd.org>
Fri, 19 Jun 2015 14:28:01 +0000 (16:28 +0200)
committerFlorian Forster <octo@collectd.org>
Fri, 19 Jun 2015 14:28:01 +0000 (16:28 +0200)
1  2 
src/apache.c
src/curl_json.c
src/curl_xml.c
src/java.c
src/snmp.c

diff --combined src/apache.c
@@@ -81,6 -81,7 +81,7 @@@ static void apache_free (apache_t *st
                curl_easy_cleanup(st->curl);
                st->curl = NULL;
        }
+       sfree (st);
  } /* apache_free */
  
  static size_t apache_curl_callback (void *buf, size_t size, size_t nmemb,
@@@ -254,7 -255,7 +255,7 @@@ static int config_add (oconfig_item_t *
                status = plugin_register_complex_read (/* group = */ NULL,
                                /* name      = */ callback_name,
                                /* callback  = */ apache_read_host,
 -                              /* interval  = */ NULL,
 +                              /* interval  = */ 0,
                                /* user_data = */ &ud);
        }
  
diff --combined src/curl_json.c
@@@ -503,6 -503,7 +503,7 @@@ static int cj_config_add_key (cj_t *db
    {
      ERROR ("curl_json plugin: cj_config: "
             "Invalid key: %s", ci->key);
+     cj_key_free (key);
      return (-1);
    }
  
@@@ -696,6 -697,7 +697,7 @@@ static int cj_config_add_url (oconfig_i
    {
      ERROR ("curl_json plugin: cj_config: "
             "Invalid key: %s", ci->key);
+     cj_free (db);
      return (-1);
    }
    if (status != 0)
    {
      user_data_t ud;
      char *cb_name;
 -    struct timespec interval = { 0, 0 };
 -
 -    CDTIME_T_TO_TIMESPEC (db->interval, &interval);
  
      if (db->instance == NULL)
        db->instance = strdup("default");
                 db->instance, db->url ? db->url : db->sock);
  
      plugin_register_complex_read (/* group = */ NULL, cb_name, cj_read,
 -                                  /* interval = */ (db->interval > 0) ? &interval : NULL,
 +                                  /* interval = */ db->interval,
                                    &ud);
      sfree (cb_name);
    }
diff --combined src/curl_xml.c
@@@ -941,6 -941,7 +941,7 @@@ static int cx_config_add_url (oconfig_i
    {
      ERROR ("curl_xml plugin: cx_config: "
             "Invalid key: %s", ci->key);
+     cx_free (db);
      return (-1);
    }
  
  
      cb_name = ssnprintf_alloc ("curl_xml-%s-%s", db->instance, db->url);
      plugin_register_complex_read (/* group = */ "curl_xml", cb_name, cx_read,
 -                                  /* interval = */ NULL, &ud);
 +                                  /* interval = */ 0, &ud);
      sfree (cb_name);
    }
    else
diff --combined src/java.c
@@@ -1438,7 -1438,7 +1438,7 @@@ static jint JNICALL cjni_api_register_r
    ud.free_func = cjni_callback_info_destroy;
  
    plugin_register_complex_read (/* group = */ NULL, cbi->name, cjni_read,
 -      /* interval = */ NULL, &ud);
 +      /* interval = */ 0, &ud);
  
    (*jvm_env)->DeleteLocalRef (jvm_env, o_read);
  
@@@ -1817,6 -1817,7 +1817,7 @@@ static cjni_callback_info_t *cjni_callb
      pthread_mutex_unlock (&java_callbacks_lock);
      ERROR ("java plugin: cjni_callback_info_create: strdup failed.");
      (*jvm_env)->ReleaseStringUTFChars (jvm_env, o_name, c_name);
+     sfree (cbi);
      return (NULL);
    }
  
    if (cbi->object == NULL)
    {
      ERROR ("java plugin: cjni_callback_info_create: NewGlobalRef failed.");
-     free (cbi);
+     sfree (cbi->name);
+     sfree (cbi);
      return (NULL);
    }
  
    if (cbi->class == NULL)
    {
      ERROR ("java plugin: cjni_callback_info_create: GetObjectClass failed.");
-     free (cbi);
+     (*jvm_env)->DeleteGlobalRef (jvm_env, cbi->object);
+     sfree (cbi->name);
+     sfree (cbi);
      return (NULL);
    }
  
      ERROR ("java plugin: cjni_callback_info_create: "
          "Cannot find the `%s' method with signature `%s'.",
          method_name, method_signature);
-     free (cbi);
+     (*jvm_env)->DeleteGlobalRef (jvm_env, cbi->object);
+     sfree (cbi->name);
+     sfree (cbi);
      return (NULL);
    }
  
diff --combined src/snmp.c
@@@ -645,6 -645,7 +645,6 @@@ static int csnmp_config_add_host (oconf
    /* Registration stuff. */
    char cb_name[DATA_MAX_NAME_LEN];
    user_data_t cb_data;
 -  struct timespec cb_interval;
  
    hd = (host_definition_t *) malloc (sizeof (host_definition_t));
    if (hd == NULL)
    cb_data.data = hd;
    cb_data.free_func = csnmp_host_definition_destroy;
  
 -  CDTIME_T_TO_TIMESPEC (hd->interval, &cb_interval);
 -
    status = plugin_register_complex_read (/* group = */ NULL, cb_name,
 -      csnmp_read_host, /* interval = */ &cb_interval,
 -      /* user_data = */ &cb_data);
 +      csnmp_read_host, hd->interval, /* user_data = */ &cb_data);
    if (status != 0)
    {
      ERROR ("snmp plugin: Registering complex read function failed.");
@@@ -1231,16 -1235,17 +1231,17 @@@ static int csnmp_dispatch_table (host_d
      return (-1);
    }
    assert (ds->ds_num == data->values_len);
+   assert (data->values_len > 0);
  
    instance_list_ptr = instance_list;
  
-   value_table_ptr = malloc (sizeof (*value_table_ptr) * data->values_len);
+   value_table_ptr = calloc ((size_t) data->values_len, sizeof (*value_table_ptr));
    if (value_table_ptr == NULL)
      return (-1);
    for (i = 0; i < data->values_len; i++)
      value_table_ptr[i] = value_table[i];
  
-   vl.values_len = ds->ds_num;
+   vl.values_len = data->values_len;
    vl.values = malloc (sizeof (*vl.values) * vl.values_len);
    if (vl.values == NULL)
    {