diff options
author | olli <olli@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2006-01-22 11:44:35 +0000 |
---|---|---|
committer | olli <olli@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2006-01-22 11:44:35 +0000 |
commit | 2023d111adec98d4ed3a3a9ce92cecaf763e7019 (patch) | |
tree | 8d40c496d5bbeaf7e96d094b908e6b52680ae99b /package/rrdcollect/patches | |
parent | 4dfab11969aee76c696f5ca5fed8dc5ebcdb0bb5 (diff) |
fix rrdcollect bug (closes #220)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@3033 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/rrdcollect/patches')
-rw-r--r-- | package/rrdcollect/patches/rrdcollect-scan.patch | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/package/rrdcollect/patches/rrdcollect-scan.patch b/package/rrdcollect/patches/rrdcollect-scan.patch new file mode 100644 index 000000000..f47301ed1 --- /dev/null +++ b/package/rrdcollect/patches/rrdcollect-scan.patch @@ -0,0 +1,66 @@ +diff -ruN rrdcollect-0.2.3.orig/src/scan.c rrdcollect-0.2.3/src/scan.c +--- rrdcollect-0.2.3.orig/src/scan.c 2005-01-20 18:42:17.000000000 +0100 ++++ rrdcollect-0.2.3/src/scan.c 2006-01-22 00:51:52.000000000 +0100 +@@ -74,6 +74,11 @@ + } while (isdigit(*fmt)); + } + ++ /* skip white spaces like scanf does */ ++ if (strchr("difuoxX", *fmt)) ++ while (isspace(*buf)) ++ buf++; ++ + /* FIXME: we should check afterward: + * if (start == buf || start == '-' && buf-start == 1) + * die("WTF??? zero-length number???"); +@@ -150,27 +155,22 @@ + buf++, length--; + } + +- /* ignore if value not found */ +- if(value == 0) +- return 0; +- + if (!ignore) +- counter[i++]->value = valuedup(value); ++ counter[i++]->value = strndup(start, buf - start); + break; + + case 'c': ++ if (length < 0) ++ length = 1; // default length is 1 ++ + while (*buf && length > 0) { + buf++, length--; + } + if (length > 0) + return 2; + +- /* ignore if value not found */ +- if(value == 0) +- return 0; +- + if (!ignore) +- counter[i++]->value = valuedup(value); ++ counter[i++]->value = strndup(start, buf - start); + break; + + +@@ -192,7 +192,7 @@ + case '\f': + case '\v': + /* don't match if not at least one space */ +- if(!isspace(*(buf))) ++ if(!isspace(*buf)) + return 0; + else + buf++; +@@ -208,7 +208,7 @@ + case '\v': + break; + default: +- while (isspace(*(buf))) ++ while (isspace(*buf)) + buf++; + } + fmt++; |