[PATCH v3] kexec/fs2dt: Check for NULL pointer in dt_copy_old_root_param()

Madhavan Srinivasan maddy at linux.vnet.ibm.com
Mon Oct 3 18:37:05 PDT 2016


In dt_copy_old_root_param(), FILE * returned
from fopen is not checked for NULL pointer
before passinig to fclose(). This could trigger
a segfault. Patch to fix the same.

Signed-off-by: Madhavan Srinivasan <maddy at linux.vnet.ibm.com>
---
Changelog v2
-Removed redundant check fp

Changelog v1:
- Moved the check right after fopen
 
 kexec/fs2dt.c | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/kexec/fs2dt.c b/kexec/fs2dt.c
index 6ed2399759cf..79aa0f320a5a 100644
--- a/kexec/fs2dt.c
+++ b/kexec/fs2dt.c
@@ -524,19 +524,21 @@ static void dt_copy_old_root_param(void)
 	strcpy(filename, pathname);
 	strcat(filename, "bootargs");
 	fp = fopen(filename, "r");
-	if (fp) {
-		if (getline(&last_cmdline, &len, fp) == -1)
-			die("unable to read %s\n", filename);
-
-		p = strstr(last_cmdline, "root=");
-		if (p) {
-			old_param = strtok(p, " ");
-			len = strlen(local_cmdline);
-			if (len != 0)
-				strcat(local_cmdline, " ");
-			strcat(local_cmdline, old_param);
-		}
+	if (!fp)
+		return;
+
+	if (getline(&last_cmdline, &len, fp) == -1)
+		die("unable to read %s\n", filename);
+
+	p = strstr(last_cmdline, "root=");
+	if (p) {
+		old_param = strtok(p, " ");
+		len = strlen(local_cmdline);
+		if (len != 0)
+			strcat(local_cmdline, " ");
+		strcat(local_cmdline, old_param);
 	}
+
 	if (last_cmdline)
 		free(last_cmdline);
 
-- 
2.7.4




More information about the kexec mailing list