[Crash-utility] [PATCH] Parse two number kernel versions i.e. 3.8
Troy Heber
troy at debdev.org
Thu Aug 1 17:58:57 UTC 2013
Hello Dave,
A Debian user, Timo Juhani Lindfors <timo.lindfors at iki.fi>, reported
this issue that and delivered the patch to resolve it. The original
strcpy is being called with overlapping arguments because it is
expecting an additional version number.
Troy
---
diff -urpN -urN ori/kernel.c new/kernel.c
--- ori/kernel.c 2013-08-01 11:40:01.299157220 -0600
+++ new/kernel.c 2013-08-01 11:42:12.506364789 -0600
@@ -218,21 +218,29 @@ kernel_init()
strncpy(buf, kt->utsname.release, MIN(strlen(kt->utsname.release), 65));
if (ascii_string(kt->utsname.release)) {
+ char separator;
+
p1 = p2 = buf;
while (*p2 != '.')
p2++;
*p2 = NULLCHAR;
kt->kernel_version[0] = atoi(p1);
p1 = ++p2;
- while (*p2 != '.')
+ while (*p2 != '.' && *p2 != '-' && *p2 != '\0')
p2++;
+ separator = *p2;
*p2 = NULLCHAR;
kt->kernel_version[1] = atoi(p1);
- p1 = ++p2;
- while ((*p2 >= '0') && (*p2 <= '9'))
- p2++;
- *p2 = NULLCHAR;
- kt->kernel_version[2] = atoi(p1);
+ *p2 = separator;
+ if (*p2 == '.') {
+ p1 = ++p2;
+ while ((*p2 >= '0') && (*p2 <= '9'))
+ p2++;
+ *p2 = NULLCHAR;
+ kt->kernel_version[2] = atoi(p1);
+ } else {
+ kt->kernel_version[2] = 0;
+ }
if (CRASHDEBUG(1))
fprintf(fp, "base kernel version: %d.%d.%d\n",
More information about the Crash-utility
mailing list