aboutsummaryrefslogtreecommitdiff
path: root/libssh/session.c
diff options
context:
space:
mode:
Diffstat (limited to 'libssh/session.c')
-rw-r--r--libssh/session.c47
1 files changed, 46 insertions, 1 deletions
diff --git a/libssh/session.c b/libssh/session.c
index a39a68c5..e6d9fc7d 100644
--- a/libssh/session.c
+++ b/libssh/session.c
@@ -54,6 +54,8 @@
*/
ssh_session ssh_new(void) {
ssh_session session;
+ char *id;
+ int rc;
session = malloc(sizeof (struct ssh_session_struct));
if (session == NULL) {
@@ -103,6 +105,39 @@ ssh_session ssh_new(void) {
goto err;
}
#endif /* _WIN32 */
+
+ session->identity = ssh_list_new();
+ if (session->identity == NULL) {
+ goto err;
+ }
+
+ id = strdup("SSH_DIR/id_rsa");
+ if (id == NULL) {
+ goto err;
+ }
+ rc = ssh_list_append(session->identity, id);
+ if (rc == SSH_ERROR) {
+ goto err;
+ }
+
+ id = strdup("SSH_DIR/id_dsa");
+ if (id == NULL) {
+ goto err;
+ }
+ rc = ssh_list_append(session->identity, id);
+ if (rc == SSH_ERROR) {
+ goto err;
+ }
+
+ id = strdup("SSH_DIR/identity");
+ if (id == NULL) {
+ goto err;
+ }
+ rc = ssh_list_append(session->identity, id);
+ if (rc == SSH_ERROR) {
+ goto err;
+ }
+
return session;
err:
@@ -173,10 +208,20 @@ void ssh_free(ssh_session session) {
ssh_list_free(session->ssh_message_list);
}
+ if (session->identity) {
+ char *id;
+
+ for (id = ssh_list_pop_head(char *, session->identity);
+ id != NULL;
+ id = ssh_list_pop_head(char *, session->identity)) {
+ SAFE_FREE(id);
+ }
+ ssh_list_free(session->identity);
+ }
+
/* options */
SAFE_FREE(session->username);
SAFE_FREE(session->host);
- SAFE_FREE(session->identity);
SAFE_FREE(session->sshdir);
SAFE_FREE(session->knownhosts);