summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/core.c b/src/core.c
index 15cb79a..48ea5aa 100644
--- a/src/core.c
+++ b/src/core.c
@@ -59,11 +59,10 @@ static void nslog__normalise_category(nslog_category_t *cat)
cat->namelen = strlen(cat->name);
} else {
nslog__normalise_category(cat->parent);
- cat->name = malloc(strlen(cat->parent->name) + strlen(cat->cat_name) + 2);
- strcpy(cat->name, cat->parent->name);
- strcat(cat->name, "/");
- strcat(cat->name, cat->cat_name);
- cat->namelen = strlen(cat->name);
+ int bufsz = strlen(cat->parent->name) + strlen(cat->cat_name) + 2 /* a slash and a NUL */;
+ cat->name = malloc(bufsz);
+ snprintf(cat->name, bufsz, "%s/%s", cat->parent->name, cat->cat_name);
+ cat->namelen = bufsz - 1;
}
cat->next = nslog__all_categories;
nslog__all_categories = cat;