From 32998ff66ea137d6bb88cf23dfa680c290c997f0 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@uliege.be>
Date: Thu, 17 Sep 2020 11:39:50 +0200
Subject: [PATCH] sanity checks for input vectors of pairs

---
 api/GenApi.py | 6 +++++-
 api/gmsh.py   | 6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/api/GenApi.py b/api/GenApi.py
index 51d9a9a909..90667ab6bf 100644
--- a/api/GenApi.py
+++ b/api/GenApi.py
@@ -1166,10 +1166,14 @@ def _ivectordouble(o):
 def _ivectorpair(o):
     if use_numpy:
         array = numpy.ascontiguousarray(o, numpy.int32)
+        if(len(o) and (array.ndim != 2 or array.shape[1] != 2)):
+            raise Exception("Invalid data for input vector of pairs")
         ct = array.ctypes
         ct.array = array
-        return  ct, c_size_t(len(o) * 2)
+        return ct, c_size_t(len(o) * 2)
     else:
+        if(len(o) and len(o[0]) != 2):
+            raise Exception("Invalid data for input vector of pairs")
         return ((c_int * 2) * len(o))(*o), c_size_t(len(o) * 2)
 
 def _ivectorstring(o):
diff --git a/api/gmsh.py b/api/gmsh.py
index e25a820513..f88a06bd6b 100644
--- a/api/gmsh.py
+++ b/api/gmsh.py
@@ -150,10 +150,14 @@ def _ivectordouble(o):
 def _ivectorpair(o):
     if use_numpy:
         array = numpy.ascontiguousarray(o, numpy.int32)
+        if(len(o) and (array.ndim != 2 or array.shape[1] != 2)):
+            raise Exception("Invalid data for input vector of pairs")
         ct = array.ctypes
         ct.array = array
-        return  ct, c_size_t(len(o) * 2)
+        return ct, c_size_t(len(o) * 2)
     else:
+        if(len(o) and len(o[0]) != 2):
+            raise Exception("Invalid data for input vector of pairs")
         return ((c_int * 2) * len(o))(*o), c_size_t(len(o) * 2)
 
 def _ivectorstring(o):
-- 
GitLab