Bugzilla – Attachment 208 Details for
Bug 148
Key Exchange Guesses not supported
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
new patch
G2 (text/plain), 2.38 KB, created by
Markus Friedl
on 2003-01-27 20:11:56 AEDT
(
hide
)
Description:
new patch
Filename:
MIME Type:
Creator:
Markus Friedl
Created:
2003-01-27 20:11:56 AEDT
Size:
2.38 KB
patch
obsolete
>Index: kex.c >=================================================================== >RCS file: /cvs/src/usr.bin/ssh/kex.c,v >retrieving revision 1.52 >diff -u -r1.52 kex.c >--- kex.c 21 Nov 2002 22:45:31 -0000 1.52 >+++ kex.c 26 Jan 2003 14:57:23 -0000 >@@ -74,7 +74,7 @@ > > /* parse buffer and return algorithm proposal */ > static char ** >-kex_buf2prop(Buffer *raw) >+kex_buf2prop(Buffer *raw, int *first_kex_follows) > { > Buffer b; > int i; >@@ -94,6 +94,8 @@ > } > /* first kex follows / reserved */ > i = buffer_get_char(&b); >+ if (first_kex_follows != NULL) >+ *first_kex_follows = i; > debug2("kex_parse_kexinit: first_kex_follows %d ", i); > i = buffer_get_int(&b); > debug2("kex_parse_kexinit: reserved %d ", i); >@@ -317,6 +319,38 @@ > xfree(hostkeyalg); > } > >+#define PROPOSAL_MATCH(x, y) \ >+ do { \ >+ char *p, *myp, *peerp; \ >+ myp = my[PROPOSAL_ ## x]; \ >+ peerp = peer[PROPOSAL_ ## y]; \ >+ if ((p = strchr(myp, ',')) != NULL) \ >+ *p = '\0'; \ >+ if ((p = strchr(peerp, ',')) != NULL) \ >+ *p = '\0'; \ >+ if (strcmp(myp, peerp) != 0) { \ >+ debug2("proposal mismatch: %s %s", myp, peerp); \ >+ return (0); \ >+ } \ >+ } while (0) >+ >+static int >+proposals_match(char *my[PROPOSAL_MAX],char *peer[PROPOSAL_MAX]) >+{ >+ PROPOSAL_MATCH(KEX_ALGS, KEX_ALGS); >+ PROPOSAL_MATCH(SERVER_HOST_KEY_ALGS, SERVER_HOST_KEY_ALGS); >+ PROPOSAL_MATCH(ENC_ALGS_CTOS, ENC_ALGS_STOC); >+ PROPOSAL_MATCH(ENC_ALGS_STOC, ENC_ALGS_CTOS); >+ PROPOSAL_MATCH(MAC_ALGS_CTOS, MAC_ALGS_STOC); >+ PROPOSAL_MATCH(MAC_ALGS_STOC, MAC_ALGS_CTOS); >+ PROPOSAL_MATCH(COMP_ALGS_CTOS, COMP_ALGS_STOC); >+ PROPOSAL_MATCH(COMP_ALGS_STOC, COMP_ALGS_CTOS); >+ PROPOSAL_MATCH(LANG_CTOS, LANG_STOC); >+ PROPOSAL_MATCH(LANG_STOC, LANG_CTOS); >+ debug2("proposals match"); >+ return (1); >+} >+ > static void > kex_choose_conf(Kex *kex) > { >@@ -327,9 +361,10 @@ > int mode; > int ctos; /* direction: if true client-to-server */ > int need; >+ int first_kex_follows, type; > >- my = kex_buf2prop(&kex->my); >- peer = kex_buf2prop(&kex->peer); >+ my = kex_buf2prop(&kex->my, NULL); >+ peer = kex_buf2prop(&kex->peer, &first_kex_follows); > > if (kex->server) { > cprop=peer; >@@ -372,6 +407,12 @@ > } > /* XXX need runden? */ > kex->we_need = need; >+ >+ /* ignore the next message if the proposals do not match */ >+ if (first_kex_follows && !proposals_match(my, peer)) { >+ type = packet_read(); >+ debug2("skipping next packet (type %u)", type); >+ } > > kex_prop_free(my); > kex_prop_free(peer);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 148
:
161
|
208
|
210
|
211