diff options
author | NeilBrown <neilb@suse.de> | 2011-06-17 22:49:24 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-06-17 22:49:24 +1000 |
commit | f161d047eed634b3380262767f955eb888502e88 (patch) | |
tree | 0d9e35c4e58102d6c58fee7ee9fc1fb25bf4efe5 | |
parent | ef799cdd6968db25b3a3ea5d7d4e920391ec640a (diff) | |
download | mdadm-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.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -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; } |