[Informixdb-cvs] informixdb/ext _informixdb.ec,1.82,1.83
Brought to you by:
chaese,
f-apolloner
From: Carsten H. <ch...@us...> - 2006-12-02 02:30:48
|
Update of /cvsroot/informixdb/informixdb/ext In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv14758/ext Modified Files: _informixdb.ec Log Message: - Fix segfault caused by improper connect() arguments - Allow providing None for username and password as an alternative to not providing them at all. Index: _informixdb.ec =================================================================== RCS file: /cvsroot/informixdb/informixdb/ext/_informixdb.ec,v retrieving revision 1.82 retrieving revision 1.83 diff -C2 -d -r1.82 -r1.83 *** _informixdb.ec 13 Nov 2006 15:45:59 -0000 1.82 --- _informixdb.ec 2 Dec 2006 02:30:46 -0000 1.83 *************** *** 1082,1086 **** setConnectionName(NULL); ! PyDict_Clear(self->binary_types); Py_XDECREF(self->binary_types); Py_XDECREF(self->messages); --- 1082,1088 ---- setConnectionName(NULL); ! if (self->binary_types) { ! PyDict_Clear(self->binary_types); ! } Py_XDECREF(self->binary_types); Py_XDECREF(self->messages); *************** *** 2979,2990 **** EXEC SQL END DECLARE SECTION; int autocommit = 0; static char* kwd_list[] = { "dsn", "user", "password", "autocommit", 0 }; ! if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|ssi", kwd_list, ! &connectionString, &dbUser, &dbPass, &autocommit)) { return -1; } sprintf(self->name, "CONN%p", self); connectionName = self->name; --- 2981,3002 ---- EXEC SQL END DECLARE SECTION; int autocommit = 0; + PyObject *pyDbUser = NULL, *pyDbPass = NULL; static char* kwd_list[] = { "dsn", "user", "password", "autocommit", 0 }; ! if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|OOi", kwd_list, ! &connectionString, &pyDbUser, &pyDbPass, &autocommit)) { return -1; } + if (pyDbUser && pyDbUser != Py_None) { + dbUser = PyString_AsString(pyDbUser); + if (!dbUser) return -1; + } + if (pyDbPass && pyDbPass != Py_None) { + dbPass = PyString_AsString(pyDbPass); + if (!dbPass) return -1; + } + sprintf(self->name, "CONN%p", self); connectionName = self->name; |