[Libguestfs] [PATCH 3/6] python: check some types for get_value

Peter Wu peter at lekensteyn.nl
Sat Aug 16 11:28:47 UTC 2014


Recognise early that a value passed to node_get_value is not a dict
rather than spitting out "no 'key' element in dictionary".

Detect errors for invalid `t` elements instead of silently using `-1`.
---
 generator/generator.ml | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/generator/generator.ml b/generator/generator.ml
index 1c35da9..44a4d47 100755
--- a/generator/generator.ml
+++ b/generator/generator.ml
@@ -2844,6 +2844,11 @@ get_value (PyObject *v, hive_set_value *ret)
   PyObject *bytes;
 #endif
 
+  if (!PyDict_Check (v)) {
+    PyErr_SetString (PyExc_TypeError, \"expected dictionary type for value\");
+    return -1;
+  }
+
   obj = PyDict_GetItemString (v, \"key\");
   if (!obj) {
     PyErr_SetString (PyExc_KeyError, \"no 'key' element in dictionary\");
@@ -2862,6 +2867,10 @@ get_value (PyObject *v, hive_set_value *ret)
     return -1;
   }
   ret->t = PyLong_AsLong (obj);
+  if (PyErr_Occurred ()) {
+    PyErr_SetString (PyExc_TypeError, \"expected int type for 't'\");
+    return -1;
+  }
 
   obj = PyDict_GetItemString (v, \"value\");
   if (!obj) {
-- 
2.0.4




More information about the Libguestfs mailing list