aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-09-15 00:29:20 -0600
committerTom Tromey <tom@tromey.com>2018-09-23 23:15:12 -0600
commitfd3ba736db19d4c7cd928f3735329339a8c8ef47 (patch)
tree4e9f9d7422920505955baf6c7c3b54d8f2ea26cc
parent39a24317ac65837663ce1e1b0adcf880758ddc8e (diff)
downloadgdb-fd3ba736db19d4c7cd928f3735329339a8c8ef47.zip
gdb-fd3ba736db19d4c7cd928f3735329339a8c8ef47.tar.gz
gdb-fd3ba736db19d4c7cd928f3735329339a8c8ef47.tar.bz2
Check for negative argument in Type.template_argument
typy_template_argument did not check if the template argument was non-negative. A negative value could cause a gdb crash. 2018-09-23 Tom Tromey <tom@tromey.com> PR python/17284: * python/py-type.c (typy_template_argument): Check for negative argument number. gdb/testsuite/ChangeLog 2018-09-23 Tom Tromey <tom@tromey.com> PR python/17284: * gdb.python/py-template.exp (test_template_arg): Add test for negative template argument number.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/python/py-type.c7
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.python/py-template.exp4
4 files changed, 23 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 15ae55a..f887159 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2018-09-23 Tom Tromey <tom@tromey.com>
+ PR python/17284:
+ * python/py-type.c (typy_template_argument): Check for negative
+ argument number.
+
+2018-09-23 Tom Tromey <tom@tromey.com>
+
PR python/14062:
* python/python.c (gdbpy_run_events): Do not ignore exceptions.
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index c7cad2e..897ad93 100644
--- a/gdb/python/py-type.c
+++ b/gdb/python/py-type.c
@@ -930,6 +930,13 @@ typy_template_argument (PyObject *self, PyObject *args)
if (! PyArg_ParseTuple (args, "i|O", &argno, &block_obj))
return NULL;
+ if (argno < 0)
+ {
+ PyErr_SetString (PyExc_RuntimeError,
+ _("Template argument number must be non-negative"));
+ return NULL;
+ }
+
if (block_obj)
{
block = block_object_to_block (block_obj);
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 131940b..4a624dd 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,11 @@
2018-09-23 Tom Tromey <tom@tromey.com>
+ PR python/17284:
+ * gdb.python/py-template.exp (test_template_arg): Add test for
+ negative template argument number.
+
+2018-09-23 Tom Tromey <tom@tromey.com>
+
PR python/14062:
* gdb.python/python.exp: Add test for post_event error.
diff --git a/gdb/testsuite/gdb.python/py-template.exp b/gdb/testsuite/gdb.python/py-template.exp
index 793e68d..96383a7 100644
--- a/gdb/testsuite/gdb.python/py-template.exp
+++ b/gdb/testsuite/gdb.python/py-template.exp
@@ -54,6 +54,10 @@ proc test_template_arg {exefile type} {
# Replace '*' with '\*' in regex.
regsub -all {\*} $type {\*} t
gdb_test "python print (foo.type.template_argument(0))" $t $type
+
+ gdb_test "python print(foo.type.template_argument(-1))" \
+ "Template argument number must be non-negative\r\nError while executing Python code." \
+ "negative template argument number"
}
test_template_arg "${binfile}-ci" "const int"