[PATCH] get_linux_version_code: don't fail on 3.0-foo
Andreas Oberritter
obi at opendreambox.org
Fri Apr 27 00:42:53 UTC 2012
Fixes segmentation fault in mount (nfs):
#0 __GI_____strtol_l_internal (nptr=0x0, endptr=0x0, base=10, group=<optimized out>, loc=0x77f6f3c8) at strtol_l.c:298
#1 __GI_strtol (nptr=<optimized out>, endptr=<optimized out>, base=<optimized out>) at strtol.c:110
#2 get_linux_version_code () at libbb/kernel_version.c:34
#3 find_kernel_nfs_mount_version () at util-linux/mount.c:979
Signed-off-by: Andreas Oberritter <obi at opendreambox.org>
---
libbb/kernel_version.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/libbb/kernel_version.c b/libbb/kernel_version.c
index a168a1e..12f1146 100644
--- a/libbb/kernel_version.c
+++ b/libbb/kernel_version.c
@@ -20,7 +20,7 @@
int FAST_FUNC get_linux_version_code(void)
{
struct utsname name;
- char *s;
+ char *s, *t;
int i, r;
if (uname(&name) == -1) {
@@ -31,7 +31,8 @@ int FAST_FUNC get_linux_version_code(void)
s = name.release;
r = 0;
for (i = 0; i < 3; i++) {
- r = r * 256 + atoi(strtok(s, "."));
+ t = strtok(s, ".");
+ r = r * 256 + (t ? atoi(t) : 0);
s = NULL;
}
return r;
--
1.7.9.5
More information about the busybox
mailing list