diff options
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/cli/cli-setshow.c | 14 |
2 files changed, 21 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 26dafe9..a4027c9 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2013-03-22 Pedro Alves <palves@redhat.com> + Yao Qi <yao@codesourcery.com> + Mark Kettenis <kettenis@gnu.org> + + * cli/cli-setshow.c (do_set_command) <var_uinteger>: + Don't let the user set the value to UINT_MAX directly. + <var_integer>: Don't let the user set the value to INT_MAX + directly. + 2013-03-22 Jan Kratochvil <jan.kratochvil@redhat.com> * remote.c (remote_unpush_target): New function. diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c index 95ebbe7..f612369 100644 --- a/gdb/cli/cli-setshow.c +++ b/gdb/cli/cli-setshow.c @@ -278,7 +278,12 @@ do_set_command (char *arg, int from_tty, struct cmd_list_element *c) if (c->var_type == var_uinteger && val == 0) val = UINT_MAX; - else if (val > UINT_MAX) + else if (val < 0 + /* For var_uinteger, don't let the user set the value + to UINT_MAX directly, as that exposes an + implementation detail to the user interface. */ + || (c->var_type == var_uinteger && val >= UINT_MAX) + || (c->var_type == var_zuinteger && val > UINT_MAX)) error (_("integer %s out of range"), plongest (val)); if (*(unsigned int *) c->var != val) @@ -300,7 +305,12 @@ do_set_command (char *arg, int from_tty, struct cmd_list_element *c) if (val == 0 && c->var_type == var_integer) val = INT_MAX; - else if (val > INT_MAX || val < INT_MIN) + else if (val < INT_MIN + /* For var_integer, don't let the user set the value + to INT_MAX directly, as that exposes an + implementation detail to the user interface. */ + || (c->var_type == var_integer && val >= INT_MAX) + || (c->var_type == var_zinteger && val > INT_MAX)) error (_("integer %s out of range"), plongest (val)); if (*(int *) c->var != val) |