summaryrefslogtreecommitdiff
path: root/source3/python/py_common.c
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2002-09-09 01:06:20 +0000
committerTim Potter <tpot@samba.org>2002-09-09 01:06:20 +0000
commitbffdffcbb10db9a510c8713158cb3e4044b23c2c (patch)
treea40dfa2ea006f5fc66b1e32140d79af71089b396 /source3/python/py_common.c
parente7561581ffe1c2df591b28820e8815d3c6dd2c42 (diff)
downloadsamba-bffdffcbb10db9a510c8713158cb3e4044b23c2c.tar.gz
samba-bffdffcbb10db9a510c8713158cb3e4044b23c2c.tar.bz2
samba-bffdffcbb10db9a510c8713158cb3e4044b23c2c.zip
Check no extra fields are present when parsing credentials.
(This used to be commit fff081d3440373071d8859b7a7d71cf6489126a4)
Diffstat (limited to 'source3/python/py_common.c')
-rw-r--r--source3/python/py_common.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/source3/python/py_common.c b/source3/python/py_common.c
index 6247bf6371..e21858e072 100644
--- a/source3/python/py_common.c
+++ b/source3/python/py_common.c
@@ -144,6 +144,8 @@ BOOL py_parse_creds(PyObject *creds, char **username, char **domain,
if (creds && PyDict_Size(creds) > 0) {
PyObject *username_obj, *password_obj, *domain_obj;
+ PyObject *key, *value;
+ int i;
/* Check for presence of required fields */
@@ -166,8 +168,6 @@ BOOL py_parse_creds(PyObject *creds, char **username, char **domain,
return False;
}
- /* Look for any other fields */
-
/* Check type of required fields */
if (!PyString_Check(username_obj)) {
@@ -185,6 +185,21 @@ BOOL py_parse_creds(PyObject *creds, char **username, char **domain,
return False;
}
+ /* Look for any extra fields */
+
+ i = 0;
+
+ while (PyDict_Next(creds, &i, &key, &value)) {
+ if (strcmp(PyString_AsString(key), "domain") != 0 &&
+ strcmp(PyString_AsString(key), "username") != 0 &&
+ strcmp(PyString_AsString(key), "password") != 0) {
+ asprintf(errstr,
+ "creds contain extra field '%s'",
+ PyString_AsString(key));
+ return False;
+ }
+ }
+
/* Assign values */
*username = PyString_AsString(username_obj);