summaryrefslogtreecommitdiff
path: root/src/cli_val.l
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2008-03-04 12:55:18 -0800
committerStephen Hemminger <stephen.hemminger@vyatta.com>2008-03-04 12:55:18 -0800
commit14c69a606f627187539796f0158dbf181a21dc00 (patch)
tree2316507aeaa62d40ed6bd04ccf45bc726f12c328 /src/cli_val.l
parent6194a4338de8e612b925530265db0759a94814c4 (diff)
parent41e72b84ece50e0104e2e58c6452fc6012e2c8c3 (diff)
downloadvyatta-cfg-14c69a606f627187539796f0158dbf181a21dc00.tar.gz
vyatta-cfg-14c69a606f627187539796f0158dbf181a21dc00.zip
Merge branch 'glendale' of suva.vyatta.com:/git/vyatta-cfg into glendale
Diffstat (limited to 'src/cli_val.l')
-rw-r--r--src/cli_val.l12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/cli_val.l b/src/cli_val.l
index 5856cea..c24a6dc 100644
--- a/src/cli_val.l
+++ b/src/cli_val.l
@@ -1,4 +1,7 @@
%{
+#define __USE_ISOC99
+#include <limits.h>
+
#include "cli_val.h"
#include "cli_parse.h"
#include "cli_objects.h"
@@ -226,6 +229,15 @@ false {
}
[0-9]+ {
+ long long int cval = 0;
+ char *endp = NULL;
+ errno = 0;
+ cval = strtoll(yytext, &endp, 10);
+ if ((errno == ERANGE && (cval == LLONG_MAX || cval == LLONG_MIN))
+ || (errno != 0 && cval == 0)
+ || (*endp != '\0') || (cval < 0) || (cval > UINT_MAX)) {
+ return SYNTAX_ERROR;
+ }
make_val_value(INT_TYPE);
return VALUE;
}