"enable count" user input error handling (PR gdb/15678)

Typing "enable count" by itself crashes GDB. Also, if you omit the
breakpoint number/range, the error message is not very clear:

(gdb) enable count 2
warning: bad breakpoint number at or near ''
(gdb) enable count
Segmentation fault (core dumped)

With this patch, the error messages are slightly more helpful:

(gdb) enable count 2
Argument required (one or more breakpoint numbers).
(gdb) enable count
Argument required (hit count).

gdb/ChangeLog:

	PR gdb/15678
	* breakpoint.c (map_breakpoint_numbers): Check for empty args
	string.
	(enable_count_command): Check args for NULL value.

gdb/testsuite/ChangeLog:

	PR gdb/15678
	* gdb.base/ena-dis-br.exp: Test "enable count" for bad user input.
This commit is contained in:
Simon Marchi
2015-02-02 14:57:31 -05:00
parent 5532504724
commit b9d6130764
4 changed files with 26 additions and 2 deletions

View File

@@ -14880,7 +14880,7 @@ map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
int match;
struct get_number_or_range_state state;
if (args == 0)
if (args == 0 || *args == '\0')
error_no_arg (_("one or more breakpoint numbers"));
init_number_or_range (&state, args);
@@ -15217,7 +15217,12 @@ do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
static void
enable_count_command (char *args, int from_tty)
{
int count = get_number (&args);
int count;
if (args == NULL)
error_no_arg (_("hit count"));
count = get_number (&args);
map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
}