if (event_ctx == NULL) {
PyErr_SetString(PyExc_TypeError, "Expected loadparm context");
TALLOC_FREE(ret->mem_ctx);
+ Py_DECREF(ret);
return NULL;
}
if (lp_ctx == NULL) {
PyErr_SetString(PyExc_TypeError, "Expected loadparm context");
TALLOC_FREE(ret->mem_ctx);
+ Py_DECREF(ret);
return NULL;
}
if (!NT_STATUS_IS_OK(status)) {
PyErr_SetNTSTATUS(status);
TALLOC_FREE(ret->mem_ctx);
+ Py_DECREF(ret);
return NULL;
}
} else if (py_basis != Py_None) {
py_base = PyImport_ImportModule("samba.dcerpc.base");
if (py_base == NULL) {
TALLOC_FREE(ret->mem_ctx);
+ Py_DECREF(ret);
return NULL;
}
if (ClientConnection_Type == NULL) {
PyErr_SetNone(PyExc_TypeError);
TALLOC_FREE(ret->mem_ctx);
+ Py_DECREF(ret);
+ Py_DECREF(py_base);
return NULL;
}
if (!PyObject_TypeCheck(py_basis, ClientConnection_Type)) {
PyErr_SetString(PyExc_TypeError, "basis_connection must be a DCE/RPC connection");
TALLOC_FREE(ret->mem_ctx);
+ Py_DECREF(ret);
+ Py_DECREF(py_base);
+ Py_DECREF(ClientConnection_Type);
return NULL;
}
if (base_pipe == NULL) {
PyErr_NoMemory();
TALLOC_FREE(ret->mem_ctx);
+ Py_DECREF(ret);
+ Py_DECREF(py_base);
+ Py_DECREF(ClientConnection_Type);
return NULL;
}
if (!NT_STATUS_IS_OK(status)) {
PyErr_SetNTSTATUS(status);
TALLOC_FREE(ret->mem_ctx);
+ Py_DECREF(ret);
+ Py_DECREF(py_base);
+ Py_DECREF(ClientConnection_Type);
return NULL;
}
ret->pipe = talloc_steal(ret->mem_ctx, ret->pipe);
+ Py_XDECREF(ClientConnection_Type);
+ Py_XDECREF(py_base);
} else {
struct tevent_context *event_ctx;
struct loadparm_context *lp_ctx;
if (event_ctx == NULL) {
PyErr_SetString(PyExc_TypeError, "Expected loadparm context");
TALLOC_FREE(ret->mem_ctx);
+ Py_DECREF(ret);
return NULL;
}
if (lp_ctx == NULL) {
PyErr_SetString(PyExc_TypeError, "Expected loadparm context");
TALLOC_FREE(ret->mem_ctx);
+ Py_DECREF(ret);
return NULL;
}
if (credentials == NULL) {
PyErr_SetString(PyExc_TypeError, "Expected credentials");
TALLOC_FREE(ret->mem_ctx);
+ Py_DECREF(ret);
return NULL;
}
status = dcerpc_pipe_connect(ret->mem_ctx, &ret->pipe, binding_string,
if (!NT_STATUS_IS_OK(status)) {
PyErr_SetNTSTATUS(status);
TALLOC_FREE(ret->mem_ctx);
+ Py_DECREF(ret);
return NULL;
}
py_type = (PyTypeObject *)PyObject_GetAttrString(module, type_name);
if (py_type == NULL) {
+ Py_DECREF(module);
return NULL;
}