]> granicus.if.org Git - mutt/commitdiff
Make the parsing of integers more
authorThomas Roessler <roessler@does-not-exist.org>
Wed, 2 Feb 2000 10:53:28 +0000 (10:53 +0000)
committerThomas Roessler <roessler@does-not-exist.org>
Wed, 2 Feb 2000 10:53:28 +0000 (10:53 +0000)
init.c

diff --git a/init.c b/init.c
index f01ed33e5f6f08d082db560907337b8fe9512f1c..05e1540753b166d3b6b32c2f88b3bac51f1b0744 100644 (file)
--- a/init.c
+++ b/init.c
@@ -1040,6 +1040,8 @@ static int parse_set (BUFFER *tmp, BUFFER *s, unsigned long data, BUFFER *err)
     else if (DTYPE(MuttVars[idx].type) == DT_NUM)
     {
       short *ptr = (short *) MuttVars[idx].data;
+      int val;
+      char *t;
 
       if (query || *s->dptr != '=')
       {
@@ -1051,7 +1053,16 @@ static int parse_set (BUFFER *tmp, BUFFER *s, unsigned long data, BUFFER *err)
       s->dptr++;
 
       mutt_extract_token (tmp, s, 0);
-      *ptr = (short) atoi (tmp->data);
+      val = strtol (tmp->data, &t, 0);
+
+      if (!*tmp->data || *t || (short) val != val)
+      {
+       snprintf (err->data, err->dsize, _("%s: invalid value"), tmp->data);
+       r = -1;
+       break;
+      }
+      else
+       *ptr = (short) val;
 
       /* these ones need a sanity check */
       if (mutt_strcmp (MuttVars[idx].option, "history") == 0)