version 1.86.8.1, 2013/11/08 05:52:21 |
version 1.87, 2013/05/17 00:13:13 |
|
|
if (sock < 0) |
if (sock < 0) |
return NULL; |
return NULL; |
|
|
auth = xcalloc(1, sizeof(*auth)); |
auth = xmalloc(sizeof(*auth)); |
auth->fd = sock; |
auth->fd = sock; |
buffer_init(&auth->identities); |
buffer_init(&auth->identities); |
auth->howmany = 0; |
auth->howmany = 0; |
|
|
{ |
{ |
buffer_free(&auth->identities); |
buffer_free(&auth->identities); |
close(auth->fd); |
close(auth->fd); |
xfree(auth); |
free(auth); |
} |
} |
|
|
/* Lock/unlock agent */ |
/* Lock/unlock agent */ |
|
|
blob = buffer_get_string(&auth->identities, &blen); |
blob = buffer_get_string(&auth->identities, &blen); |
*comment = buffer_get_string(&auth->identities, NULL); |
*comment = buffer_get_string(&auth->identities, NULL); |
key = key_from_blob(blob, blen); |
key = key_from_blob(blob, blen); |
xfree(blob); |
free(blob); |
break; |
break; |
default: |
default: |
return NULL; |
return NULL; |
|
|
buffer_put_string(&msg, blob, blen); |
buffer_put_string(&msg, blob, blen); |
buffer_put_string(&msg, data, datalen); |
buffer_put_string(&msg, data, datalen); |
buffer_put_int(&msg, flags); |
buffer_put_int(&msg, flags); |
xfree(blob); |
free(blob); |
|
|
if (ssh_request_reply(auth, &msg, &msg) == 0) { |
if (ssh_request_reply(auth, &msg, &msg) == 0) { |
buffer_free(&msg); |
buffer_free(&msg); |
|
|
key_to_blob(key, &blob, &blen); |
key_to_blob(key, &blob, &blen); |
buffer_put_char(&msg, SSH2_AGENTC_REMOVE_IDENTITY); |
buffer_put_char(&msg, SSH2_AGENTC_REMOVE_IDENTITY); |
buffer_put_string(&msg, blob, blen); |
buffer_put_string(&msg, blob, blen); |
xfree(blob); |
free(blob); |
} else { |
} else { |
buffer_free(&msg); |
buffer_free(&msg); |
return 0; |
return 0; |