From 58ec01b35c046f5f167763343514c20170bfd2eb Mon Sep 17 00:00:00 2001 From: Alexander Sverdlin Date: Sun, 29 Mar 2015 20:44:04 +0200 Subject: systemd-bootchart: Prevent leaking file descriptors in open-fdopen combination Correctly handle the potential failure of fdopen() (because of OOM, for instance) after potentially successful open(). Prevent leaking open fd in such case. --- src/bootchart/svg.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/bootchart/svg.c') diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index e1fc531ba9..54129159ac 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -170,6 +170,9 @@ static void svg_title(const char *build) { if (!fgets(cmdline, 255, f)) sprintf(cmdline, "Unknown"); fclose(f); + } else { + if (fd >= 0) + close(fd); } /* extract root fs so we can find disk model name in sysfs */ @@ -185,6 +188,9 @@ static void svg_title(const char *build) { if (!fgets(model, 255, f)) fprintf(stderr, "Error reading disk model for %s\n", rootbdev); fclose(f); + } else { + if (fd >= 0) + close(fd); } } @@ -208,6 +214,9 @@ static void svg_title(const char *build) { } } fclose(f); + } else { + if (fd >= 0) + close(fd); } svg("Bootchart for %s - %s\n", -- cgit v1.2.3-54-g00ecf