Allow None to be used as a valid credential for functions that take a
authorTim Potter <tpot@samba.org>
Tue, 28 May 2002 02:09:54 +0000 (02:09 +0000)
committerTim Potter <tpot@samba.org>
Tue, 28 May 2002 02:09:54 +0000 (02:09 +0000)
credential as a parameter.

source/python/py_samr.c
source/python/py_spoolss_drivers.c
source/python/py_spoolss_ports.c
source/python/py_spoolss_printers.c

index f715f891b4fe73c0aa00e9c8f0fd9eea55872c8b..733a57c1d4f1bbdf3fb298e8dd97cf057ab8af33 100644 (file)
@@ -283,10 +283,16 @@ static PyObject *samr_connect(PyObject *self, PyObject *args, PyObject *kw)
        NTSTATUS ntstatus;
 
        if (!PyArg_ParseTupleAndKeywords(
-                   args, kw, "s|O!i", kwlist, &server, &PyDict_Type,
-                   &creds, &desired_access)) 
+                   args, kw, "s|Oi", kwlist, &server, &creds,
+                   &desired_access)) 
                return NULL;
 
+       if (creds && creds != Py_None && !PyDict_Check(creds)) {
+               PyErr_SetString(PyExc_TypeError, 
+                               "credentials must be dictionary or None");
+               return NULL;
+       }
+
        if (!(cli = open_pipe_creds(server, creds, PIPE_SAMR, &errstr))) {
                PyErr_SetString(samr_error, errstr);
                free(errstr);
index 9b7a8d32944b5465c7a3fef95855fdf91e456874..19fe5800aa7e73b488991df51ddc508ac909a002 100644 (file)
@@ -38,8 +38,8 @@ PyObject *spoolss_enumprinterdrivers(PyObject *self, PyObject *args,
        /* Parse parameters */
 
        if (!PyArg_ParseTupleAndKeywords(
-                   args, kw, "s|iO!s", kwlist, &server, &level, &PyDict_Type,
-                   &creds, &arch))
+                   args, kw, "s|iOs", kwlist, &server, &level, &creds,
+                   &arch)) 
                return NULL;
        
        if (server[0] != '\\' || server[1] != '\\') {
@@ -49,6 +49,12 @@ PyObject *spoolss_enumprinterdrivers(PyObject *self, PyObject *args,
 
        server += 2;
 
+       if (creds && creds != Py_None && !PyDict_Check(creds)) {
+               PyErr_SetString(PyExc_TypeError, 
+                               "credentials must be dictionary or None");
+               return NULL;
+       }
+
        /* Call rpc function */
        
        if (!(cli = open_pipe_creds(server, creds, PIPE_SPOOLSS, &errstr))) {
@@ -248,8 +254,8 @@ PyObject *spoolss_getprinterdriverdir(PyObject *self, PyObject *args,
        /* Parse parameters */
 
        if (!PyArg_ParseTupleAndKeywords(
-                   args, kw, "s|isO!", kwlist, &server, &level,
-                   &arch, &PyDict_Type, &creds))
+                   args, kw, "s|isO", kwlist, &server, &level,
+                   &arch, &creds))
                return NULL;
 
        if (server[0] != '\\' || server[1] != '\\') {
@@ -259,6 +265,12 @@ PyObject *spoolss_getprinterdriverdir(PyObject *self, PyObject *args,
 
        server += 2;
 
+       if (creds && creds != Py_None && !PyDict_Check(creds)) {
+               PyErr_SetString(PyExc_TypeError, 
+                               "credentials must be dictionary or None");
+               return NULL;
+       }
+
        /* Call rpc function */
 
        if (!(cli = open_pipe_creds(server, creds, PIPE_SPOOLSS, &errstr))) {
@@ -324,13 +336,19 @@ PyObject *spoolss_addprinterdriver(PyObject *self, PyObject *args,
        } dinfo;
 
        if (!PyArg_ParseTupleAndKeywords(
-                   args, kw, "sO!|O!", kwlist, &server, &PyDict_Type,
-                   &info, &PyDict_Type, &creds))
+                   args, kw, "sO!|O", kwlist, &server, &PyDict_Type,
+                   &info, &creds))
                return NULL;
        
        if (server[0] == '\\' && server[1] == '\\')
                server += 2;
 
+       if (creds && creds != Py_None && !PyDict_Check(creds)) {
+               PyErr_SetString(PyExc_TypeError, 
+                               "credentials must be dictionary or None");
+               return NULL;
+       }
+
        if (!(mem_ctx = talloc_init())) {
                PyErr_SetString(
                        spoolss_error, "unable to init talloc context\n");
index f0bea5175d94412a9ab841b2284a7929bd991a92..8d59274a00a11d793e1096e090212669affc7b01 100644 (file)
@@ -37,13 +37,18 @@ PyObject *spoolss_enumports(PyObject *self, PyObject *args, PyObject *kw)
        /* Parse parameters */
 
        if (!PyArg_ParseTupleAndKeywords(
-                   args, kw, "s|iO!", kwlist, &server, &level,
-                   &PyDict_Type, &creds))
+                   args, kw, "s|iO", kwlist, &server, &level, &creds))
                return NULL;
        
        if (server[0] == '\\' && server[1] == '\\')
                server += 2;
 
+       if (creds && creds != Py_None && !PyDict_Check(creds)) {
+               PyErr_SetString(PyExc_TypeError, 
+                               "credentials must be dictionary or None");
+               return NULL;
+       }
+
        if (!(cli = open_pipe_creds(server, creds, PIPE_SPOOLSS, &errstr))) {
                PyErr_SetString(spoolss_error, errstr);
                free(errstr);
index aa5f636b06367aae80e4a84bce901fa1535cb03e..934bfcc8183e84ea7f54a4aa405c894164f57614 100644 (file)
@@ -34,7 +34,7 @@ PyObject *spoolss_openprinter(PyObject *self, PyObject *args, PyObject *kw)
        struct cli_state *cli;
 
        if (!PyArg_ParseTupleAndKeywords(
-                   args, kw, "s|O!i", kwlist, &unc_name, &PyDict_Type, &creds,
+                   args, kw, "s|Oi", kwlist, &unc_name, &creds,
                    &desired_access))
                return NULL;
 
@@ -50,6 +50,12 @@ PyObject *spoolss_openprinter(PyObject *self, PyObject *args, PyObject *kw)
                *c = 0;
        }
 
+       if (creds && creds != Py_None && !PyDict_Check(creds)) {
+               PyErr_SetString(PyExc_TypeError, 
+                               "credentials must be dictionary or None");
+               return NULL;
+       }
+
        if (!(cli = open_pipe_creds(server, creds, PIPE_SPOOLSS, &errstr))) {
                PyErr_SetString(spoolss_error, errstr);
                free(errstr);
@@ -286,13 +292,19 @@ PyObject *spoolss_enumprinters(PyObject *self, PyObject *args, PyObject *kw)
        /* Parse parameters */
 
        if (!PyArg_ParseTupleAndKeywords(
-                   args, kw, "s|siiO!", kwlist, &server, &name, &level, 
-                   &flags, &PyDict_Type, &creds))
+                   args, kw, "s|siiO", kwlist, &server, &name, &level, 
+                   &flags, &creds))
                return NULL;
        
        if (server[0] == '\\' && server[1] == '\\')
                server += 2;
 
+       if (creds && creds != Py_None && !PyDict_Check(creds)) {
+               PyErr_SetString(PyExc_TypeError, 
+                               "credentials must be dictionary or None");
+               return NULL;
+       }
+
        if (!(cli = open_pipe_creds(server, creds, PIPE_SPOOLSS, &errstr))) {
                PyErr_SetString(spoolss_error, errstr);
                free(errstr);