[PATCH 5/7] Check for negative argument in Type.template_argument

Tom Tromey tom@tromey.com
Sat Sep 15 07:25:00 GMT 2018


typy_template_argument did not check if the template argument was
non-negative.  A negative value could cause a gdb crash.

gdb/ChangeLog
2018-09-15  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-15  Tom Tromey  <tom@tromey.com>

	PR python/17284:
	* gdb.python/py-template.exp (test_template_arg): Add test for
	negative template argument number.
---
 gdb/ChangeLog                            | 6 ++++++
 gdb/python/py-type.c                     | 7 +++++++
 gdb/testsuite/ChangeLog                  | 6 ++++++
 gdb/testsuite/gdb.python/py-template.exp | 4 ++++
 4 files changed, 23 insertions(+)

diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index c7cad2e6628..897ad9374af 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/gdb.python/py-template.exp b/gdb/testsuite/gdb.python/py-template.exp
index 793e68d7fe4..96383a73c51 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"
-- 
2.17.1



More information about the Gdb-patches mailing list