qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 3/6] Add more error handling to strtosz()


From: Jes . Sorensen
Subject: [Qemu-devel] [PATCH 3/6] Add more error handling to strtosz()
Date: Thu, 7 Oct 2010 17:01:47 +0200

From: Jes Sorensen <address@hidden>

Signed-off-by: Jes Sorensen <address@hidden>
---
 cutils.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/cutils.c b/cutils.c
index 0782032..012eb11 100644
--- a/cutils.c
+++ b/cutils.c
@@ -292,6 +292,7 @@ int fcntl_setfl(int fd, int flag)
 ssize_t strtosz(const char *nptr, char **end)
 {
     ssize_t retval = -1;
+    int64_t tmpval;
     char *endptr;
     int mul_required = 0;
     double val, mul = 1;
@@ -301,9 +302,9 @@ ssize_t strtosz(const char *nptr, char **end)
         mul_required = 1;
     }
 
+    errno = 0;
     val = strtod(nptr, &endptr);
-
-    if (val < 0)
+    if (endptr == nptr || errno != 0 || val < 0)
         goto fail;
 
     switch (*endptr++) {
@@ -332,7 +333,10 @@ ssize_t strtosz(const char *nptr, char **end)
         goto fail;
     }
 
-    retval = (ssize_t)(val * mul);
+    tmpval = (val * mul);
+    if (tmpval > ~(size_t)0)
+        goto fail;
+    retval = tmpval;
 
     if (end)
         *end = endptr;
-- 
1.7.2.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]