GNU gdb (GDB) 7.4.50.20120630-cvs ./gdb ./gdb (gdb) find main,+100000000,xop_table memory clobbered past end of allocated block This code does not expect val_bytes can be huge: findcmd.c: /* Keep it simple and assume size == 'g' when watching for when we need to grow the pattern buf. */ if ((pattern_buf_end - pattern_buf + max (val_bytes, sizeof (int64_t))) > pattern_buf_size) { size_t current_offset = pattern_buf_end - pattern_buf; pattern_buf_size *= 2; pattern_buf = xrealloc (pattern_buf, pattern_buf_size); pattern_buf_end = pattern_buf + current_offset; }
CVSROOT: /cvs/src Module name: src Changes by: jkratoch@sourceware.org 2012-07-06 15:51:40 Modified files: gdb : ChangeLog findcmd.c gdb/testsuite : ChangeLog gdb/testsuite/gdb.base: find.exp Log message: 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. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.14443&r2=1.14444 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/findcmd.c.diff?cvsroot=src&r1=1.18&r2=1.19 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/ChangeLog.diff?cvsroot=src&r1=1.3278&r2=1.3279 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.base/find.exp.diff?cvsroot=src&r1=1.11&r2=1.12
Checked in.