summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 40cbdef)
raw | patch | inline | side by side (parent: 40cbdef)
author | Florian Forster <octo@huhu.verplant.org> | |
Tue, 22 Jan 2008 10:06:15 +0000 (11:06 +0100) | ||
committer | Florian Forster <octo@huhu.verplant.org> | |
Tue, 22 Jan 2008 10:06:15 +0000 (11:06 +0100) |
Return an error when initialization fails. This includes the case when no URL
is configured. The user is informed about this as clear as possible.
Also, `strncpy' and `snprintf' now are followed by a forced NULL-termination of
the strings to be on the save side. This also changes the plugin to look more
like the other plugins which mostly do this already.
is configured. The user is informed about this as clear as possible.
Also, `strncpy' and `snprintf' now are followed by a forced NULL-termination of
the strings to be on the save side. This also changes the plugin to look more
like the other plugins which mostly do this already.
src/apache.c | patch | blob | history |
diff --git a/src/apache.c b/src/apache.c
index 5a3272f8c3485c1498614a603277ef708034ee92..280c687feebd79dcbb5c36ed80bce50d3c4ae844 100644 (file)
--- a/src/apache.c
+++ b/src/apache.c
/**
* collectd - src/apache.c
- * Copyright (C) 2006,2007 Florian octo Forster
+ * Copyright (C) 2006-2008 Florian octo Forster
* Copyright (C) 2007 Florent EppO Monbillard
*
* This program is free software; you can redistribute it and/or modify it
"URL",
"User",
"Password",
- "CACert",
- NULL
+ "CACert"
};
-static int config_keys_num = 4;
+static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
static size_t apache_curl_callback (void *buf, size_t size, size_t nmemb, void *stream)
{
static char credentials[1024];
if (url == NULL)
- return (0);
+ {
+ WARNING ("apache plugin: init: No URL configured, returning "
+ "an error.");
+ return (-1);
+ }
if (curl != NULL)
{
if ((curl = curl_easy_init ()) == NULL)
{
- ERROR ("apache: `curl_easy_init' failed.");
+ ERROR ("apache plugin: init: `curl_easy_init' failed.");
return (-1);
}
if (user != NULL)
{
- if (snprintf (credentials, 1024, "%s:%s", user, pass == NULL ? "" : pass) >= 1024)
+ int status;
+
+ status = snprintf (credentials, sizeof (credentials), "%s:%s",
+ user, (pass == NULL) ? "" : pass);
+ if (status >= sizeof (credentials))
{
- ERROR ("apache: Credentials would have been truncated.");
+ ERROR ("apache plugin: init: Returning an error "
+ "because the credentials have been "
+ "truncated.");
return (-1);
}
+ credentials[sizeof (credentials) - 1] = '\0';
curl_easy_setopt (curl, CURLOPT_USERPWD, credentials);
}
} /* int init */
static void submit_counter (const char *type, const char *type_instance,
- unsigned long long value)
+ counter_t value)
{
value_t values[1];
value_list_t vl = VALUE_LIST_INIT;
- DEBUG ("type = %s; type_instance = %s; value = %llu;",
- type, type_instance, value);
-
values[0].counter = value;
vl.values = values;
strcpy (vl.host, hostname_g);
strcpy (vl.plugin, "apache");
strcpy (vl.plugin_instance, "");
- strncpy (vl.type_instance, type_instance, sizeof (vl.type_instance));
+
+ if (type_instance != NULL)
+ {
+ strncpy (vl.type_instance, type_instance,
+ sizeof (vl.type_instance));
+ vl.type_instance[sizeof (vl.type_instance) - 1] = '\0';
+ }
plugin_dispatch_values (type, &vl);
} /* void submit_counter */
static void submit_gauge (const char *type, const char *type_instance,
- double value)
+ gauge_t value)
{
value_t values[1];
value_list_t vl = VALUE_LIST_INIT;
- DEBUG ("type = %s; type_instance = %s; value = %lf;",
- type, type_instance, value);
-
values[0].gauge = value;
vl.values = values;
strcpy (vl.plugin_instance, "");
if (type_instance != NULL)
+ {
strncpy (vl.type_instance, type_instance,
sizeof (vl.type_instance));
+ vl.type_instance[sizeof (vl.type_instance) - 1] = '\0';
+ }
plugin_dispatch_values (type, &vl);
} /* void submit_counter */