From c309a7137b06516eafc055eaab31df964599a8b3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 28 Mar 2013 23:41:07 -0400 Subject: [PATCH] bootchart: properly terminate string systemd-199/src/bootchart/store.c:289: buffer_size_warning: Calling strncpy with a maximum size argument of 256 bytes on destination array "ps->name" of size 256 bytes might leave the destination string unterminated. ...and indeed, the string was used as NULL-terminated later on. pid_cmdline_strncpy is renamed to pid_cmdline_strscpy to commemorate the fact that it *does* properly terminate the string. --- src/bootchart/store.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/bootchart/store.c b/src/bootchart/store.c index 0253ebb5a..343365e61 100644 --- a/src/bootchart/store.c +++ b/src/bootchart/store.c @@ -34,6 +34,7 @@ #include #include "util.h" +#include "strxcpyx.h" #include "store.h" #include "bootchart.h" @@ -89,7 +90,7 @@ static char *bufgetline(char *buf) { return c; } -static int pid_cmdline_strncpy(char *buffer, int pid, size_t buf_len) { +static int pid_cmdline_strscpy(char *buffer, size_t buf_len, int pid) { char filename[PATH_MAX]; int _cleanup_close_ fd=-1; ssize_t n; @@ -286,11 +287,11 @@ schedstat_next: if (!sscanf(buf, "%s %*s %*s", key)) continue; - strncpy(ps->name, key, 256); + strscpy(ps->name, sizeof(ps->name), key); /* cmdline */ if (arg_show_cmdline) - pid_cmdline_strncpy(ps->name, pid, 256); + pid_cmdline_strscpy(ps->name, sizeof(ps->name), pid); /* discard line 2 */ m = bufgetline(buf); @@ -449,11 +450,11 @@ catch_rename: if (!sscanf(buf, "%s %*s %*s", key)) continue; - strncpy(ps->name, key, 256); + strscpy(ps->name, sizeof(ps->name), key); /* cmdline */ if (arg_show_cmdline) - pid_cmdline_strncpy(ps->name, pid, 256); + pid_cmdline_strscpy(ps->name, sizeof(ps->name), pid); } } } -- 2.30.2