diff options
Diffstat (limited to 'lib/linux_version.c')
-rw-r--r-- | lib/linux_version.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/lib/linux_version.c b/lib/linux_version.c index ada566ad..2bcc2cc6 100644 --- a/lib/linux_version.c +++ b/lib/linux_version.c @@ -3,23 +3,23 @@ #include "linux_version.h" -int -get_linux_version (void) +int get_linux_version (void) { static int kver = -1; struct utsname uts; - int major; - int minor; - int teeny; + int major = 0; + int minor = 0; + int teeny = 0; + int n; if (kver != -1) return kver; if (uname (&uts)) - kver = 0; - else if (sscanf (uts.release, "%d.%d.%d", &major, &minor, &teeny) == 3) - kver = KERNEL_VERSION (major, minor, teeny); - else if (sscanf (uts.release, "%d.%d", &major, &minor) == 2) - kver = KERNEL_VERSION (major, minor, 0); + return kver = 0; - return kver; + n = sscanf(uts.release, "%d.%d.%d", &major, &minor, &teeny); + if (n < 1 || n > 3) + return kver = 0; + + return kver = KERNEL_VERSION(major, minor, teeny); } |