diff options
author | Tim Potter <tpot@samba.org> | 2002-11-29 01:11:08 +0000 |
---|---|---|
committer | Tim Potter <tpot@samba.org> | 2002-11-29 01:11:08 +0000 |
commit | 9fe17afefeca3576841dfee8bf05d71f1dac32cc (patch) | |
tree | 17c425fc0e01f56de0f9b6ecd1228694b4483284 | |
parent | 531ecf607a87d76e9a6b734dfd3fab94500c9029 (diff) | |
download | samba-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.c | 38 |
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)) |