File: src/session.c
Function: session_userauth_publickey
Error: ob_refcnt of '*_exc' is 1 too high
314 static PyObject *
315 session_userauth_publickey(SSH2_SessionObj *self, PyObject *args)
316 {
317 	char *username;
318 	char *pubkeydata;
319 	Py_ssize_t pubkeydata_len;
320 	PyObject *callback;
321 	int ret;
322 
323 #if PY_MAJOR_VERSION < 3
324 	if (!PyArg_ParseTuple(args, "ss#O:userauth_publickey", &username, &pubkeydata, &pubkeydata_len, &callback))
when _PyArg_ParseTuple_SizeT() succeeds
taking False path
325 #else
326 	if (!PyArg_ParseTuple(args, "sy#O:userauth_publickey", &username, &pubkeydata, &pubkeydata_len, &callback))
327 #endif
328 		return NULL;
329 
330 	if (!PyCallable_Check(callback))
when PyCallable_Check() returns 1 (true)
taking False path
331 		return PyErr_Format(PyExc_TypeError, "'%s' is not callable", callback->ob_type->tp_name);
332 
333 	Py_BEGIN_ALLOW_THREADS
releasing the GIL by calling PyEval_SaveThread()
334 	ret = libssh2_userauth_publickey(self->session, username,
335 	                                 (unsigned char*)pubkeydata, pubkeydata_len,
336 	                                 publickey_sign_callback, (void **)&callback);
337 	Py_END_ALLOW_THREADS
reacquiring the GIL by calling PyEval_RestoreThread()
338 
339 	CHECK_RETURN_CODE(ret, self)
when considering range: -0x80000000 <= value <= -1
taking True path
when _PyObject_CallFunction_SizeT() succeeds
when _Py_BuildValue_SizeT() succeeds
when PyObject_SetAttrString() succeeds
calling PyErr_SetObject()
new ref from call to _PyObject_CallFunction_SizeT allocated at: 	CHECK_RETURN_CODE(ret, self)
ob_refcnt is now refs: 1 + N where N >= 0
ob_refcnt is now refs: 1 + N where N >= 1
340 
341 	Py_RETURN_NONE;
342 }
ob_refcnt of '*_exc' is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 3 similar trace(s) to this

File: src/session.c
Function: session_userauth_publickey
Error: ob_refcnt of new ref from call to _Py_BuildValue_SizeT is 1 too high
314 static PyObject *
315 session_userauth_publickey(SSH2_SessionObj *self, PyObject *args)
316 {
317 	char *username;
318 	char *pubkeydata;
319 	Py_ssize_t pubkeydata_len;
320 	PyObject *callback;
321 	int ret;
322 
323 #if PY_MAJOR_VERSION < 3
324 	if (!PyArg_ParseTuple(args, "ss#O:userauth_publickey", &username, &pubkeydata, &pubkeydata_len, &callback))
when _PyArg_ParseTuple_SizeT() succeeds
taking False path
325 #else
326 	if (!PyArg_ParseTuple(args, "sy#O:userauth_publickey", &username, &pubkeydata, &pubkeydata_len, &callback))
327 #endif
328 		return NULL;
329 
330 	if (!PyCallable_Check(callback))
when PyCallable_Check() returns 1 (true)
taking False path
331 		return PyErr_Format(PyExc_TypeError, "'%s' is not callable", callback->ob_type->tp_name);
332 
333 	Py_BEGIN_ALLOW_THREADS
releasing the GIL by calling PyEval_SaveThread()
334 	ret = libssh2_userauth_publickey(self->session, username,
335 	                                 (unsigned char*)pubkeydata, pubkeydata_len,
336 	                                 publickey_sign_callback, (void **)&callback);
337 	Py_END_ALLOW_THREADS
reacquiring the GIL by calling PyEval_RestoreThread()
338 
339 	CHECK_RETURN_CODE(ret, self)
when considering range: -0x80000000 <= value <= -1
taking True path
when _PyObject_CallFunction_SizeT() succeeds
when _Py_BuildValue_SizeT() succeeds
when PyObject_SetAttrString() succeeds
calling PyErr_SetObject()
new ref from call to _Py_BuildValue_SizeT allocated at: 	CHECK_RETURN_CODE(ret, self)
ob_refcnt is now refs: 1 + N where N >= 0
340 
341 	Py_RETURN_NONE;
342 }
ob_refcnt of new ref from call to _Py_BuildValue_SizeT is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 1 similar trace(s) to this

File: src/session.c
Function: session_userauth_publickey
Error: calling PyObject_SetAttrString with NULL as argument 1 (_exc) at src/session.c:339
314 static PyObject *
315 session_userauth_publickey(SSH2_SessionObj *self, PyObject *args)
316 {
317 	char *username;
318 	char *pubkeydata;
319 	Py_ssize_t pubkeydata_len;
320 	PyObject *callback;
321 	int ret;
322 
323 #if PY_MAJOR_VERSION < 3
324 	if (!PyArg_ParseTuple(args, "ss#O:userauth_publickey", &username, &pubkeydata, &pubkeydata_len, &callback))
when _PyArg_ParseTuple_SizeT() succeeds
taking False path
325 #else
326 	if (!PyArg_ParseTuple(args, "sy#O:userauth_publickey", &username, &pubkeydata, &pubkeydata_len, &callback))
327 #endif
328 		return NULL;
329 
330 	if (!PyCallable_Check(callback))
when PyCallable_Check() returns 1 (true)
taking False path
331 		return PyErr_Format(PyExc_TypeError, "'%s' is not callable", callback->ob_type->tp_name);
332 
333 	Py_BEGIN_ALLOW_THREADS
releasing the GIL by calling PyEval_SaveThread()
334 	ret = libssh2_userauth_publickey(self->session, username,
335 	                                 (unsigned char*)pubkeydata, pubkeydata_len,
336 	                                 publickey_sign_callback, (void **)&callback);
337 	Py_END_ALLOW_THREADS
reacquiring the GIL by calling PyEval_RestoreThread()
338 
339 	CHECK_RETURN_CODE(ret, self)
when considering range: -0x80000000 <= value <= -1
taking True path
when _PyObject_CallFunction_SizeT() fails
when _Py_BuildValue_SizeT() succeeds
calling PyObject_SetAttrString with NULL as argument 1 (_exc) at src/session.c:339
PyObject_SetAttrString() invokes Py_TYPE() on the pointer, thus accessing (NULL)->ob_type
found 1 similar trace(s) to this
340 
341 	Py_RETURN_NONE;
342 }