mm_answer_gss_sign(int socket, Buffer *m) {
gss_buffer_desc data,hash;
OM_uint32 major,minor;
+ u_int len;
- data.value = buffer_get_string(m,&data.length);
- if (data.length != 16) { /* HACK - i.e. we are using SSHv1 */
+ data.value = buffer_get_string(m, &len);
+ data.length = len;
if (data.length != 20)
- fatal("%s: data length incorrect: %d", __func__, data.length);
+ fatal("%s: data length incorrect: %d", __func__,
+ (int)data.length);
/* Save the session ID - only first time round */
if (session_id2_len == 0) {
session_id2 = xmalloc(session_id2_len);
memcpy(session_id2, data.value, session_id2_len);
}
- } /* HACK - end */
major=ssh_gssapi_sign(gsscontext, &data, &hash);
xfree(data.value);
mm_ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_desc *data, gss_buffer_desc *hash) {
Buffer m;
OM_uint32 major;
+ u_int len;
buffer_init(&m);
buffer_put_string(&m, data->value, data->length);
mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSIGN, &m);
major=buffer_get_int(&m);
- hash->value = buffer_get_string(&m, &hash->length);
+ hash->value = buffer_get_string(&m, &len);
+ hash->length = len;
buffer_free(&m);