Messages in this thread Patch in this message | | | Subject | Re: [PATCH] lib/vsprintf.c: wrong conversion function used | From | Yi Yang <> | Date | Sun, 10 Aug 2008 23:38:40 +0800 |
| |
Swen, your fix is just partly correct, it'll has a big problem for strict_strtoul, because val is of long type, but you patch will result in long long return type, the below patch is a correct fix.
Signed-off-by: Yi Yang <yi.y.yang@intel.com> Noticed-by: Swen Schillig <swen@vnet.ibm.com> --- vsprintf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 1dc2d1d..d8d1d11 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -220,7 +220,7 @@ int strict_strtou##type(const char *cp, unsigned int base, valtype *res)\ if (len == 0) \ return -EINVAL; \ \ - val = simple_strtoul(cp, &tail, base); \ + val = simple_strtou##type(cp, &tail, base); \ if ((*tail == '\0') || \ ((len == (size_t)(tail - cp) + 1) && (*tail == '\n'))) {\ *res = val; \
On Thu, 2008-08-07 at 11:24 +0200, Swen Schillig wrote: > From: Swen Schillig <swen@vnet.ibm.com> > > The macro define_strict_strtoux() is using the simple_strtoul () > function as opposed to the simple_strtoull() function. > This leads to false conversions on non-64bit > machines (here 31bit System z). > > The following patch fixes the issue introduced by > > commit 06b2a76d25d3cfbd14680021c1d356c91be6904e > Author: Yi Yang <yi.y.yang@intel.com> > Date: Fri Feb 8 04:21:57 2008 -0800 > > Signed-off-by: Swen Schillig <swen@vnet.ibm.com> > --- > lib/vsprintf.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > Index: HEAD/lib/vsprintf.c > =================================================================== > --- HEAD.orig/lib/vsprintf.c > +++ HEAD/lib/vsprintf.c > @@ -220,7 +220,7 @@ int strict_strtou##type(const char *cp, > if (len == 0) \ > return -EINVAL; \ > \ > - val = simple_strtoul(cp, &tail, base); \ > + val = simple_strtoull(cp, &tail, base); \ > if ((*tail == '\0') || \ > ((len == (size_t)(tail - cp) + 1) && (*tail == '\n'))) {\ > *res = val; \
| |