diff options
Diffstat (limited to 'monitor_wrap.c')
-rw-r--r-- | monitor_wrap.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/monitor_wrap.c b/monitor_wrap.c index ed8dbdadf..433b234d2 100644 --- a/monitor_wrap.c +++ b/monitor_wrap.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: monitor_wrap.c,v 1.75 2013/01/08 18:49:04 markus Exp $ */ | 1 | /* $OpenBSD: monitor_wrap.c,v 1.76 2013/05/17 00:13:13 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> | 3 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> |
4 | * Copyright 2002 Markus Friedl <markus@openbsd.org> | 4 | * Copyright 2002 Markus Friedl <markus@openbsd.org> |
@@ -259,8 +259,10 @@ mm_getpwnamallow(const char *username) | |||
259 | fatal("%s: struct passwd size mismatch", __func__); | 259 | fatal("%s: struct passwd size mismatch", __func__); |
260 | pw->pw_name = buffer_get_string(&m, NULL); | 260 | pw->pw_name = buffer_get_string(&m, NULL); |
261 | pw->pw_passwd = buffer_get_string(&m, NULL); | 261 | pw->pw_passwd = buffer_get_string(&m, NULL); |
262 | #ifdef HAVE_STRUCT_PASSWD_PW_GECOS | ||
262 | pw->pw_gecos = buffer_get_string(&m, NULL); | 263 | pw->pw_gecos = buffer_get_string(&m, NULL); |
263 | #ifdef HAVE_PW_CLASS_IN_PASSWD | 264 | #endif |
265 | #ifdef HAVE_STRUCT_PASSWD_PW_CLASS | ||
264 | pw->pw_class = buffer_get_string(&m, NULL); | 266 | pw->pw_class = buffer_get_string(&m, NULL); |
265 | #endif | 267 | #endif |
266 | pw->pw_dir = buffer_get_string(&m, NULL); | 268 | pw->pw_dir = buffer_get_string(&m, NULL); |
@@ -286,7 +288,7 @@ out: | |||
286 | #undef M_CP_STRARRAYOPT | 288 | #undef M_CP_STRARRAYOPT |
287 | 289 | ||
288 | copy_set_server_options(&options, newopts, 1); | 290 | copy_set_server_options(&options, newopts, 1); |
289 | xfree(newopts); | 291 | free(newopts); |
290 | 292 | ||
291 | buffer_free(&m); | 293 | buffer_free(&m); |
292 | 294 | ||
@@ -312,7 +314,7 @@ mm_auth2_read_banner(void) | |||
312 | 314 | ||
313 | /* treat empty banner as missing banner */ | 315 | /* treat empty banner as missing banner */ |
314 | if (strlen(banner) == 0) { | 316 | if (strlen(banner) == 0) { |
315 | xfree(banner); | 317 | free(banner); |
316 | banner = NULL; | 318 | banner = NULL; |
317 | } | 319 | } |
318 | return (banner); | 320 | return (banner); |
@@ -405,7 +407,7 @@ mm_key_allowed(enum mm_keytype type, char *user, char *host, Key *key) | |||
405 | buffer_put_cstring(&m, user ? user : ""); | 407 | buffer_put_cstring(&m, user ? user : ""); |
406 | buffer_put_cstring(&m, host ? host : ""); | 408 | buffer_put_cstring(&m, host ? host : ""); |
407 | buffer_put_string(&m, blob, len); | 409 | buffer_put_string(&m, blob, len); |
408 | xfree(blob); | 410 | free(blob); |
409 | 411 | ||
410 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, &m); | 412 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, &m); |
411 | 413 | ||
@@ -448,7 +450,7 @@ mm_key_verify(Key *key, u_char *sig, u_int siglen, u_char *data, u_int datalen) | |||
448 | buffer_put_string(&m, blob, len); | 450 | buffer_put_string(&m, blob, len); |
449 | buffer_put_string(&m, sig, siglen); | 451 | buffer_put_string(&m, sig, siglen); |
450 | buffer_put_string(&m, data, datalen); | 452 | buffer_put_string(&m, data, datalen); |
451 | xfree(blob); | 453 | free(blob); |
452 | 454 | ||
453 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYVERIFY, &m); | 455 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYVERIFY, &m); |
454 | 456 | ||
@@ -617,7 +619,7 @@ mm_send_keystate(struct monitor *monitor) | |||
617 | keylen = packet_get_encryption_key(key); | 619 | keylen = packet_get_encryption_key(key); |
618 | buffer_put_string(&m, key, keylen); | 620 | buffer_put_string(&m, key, keylen); |
619 | memset(key, 0, keylen); | 621 | memset(key, 0, keylen); |
620 | xfree(key); | 622 | free(key); |
621 | 623 | ||
622 | ivlen = packet_get_keyiv_len(MODE_OUT); | 624 | ivlen = packet_get_keyiv_len(MODE_OUT); |
623 | packet_get_keyiv(MODE_OUT, iv, ivlen); | 625 | packet_get_keyiv(MODE_OUT, iv, ivlen); |
@@ -640,13 +642,13 @@ mm_send_keystate(struct monitor *monitor) | |||
640 | fatal("%s: conversion of newkeys failed", __func__); | 642 | fatal("%s: conversion of newkeys failed", __func__); |
641 | 643 | ||
642 | buffer_put_string(&m, blob, bloblen); | 644 | buffer_put_string(&m, blob, bloblen); |
643 | xfree(blob); | 645 | free(blob); |
644 | 646 | ||
645 | if (!mm_newkeys_to_blob(MODE_IN, &blob, &bloblen)) | 647 | if (!mm_newkeys_to_blob(MODE_IN, &blob, &bloblen)) |
646 | fatal("%s: conversion of newkeys failed", __func__); | 648 | fatal("%s: conversion of newkeys failed", __func__); |
647 | 649 | ||
648 | buffer_put_string(&m, blob, bloblen); | 650 | buffer_put_string(&m, blob, bloblen); |
649 | xfree(blob); | 651 | free(blob); |
650 | 652 | ||
651 | packet_get_state(MODE_OUT, &seqnr, &blocks, &packets, &bytes); | 653 | packet_get_state(MODE_OUT, &seqnr, &blocks, &packets, &bytes); |
652 | buffer_put_int(&m, seqnr); | 654 | buffer_put_int(&m, seqnr); |
@@ -666,13 +668,13 @@ mm_send_keystate(struct monitor *monitor) | |||
666 | p = xmalloc(plen+1); | 668 | p = xmalloc(plen+1); |
667 | packet_get_keycontext(MODE_OUT, p); | 669 | packet_get_keycontext(MODE_OUT, p); |
668 | buffer_put_string(&m, p, plen); | 670 | buffer_put_string(&m, p, plen); |
669 | xfree(p); | 671 | free(p); |
670 | 672 | ||
671 | plen = packet_get_keycontext(MODE_IN, NULL); | 673 | plen = packet_get_keycontext(MODE_IN, NULL); |
672 | p = xmalloc(plen+1); | 674 | p = xmalloc(plen+1); |
673 | packet_get_keycontext(MODE_IN, p); | 675 | packet_get_keycontext(MODE_IN, p); |
674 | buffer_put_string(&m, p, plen); | 676 | buffer_put_string(&m, p, plen); |
675 | xfree(p); | 677 | free(p); |
676 | 678 | ||
677 | /* Compression state */ | 679 | /* Compression state */ |
678 | debug3("%s: Sending compression state", __func__); | 680 | debug3("%s: Sending compression state", __func__); |
@@ -734,10 +736,10 @@ mm_pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, size_t namebuflen) | |||
734 | buffer_free(&m); | 736 | buffer_free(&m); |
735 | 737 | ||
736 | strlcpy(namebuf, p, namebuflen); /* Possible truncation */ | 738 | strlcpy(namebuf, p, namebuflen); /* Possible truncation */ |
737 | xfree(p); | 739 | free(p); |
738 | 740 | ||
739 | buffer_append(&loginmsg, msg, strlen(msg)); | 741 | buffer_append(&loginmsg, msg, strlen(msg)); |
740 | xfree(msg); | 742 | free(msg); |
741 | 743 | ||
742 | if ((*ptyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1 || | 744 | if ((*ptyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1 || |
743 | (*ttyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1) | 745 | (*ttyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1) |
@@ -803,7 +805,7 @@ mm_do_pam_account(void) | |||
803 | ret = buffer_get_int(&m); | 805 | ret = buffer_get_int(&m); |
804 | msg = buffer_get_string(&m, NULL); | 806 | msg = buffer_get_string(&m, NULL); |
805 | buffer_append(&loginmsg, msg, strlen(msg)); | 807 | buffer_append(&loginmsg, msg, strlen(msg)); |
806 | xfree(msg); | 808 | free(msg); |
807 | 809 | ||
808 | buffer_free(&m); | 810 | buffer_free(&m); |
809 | 811 | ||
@@ -1033,7 +1035,7 @@ mm_skey_query(void *ctx, char **name, char **infotxt, | |||
1033 | mm_chall_setup(name, infotxt, numprompts, prompts, echo_on); | 1035 | mm_chall_setup(name, infotxt, numprompts, prompts, echo_on); |
1034 | 1036 | ||
1035 | xasprintf(*prompts, "%s%s", challenge, SKEY_PROMPT); | 1037 | xasprintf(*prompts, "%s%s", challenge, SKEY_PROMPT); |
1036 | xfree(challenge); | 1038 | free(challenge); |
1037 | 1039 | ||
1038 | return (0); | 1040 | return (0); |
1039 | } | 1041 | } |
@@ -1107,7 +1109,7 @@ mm_auth_rsa_key_allowed(struct passwd *pw, BIGNUM *client_n, Key **rkey) | |||
1107 | if ((key = key_from_blob(blob, blen)) == NULL) | 1109 | if ((key = key_from_blob(blob, blen)) == NULL) |
1108 | fatal("%s: key_from_blob failed", __func__); | 1110 | fatal("%s: key_from_blob failed", __func__); |
1109 | *rkey = key; | 1111 | *rkey = key; |
1110 | xfree(blob); | 1112 | free(blob); |
1111 | } | 1113 | } |
1112 | buffer_free(&m); | 1114 | buffer_free(&m); |
1113 | 1115 | ||
@@ -1134,7 +1136,7 @@ mm_auth_rsa_generate_challenge(Key *key) | |||
1134 | 1136 | ||
1135 | buffer_init(&m); | 1137 | buffer_init(&m); |
1136 | buffer_put_string(&m, blob, blen); | 1138 | buffer_put_string(&m, blob, blen); |
1137 | xfree(blob); | 1139 | free(blob); |
1138 | 1140 | ||
1139 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSACHALLENGE, &m); | 1141 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSACHALLENGE, &m); |
1140 | mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSACHALLENGE, &m); | 1142 | mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSACHALLENGE, &m); |
@@ -1163,7 +1165,7 @@ mm_auth_rsa_verify_response(Key *key, BIGNUM *p, u_char response[16]) | |||
1163 | buffer_init(&m); | 1165 | buffer_init(&m); |
1164 | buffer_put_string(&m, blob, blen); | 1166 | buffer_put_string(&m, blob, blen); |
1165 | buffer_put_string(&m, response, 16); | 1167 | buffer_put_string(&m, response, 16); |
1166 | xfree(blob); | 1168 | free(blob); |
1167 | 1169 | ||
1168 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSARESPONSE, &m); | 1170 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSARESPONSE, &m); |
1169 | mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSARESPONSE, &m); | 1171 | mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSARESPONSE, &m); |