diff options
Diffstat (limited to 'cli')
| -rw-r--r-- | cli/src/cli-cmd-parser.c | 32 | 
1 files changed, 26 insertions, 6 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index b53b1ee648b..5fdb9d08a74 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -3418,13 +3418,18 @@ out:  } +/* return value: + *      -1  in case of failure. + *       0  in case of success. + */  int32_t  cli_snap_config_limit_parse (const char **words, dict_t *dict,                               unsigned int wordcount, unsigned int index,                               char *key)  { -        int             ret             =       -1; -        int             limit           =       0; +        int             ret             = -1; +        unsigned int    limit           = 0; +        char            *end_ptr        = NULL;          GF_ASSERT (words);          GF_ASSERT (dict); @@ -3437,10 +3442,24 @@ cli_snap_config_limit_parse (const char **words, dict_t *dict,                  goto out;          } -        limit = strtol (words[index], NULL, 0); -        if (limit <= 0) { +        limit = strtol (words[index], &end_ptr, 10); + +        if (limit <= 0 || strcmp (end_ptr, "") != 0) { +                ret = -1; +                cli_err("Please enter an integer value " +                        "greater than zero for %s", key); +                goto out; +        } + +        if (strcmp (key, "snap-max-hard-limit") == 0 && limit > 256) { +                ret = -1; +                cli_err ("%s value cannot be more than 256", key); +                goto out; +        } + +        if (strcmp (key, "snap-max-soft-limit") == 0 && limit > 100) {                  ret = -1; -                cli_err ("%s should be greater than 0.", key); +                cli_err ("%s value cannot be more than 100", key);                  goto out;          } @@ -3461,7 +3480,8 @@ out:   *                                         [snap-max-soft-limit <count>]   *     return value: <0  on failure -                  1  if user cancels the operation +                  1  if user cancels the operation, or limit value is out of +                                                                      range                    0  on success    NOTE : snap-max-soft-limit can only be set for system.  | 
