gdb/
PR 14321 * findcmd.c (parse_find_args): New variable pattern_buf_size_need. Increase buffer sizes to 2x we need, not just 2x of the previous size. gdb/testsuite/ PR 14321 * gdb.base/find.exp (find int64_search_buf, +64/8*100, int64_search_buf): New test.
This commit is contained in:
parent
a6fb9c08a9
commit
76b83c514f
|
@ -1,3 +1,9 @@
|
||||||
|
2012-07-06 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
PR 14321
|
||||||
|
* findcmd.c (parse_find_args): New variable pattern_buf_size_need.
|
||||||
|
Increase buffer sizes to 2x we need, not just 2x of the previous size.
|
||||||
|
|
||||||
2012-07-06 Tom Tromey <tromey@redhat.com>
|
2012-07-06 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* c-exp.y (DOTDOTDOT): New token.
|
* c-exp.y (DOTDOTDOT): New token.
|
||||||
|
|
|
@ -170,6 +170,7 @@ parse_find_args (char *args, ULONGEST *max_countp,
|
||||||
{
|
{
|
||||||
LONGEST x;
|
LONGEST x;
|
||||||
int val_bytes;
|
int val_bytes;
|
||||||
|
ULONGEST pattern_buf_size_need;
|
||||||
|
|
||||||
while (isspace (*s))
|
while (isspace (*s))
|
||||||
++s;
|
++s;
|
||||||
|
@ -179,12 +180,13 @@ parse_find_args (char *args, ULONGEST *max_countp,
|
||||||
|
|
||||||
/* Keep it simple and assume size == 'g' when watching for when we
|
/* Keep it simple and assume size == 'g' when watching for when we
|
||||||
need to grow the pattern buf. */
|
need to grow the pattern buf. */
|
||||||
if ((pattern_buf_end - pattern_buf + max (val_bytes, sizeof (int64_t)))
|
pattern_buf_size_need = (pattern_buf_end - pattern_buf
|
||||||
> pattern_buf_size)
|
+ max (val_bytes, sizeof (int64_t)));
|
||||||
|
if (pattern_buf_size_need > pattern_buf_size)
|
||||||
{
|
{
|
||||||
size_t current_offset = pattern_buf_end - pattern_buf;
|
size_t current_offset = pattern_buf_end - pattern_buf;
|
||||||
|
|
||||||
pattern_buf_size *= 2;
|
pattern_buf_size = pattern_buf_size_need * 2;
|
||||||
pattern_buf = xrealloc (pattern_buf, pattern_buf_size);
|
pattern_buf = xrealloc (pattern_buf, pattern_buf_size);
|
||||||
pattern_buf_end = pattern_buf + current_offset;
|
pattern_buf_end = pattern_buf + current_offset;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2012-07-06 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
PR 14321
|
||||||
|
* gdb.base/find.exp
|
||||||
|
(find int64_search_buf, +64/8*100, int64_search_buf): New test.
|
||||||
|
|
||||||
2012-07-06 Tom Tromey <tromey@redhat.com>
|
2012-07-06 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* gdb.base/whatis.exp: Add test.
|
* gdb.base/whatis.exp: Add test.
|
||||||
|
|
|
@ -182,3 +182,6 @@ if [isnative] {
|
||||||
"${hex_number}${one_pattern_found}" \
|
"${hex_number}${one_pattern_found}" \
|
||||||
"find pattern straddling chunk boundary"
|
"find pattern straddling chunk boundary"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check GDB buffer overflow.
|
||||||
|
gdb_test "find int64_search_buf, +64/8*100, int64_search_buf" " <int64_search_buf>\r\n1 pattern found\\."
|
||||||
|
|
Loading…
Reference in New Issue