summaryrefslogtreecommitdiffstats
path: root/recipes/kexec
diff options
context:
space:
mode:
authorAndrea Adami <andrea.adami@gmail.com>2009-10-07 22:39:33 +0200
committerAndrea Adami <andrea.adami@gmail.com>2009-10-07 22:42:20 +0200
commitf5d88d0f924e52828a70e7390b0c460f0f3b59bb (patch)
tree344cb994ea9b448ad20c19abf5278a8a597b35fa /recipes/kexec
parentd685ab28a425740b4d6c98abb1423d7904240724 (diff)
downloadopenembedded-f5d88d0f924e52828a70e7390b0c460f0f3b59bb.tar.gz
kexec-tools_2.0.1: rework/fix no-getline-no-fscanf.patch. Credits to Yuri Bushmelev.
Diffstat (limited to 'recipes/kexec')
-rw-r--r--recipes/kexec/files/no-getline-no-fscanf.patch35
1 files changed, 23 insertions, 12 deletions
diff --git a/recipes/kexec/files/no-getline-no-fscanf.patch b/recipes/kexec/files/no-getline-no-fscanf.patch
index d2b803c214..f2a32b4d0d 100644
--- a/recipes/kexec/files/no-getline-no-fscanf.patch
+++ b/recipes/kexec/files/no-getline-no-fscanf.patch
@@ -1,33 +1,44 @@
Index: kexec-tools-2.0.1/kexec/kexec.c
===================================================================
--- kexec-tools-2.0.1.orig/kexec/kexec.c 2008-02-24 14:15:46.950825917 +0100
-+++ kexec-tools-2.0.1/kexec/kexec.c 2009-10-06 00:37:01.000000000 +0200
-@@ -932,14 +932,22 @@
- }
++++ kexec-tools-2.0.1/kexec/kexec.c 2009-10-07 22:30:58.000000000 +0200
+@@ -933,15 +933,32 @@
static int kexec_loaded(void)
{
- int ret;
-+ int ret = 0;
++ long ret = -1;
FILE *fp;
-+ char *endptr;
-+ char *line[3];
++ char *p;
++ char line[3];
fp = fopen("/sys/kernel/kexec_loaded", "r");
if (fp == NULL)
return -1;
- fscanf(fp, "%d", &ret);
+/* fscanf(fp, "%d", &ret); */
++ p = fgets(line, sizeof(line), fp);
+ fclose(fp);
+- return ret;
+
-+ if ( NULL == fgets(line, sizeof(line), fp) ) {
++ if ( NULL == p)
+ return -1;
-+ ret = strtol(line, &endptr, 10);
-+ }
+
- fclose(fp);
- return ret;
++ ret = strtol(line, &p, 10);
++
++ if (ret > INT_MAX)
++ /* Too long */
++ return -1;
++
++ if (p == line)
++ /* No digits were found */
++ return -1;
++
++ return (int)ret;
}
-@@ -989,17 +997,22 @@
+
+ /*
+@@ -989,18 +1006,23 @@
char *get_command_line(void)
{
FILE *fp;