summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2002-11-29 01:11:08 +0000
committerTim Potter <tpot@samba.org>2002-11-29 01:11:08 +0000
commit9fe17afefeca3576841dfee8bf05d71f1dac32cc (patch)
tree17c425fc0e01f56de0f9b6ecd1228694b4483284
parent531ecf607a87d76e9a6b734dfd3fab94500c9029 (diff)
downloadsamba-9fe17afefeca3576841dfee8bf05d71f1dac32cc.tar.gz
samba-9fe17afefeca3576841dfee8bf05d71f1dac32cc.tar.bz2
samba-9fe17afefeca3576841dfee8bf05d71f1dac32cc.zip
Merge of argument check fixes from HEAD.
(This used to be commit 5ea2edaadd87c24f63991678183c5d01225eabf7)
-rw-r--r--source3/python/py_spoolss_printers_conv.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/source3/python/py_spoolss_printers_conv.c b/source3/python/py_spoolss_printers_conv.c
index 3e3ef95b12..f7b2f516df 100644
--- a/source3/python/py_spoolss_printers_conv.c
+++ b/source3/python/py_spoolss_printers_conv.c
@@ -217,10 +217,8 @@ BOOL py_to_PRINTER_INFO_1(PRINTER_INFO_1 *info, PyObject *dict)
PyObject *obj, *dict_copy = PyDict_Copy(dict);
BOOL result = False;
- if (!(obj = PyDict_GetItemString(dict_copy, "level")))
- goto done;
-
- if (!PyInt_Check(obj))
+ if (!(obj = PyDict_GetItemString(dict_copy, "level")) ||
+ !PyInt_Check(obj))
goto done;
PyDict_DelItemString(dict_copy, "level");
@@ -272,25 +270,25 @@ BOOL py_to_PRINTER_INFO_2(PRINTER_INFO_2 *info, PyObject *dict,
PyObject *obj, *dict_copy = PyDict_Copy(dict);
BOOL result = False;
- /* Convert security descriptor */
+ /* Convert security descriptor - may be NULL */
- if (!(obj = PyDict_GetItemString(dict_copy, "security_descriptor")))
- goto done;
+ info->secdesc = NULL;
- if (!PyDict_Check(obj))
- goto done;
+ if ((obj = PyDict_GetItemString(dict_copy, "security_descriptor"))) {
- if (!py_to_SECDESC(&info->secdesc, obj, mem_ctx))
- goto done;
+ if (!PyDict_Check(obj))
+ goto done;
- PyDict_DelItemString(dict_copy, "security_descriptor");
+ if (!py_to_SECDESC(&info->secdesc, obj, mem_ctx))
+ goto done;
- /* Convert device mode */
+ PyDict_DelItemString(dict_copy, "security_descriptor");
+ }
- if (!(obj = PyDict_GetItemString(dict_copy, "device_mode")))
- goto done;
+ /* Convert device mode */
- if (!PyDict_Check(obj))
+ if (!(obj = PyDict_GetItemString(dict_copy, "device_mode"))
+ || !PyDict_Check(obj))
goto done;
info->devmode = talloc(mem_ctx, sizeof(DEVICEMODE));
@@ -300,6 +298,14 @@ BOOL py_to_PRINTER_INFO_2(PRINTER_INFO_2 *info, PyObject *dict,
PyDict_DelItemString(dict_copy, "device_mode");
+ /* Check info level */
+
+ if (!(obj = PyDict_GetItemString(dict_copy, "level")) ||
+ !PyInt_Check(obj))
+ goto done;
+
+ PyDict_DelItemString(dict_copy, "level");
+
/* Convert remaining elements of dictionary */
if (!to_struct(info, dict_copy, py_PRINTER_INFO_2))