#265: agent_disconnect_unix closes stdin on Solaris 10 x64
-------------------------+--------------------
Reporter: mkerestesch | Owner:
Type: defect | Status: new
Priority: normal | Milestone: 1.4.3
Component: SFTP | Version: 1.4.2
Keywords: | Blocked By:
Blocks: |
-------------------------+--------------------
Hi there.
i'm, using libssh2 1.4.3 in a multi-threaded environment to connect to an
sftp-server via curl (curl 7.30.0, openssl 1.0.1e).
My code is working perfectly in a windows 7, Linux x64, Solaris 11 x64 and
Mac OS X x64 environment, but shutting down a thread local curl
handle under Solaris 10 x64 somehow seems to close stdin (which i rely on
due to ipc-requirements).
Anyway. I was able to generate a stacktrace for the problem and the
offending call seems to be agent_disconnect_unix, which obviously
closes fd with fd == 0.
As I can see from libssh2_agent_init the LIBSSH_AGENT struct is zeroed,
which also sets fd to zero.
Changing (agent.c):
LIBSSH2_API LIBSSH2_AGENT *
libssh2_agent_init(LIBSSH2_SESSION *session)
{
LIBSSH2_AGENT *agent;
agent = LIBSSH2_ALLOC(session, sizeof *agent);
if (!agent) {
_libssh2_error(session, LIBSSH2_ERROR_ALLOC,
"Unable to allocate space for agent connection");
return NULL;
}
memset(agent, 0, sizeof *agent);
agent->session = session;
_libssh2_list_init(&agent->head);
return agent;
}
to
LIBSSH2_API LIBSSH2_AGENT *
libssh2_agent_init(LIBSSH2_SESSION *session)
{
LIBSSH2_AGENT *agent;
agent = LIBSSH2_ALLOC(session, sizeof *agent);
if (!agent) {
_libssh2_error(session, LIBSSH2_ERROR_ALLOC,
"Unable to allocate space for agent connection");
return NULL;
}
memset(agent, 0, sizeof *agent);
agent->fd = LIBSSH2_INVALID_SOCKET;
agent->session = session;
_libssh2_list_init(&agent->head);
return agent;
}
fixed the problem for me. Still strange that this incident does not pop up
on other platforms….
Attached you'll find a dbx stack trace.
Regards, Matt
-- Ticket URL: <https://trac.libssh2.org/ticket/265> libssh2 <https://trac.libssh2.org/> C library for writing portable SSH2 clients _______________________________________________ libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-develReceived on 2013-05-17