From 1beb6992bd5132cd98b293051b14abc7f2718842 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Sun, 31 Oct 2010 15:44:18 +0100 Subject: [PATCH] src/common.c: parse_values: Add error handling. --- src/common.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/common.c b/src/common.c index 1cef5e17..87d7bf08 100644 --- a/src/common.c +++ b/src/common.c @@ -981,8 +981,20 @@ int parse_values (char *buffer, value_list_t *vl, const data_set_t *ds) if (strcmp ("N", ptr) == 0) vl->time = cdtime (); else - /* FIXME: Add error checking here. */ - vl->time = DOUBLE_TO_CDTIME_T (atof (ptr)); + { + char *endptr = NULL; + double tmp; + + errno = 0; + tmp = strtod (ptr, &endptr); + if ((errno != 0) /* Overflow */ + || (endptr == ptr) /* Invalid string */ + || (endptr == NULL) /* This should not happen */ + || (*endptr != 0)) /* Trailing chars */ + return (-1); + + vl->time = DOUBLE_TO_CDTIME_T (tmp); + } } else { -- 2.11.0