summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2011-06-17 22:49:24 +1000
committerNeilBrown <neilb@suse.de>2011-06-17 22:49:24 +1000
commitf161d047eed634b3380262767f955eb888502e88 (patch)
tree0d9e35c4e58102d6c58fee7ee9fc1fb25bf4efe5
parentef799cdd6968db25b3a3ea5d7d4e920391ec640a (diff)
downloadmdadm-f161d047eed634b3380262767f955eb888502e88.tar.gz
util: correctly parse shorter linux version numbers.
The next version of Linux might be 3.0. If it is, get_linux_version will fail. So make it more robust. Reported-by: Namhyung Kim <namhyung@gmail.com> Reported-by: Milan Broz <mbroz@redhat.com> Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r--util.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/util.c b/util.c
index 10bbe56..55d171a 100644
--- a/util.c
+++ b/util.c
@@ -146,16 +146,16 @@ int get_linux_version()
{
struct utsname name;
char *cp;
- int a,b,c;
+ int a = 0, b = 0,c = 0;
if (uname(&name) <0)
return -1;
cp = name.release;
a = strtoul(cp, &cp, 10);
- if (*cp != '.') return -1;
- b = strtoul(cp+1, &cp, 10);
- if (*cp != '.') return -1;
- c = strtoul(cp+1, NULL, 10);
+ if (*cp == '.')
+ b = strtoul(cp+1, &cp, 10);
+ if (*cp == '.')
+ c = strtoul(cp+1, &cp, 10);
return (a*1000000)+(b*1000)+c;
}