[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