X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fdaemon%2Futils_ignorelist.c;h=12688380e89739f9afd03e6440521580cf5fe74d;hb=6a1a62048b6d0d2ddf5c17295609d3ebf010f40b;hp=a8ca7dbb7f3aecbb2c6ea90519c2583aae0c30f5;hpb=6d64200e006f22ce3f1619251004fbe6cd674b91;p=collectd.git diff --git a/src/daemon/utils_ignorelist.c b/src/daemon/utils_ignorelist.c index a8ca7dbb..12688380 100644 --- a/src/daemon/utils_ignorelist.c +++ b/src/daemon/utils_ignorelist.c @@ -13,10 +13,9 @@ * ranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public Licence for more details. * - * You should have received a copy of the GNU General Public - * Licence along with this program; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, - * USA. + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * Authors: * Lubos Stanek @@ -98,7 +97,7 @@ static int ignorelist_append_regex(ignorelist_t *il, const char *re_str) re = malloc (sizeof (*re)); if (re == NULL) { - ERROR ("utils_ignorelist: malloc failed"); + ERROR ("ignorelist_append_regex: malloc failed."); return (ENOMEM); } memset (re, 0, sizeof (*re)); @@ -106,10 +105,10 @@ static int ignorelist_append_regex(ignorelist_t *il, const char *re_str) status = regcomp (re, re_str, REG_EXTENDED); if (status != 0) { - char errbuf[1024] = ""; - regerror (status, re, errbuf, sizeof (errbuf)); + char errbuf[1024]; + (void) regerror (status, re, errbuf, sizeof (errbuf)); ERROR ("utils_ignorelist: regcomp failed: %s", errbuf); - regfree (re); + ERROR ("ignorelist_append_regex: Compiling regular expression \"%s\" failed: %s", re_str, errbuf); sfree (re); return (status); } @@ -117,7 +116,7 @@ static int ignorelist_append_regex(ignorelist_t *il, const char *re_str) entry = malloc (sizeof (*entry)); if (entry == NULL) { - ERROR ("utils_ignorelist: malloc failed"); + ERROR ("ignorelist_append_regex: malloc failed."); regfree (re); sfree (re); return (ENOMEM); @@ -195,9 +194,10 @@ ignorelist_t *ignorelist_create (int invert) { ignorelist_t *il; - /* smalloc exits if it failes */ - il = (ignorelist_t *) smalloc (sizeof (ignorelist_t)); - memset (il, '\0', sizeof (ignorelist_t)); + il = malloc (sizeof (*il)); + if (il == NULL) + return NULL; + memset (il, 0, sizeof (*il)); /* * ->ignore == 0 => collect @@ -262,7 +262,7 @@ void ignorelist_set_invert (ignorelist_t *il, int invert) */ int ignorelist_add (ignorelist_t *il, const char *entry) { - size_t entry_len; + size_t len; if (il == NULL) { @@ -270,10 +270,10 @@ int ignorelist_add (ignorelist_t *il, const char *entry) return (1); } - entry_len = strlen (entry); + len = strlen (entry); /* append nothing */ - if (entry_len == 0) + if (len == 0) { DEBUG("not appending: empty entry"); return (1); @@ -281,19 +281,21 @@ int ignorelist_add (ignorelist_t *il, const char *entry) #if HAVE_REGEX_H /* regex string is enclosed in "/.../" */ - if ((entry_len > 2) && (entry[0] == '/') && entry[entry_len - 1] == '/') + if ((len > 2) && (entry[0] == '/') && entry[len - 1] == '/') { - char *entry_copy; - size_t entry_copy_size; + char *copy; int status; - /* We need to copy `entry' since it's const */ - entry_copy_size = entry_len - 1; - entry_copy = smalloc (entry_copy_size); - sstrncpy (entry_copy, entry + 1, entry_copy_size); + /* skip leading slash */ + copy = strdup (entry + 1); + if (copy == NULL) + return ENOMEM; + + /* trim trailing slash */ + copy[strlen (copy) - 1] = 0; - status = ignorelist_append_regex(il, entry_copy); - sfree (entry_copy); + status = ignorelist_append_regex (il, copy); + sfree (copy); return status; } #endif