[systemd-devel] [PATCH 2/3] bootchart: check return of strftime
Zbigniew Jędrzejewski-Szmek
zbyszek at in.waw.pl
Fri Sep 26 15:28:51 PDT 2014
On Fri, Sep 26, 2014 at 10:01:31PM +0200, Thomas H.P. Andersen wrote:
> From: Thomas Hindoe Paaboel Andersen <phomes at gmail.com>
>
> Found by coverity. Fixes: CID#996314 and #996312
> ---
> src/bootchart/bootchart.c | 14 ++++++++++++--
> src/bootchart/svg.c | 6 ++++--
> 2 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c
> index 8ef5ad1..e127ad3 100644
> --- a/src/bootchart/bootchart.c
> +++ b/src/bootchart/bootchart.c
> @@ -389,7 +389,12 @@ int main(int argc, char *argv[]) {
>
> if (!of && (access(arg_output_path, R_OK|W_OK|X_OK) == 0)) {
> t = time(NULL);
> - strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t));
> + r = strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t));
> + if (r <= 0) {
> + log_error("Failed to format time.");
> + return EXIT_FAILURE;
> + }
We don't expect this to fail, ever. Maybe assert_se() would be better?
(Likewise below and for the next patch...)
Zbyszek
> +
> snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", arg_output_path, datestr);
> of = fopen(output_file, "we");
> }
> @@ -457,7 +462,12 @@ int main(int argc, char *argv[]) {
>
> if (!of) {
> t = time(NULL);
> - strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t));
> + r = strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t));
> + if (r <= 0) {
> + log_error("Failed to format time.");
> + return EXIT_FAILURE;
> + }
> +
> snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", arg_output_path, datestr);
> of = fopen(output_file, "we");
> }
> diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c
> index 135883f..cb58246 100644
> --- a/src/bootchart/svg.c
> +++ b/src/bootchart/svg.c
> @@ -162,7 +162,7 @@ static void svg_title(const char *build) {
> char *c;
> FILE *f;
> time_t t;
> - int fd;
> + int fd, r;
> struct utsname uts;
>
> /* grab /proc/cmdline */
> @@ -196,7 +196,9 @@ static void svg_title(const char *build) {
>
> /* date */
> t = time(NULL);
> - strftime(date, sizeof(date), "%a, %d %b %Y %H:%M:%S %z", localtime(&t));
> + r = strftime(date, sizeof(date), "%a, %d %b %Y %H:%M:%S %z", localtime(&t));
> + if (r <= 0)
> + fprintf(stderr, "Failed to format time\n");
>
> /* CPU type */
> fd = openat(procfd, "cpuinfo", O_RDONLY);
> --
> 2.1.0
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
>
More information about the systemd-devel
mailing list