~mdw
/
sgt
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add a config option to emulate the HMAC bug in commercial SSH v2.3.x
[sgt/putty]
/
windlg.c
diff --git
a/windlg.c
b/windlg.c
index
20add6c
..
e012b3d
100644
(file)
--- a/
windlg.c
+++ b/
windlg.c
@@
-945,6
+945,7
@@
enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue,
IDC_CIPHER3DES,
IDC_CIPHERBLOWF,
IDC_CIPHERDES,
IDC_CIPHER3DES,
IDC_CIPHERBLOWF,
IDC_CIPHERDES,
+ IDC_BUGGYMAC,
IDC_AUTHTIS,
IDC_PKSTATIC,
IDC_PKEDIT,
IDC_AUTHTIS,
IDC_PKSTATIC,
IDC_PKEDIT,
@@
-997,6
+998,7
@@
enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue,
IDC_NOXLAT,
IDC_KOI8WIN1251,
IDC_88592WIN1250,
IDC_NOXLAT,
IDC_KOI8WIN1251,
IDC_88592WIN1250,
+ IDC_88592CP852,
IDC_CAPSLOCKCYR,
IDC_VTSTATIC,
IDC_VTXWINDOWS,
IDC_CAPSLOCKCYR,
IDC_VTSTATIC,
IDC_VTXWINDOWS,
@@
-1046,9
+1048,6
@@
static void init_dlg_ctrls(HWND hwnd) {
SetDlgItemText (hwnd, IDC_HOST, cfg.host);
SetDlgItemText (hwnd, IDC_SESSEDIT, savedsession);
SetDlgItemInt (hwnd, IDC_PORT, cfg.port, FALSE);
SetDlgItemText (hwnd, IDC_HOST, cfg.host);
SetDlgItemText (hwnd, IDC_SESSEDIT, savedsession);
SetDlgItemInt (hwnd, IDC_PORT, cfg.port, FALSE);
- for (i = 0; i < nsessions; i++)
- SendDlgItemMessage (hwnd, IDC_SESSLIST, LB_ADDSTRING,
- 0, (LPARAM) (sessions[i]));
CheckRadioButton (hwnd, IDC_PROTRAW, IDC_PROTSSH,
cfg.protocol==PROT_SSH ? IDC_PROTSSH :
cfg.protocol==PROT_TELNET ? IDC_PROTTELNET : IDC_PROTRAW );
CheckRadioButton (hwnd, IDC_PROTRAW, IDC_PROTSSH,
cfg.protocol==PROT_SSH ? IDC_PROTSSH :
cfg.protocol==PROT_TELNET ? IDC_PROTTELNET : IDC_PROTRAW );
@@
-1058,7
+1057,7
@@
static void init_dlg_ctrls(HWND hwnd) {
cfg.bksp_is_delete ? IDC_DEL127 : IDC_DEL008);
CheckRadioButton (hwnd, IDC_HOMETILDE, IDC_HOMERXVT,
cfg.rxvt_homeend ? IDC_HOMERXVT : IDC_HOMETILDE);
cfg.bksp_is_delete ? IDC_DEL127 : IDC_DEL008);
CheckRadioButton (hwnd, IDC_HOMETILDE, IDC_HOMERXVT,
cfg.rxvt_homeend ? IDC_HOMERXVT : IDC_HOMETILDE);
- CheckRadioButton (hwnd, IDC_FUNCTILDE, IDC_FUNC
XTERM
,
+ CheckRadioButton (hwnd, IDC_FUNCTILDE, IDC_FUNC
VT400
,
cfg.funky_type == 0 ? IDC_FUNCTILDE :
cfg.funky_type == 1 ? IDC_FUNCLINUX :
cfg.funky_type == 2 ? IDC_FUNCXTERM :
cfg.funky_type == 0 ? IDC_FUNCTILDE :
cfg.funky_type == 1 ? IDC_FUNCLINUX :
cfg.funky_type == 2 ? IDC_FUNCXTERM :
@@
-1111,6
+1110,7
@@
static void init_dlg_ctrls(HWND hwnd) {
SetDlgItemText (hwnd, IDC_TTEDIT, cfg.termtype);
SetDlgItemText (hwnd, IDC_LOGEDIT, cfg.username);
CheckDlgButton (hwnd, IDC_NOPTY, cfg.nopty);
SetDlgItemText (hwnd, IDC_TTEDIT, cfg.termtype);
SetDlgItemText (hwnd, IDC_LOGEDIT, cfg.username);
CheckDlgButton (hwnd, IDC_NOPTY, cfg.nopty);
+ CheckDlgButton (hwnd, IDC_BUGGYMAC, cfg.buggymac);
CheckDlgButton (hwnd, IDC_AGENTFWD, cfg.agentfwd);
CheckRadioButton (hwnd, IDC_CIPHER3DES, IDC_CIPHERDES,
cfg.cipher == CIPHER_BLOWFISH ? IDC_CIPHERBLOWF :
CheckDlgButton (hwnd, IDC_AGENTFWD, cfg.agentfwd);
CheckRadioButton (hwnd, IDC_CIPHER3DES, IDC_CIPHERDES,
cfg.cipher == CIPHER_BLOWFISH ? IDC_CIPHERBLOWF :
@@
-1152,8
+1152,9
@@
static void init_dlg_ctrls(HWND hwnd) {
SetDlgItemInt (hwnd, IDC_GVALUE, cfg.colours[0][1], FALSE);
SetDlgItemInt (hwnd, IDC_BVALUE, cfg.colours[0][2], FALSE);
SetDlgItemInt (hwnd, IDC_GVALUE, cfg.colours[0][1], FALSE);
SetDlgItemInt (hwnd, IDC_BVALUE, cfg.colours[0][2], FALSE);
- CheckRadioButton (hwnd, IDC_NOXLAT, IDC_88592
WIN1250
,
+ CheckRadioButton (hwnd, IDC_NOXLAT, IDC_88592
CP852
,
cfg.xlat_88592w1250 ? IDC_88592WIN1250 :
cfg.xlat_88592w1250 ? IDC_88592WIN1250 :
+ cfg.xlat_88592cp852 ? IDC_88592CP852 :
cfg.xlat_enablekoiwin ? IDC_KOI8WIN1251 :
IDC_NOXLAT);
CheckDlgButton (hwnd, IDC_CAPSLOCKCYR, cfg.xlat_capslockcyr);
cfg.xlat_enablekoiwin ? IDC_KOI8WIN1251 :
IDC_NOXLAT);
CheckDlgButton (hwnd, IDC_CAPSLOCKCYR, cfg.xlat_capslockcyr);
@@
-1186,8
+1187,13
@@
static HTREEITEM treeview_insert(struct treeview_faff *faff,
HTREEITEM newitem;
ins.hParent = (level > 0 ? faff->lastat[level-1] : TVI_ROOT);
ins.hInsertAfter = faff->lastat[level];
HTREEITEM newitem;
ins.hParent = (level > 0 ? faff->lastat[level-1] : TVI_ROOT);
ins.hInsertAfter = faff->lastat[level];
- ins.DUMMYUNIONNAME.item.mask = TVIF_TEXT;
- ins.DUMMYUNIONNAME.item.pszText = text;
+#if _WIN32_IE >= 0x0400 && defined NONAMELESSUNION
+#define INSITEM DUMMYUNIONNAME.item
+#else
+#define INSITEM item
+#endif
+ ins.INSITEM.mask = TVIF_TEXT;
+ ins.INSITEM.pszText = text;
newitem = TreeView_InsertItem(faff->treeview, &ins);
if (level > 0)
TreeView_Expand(faff->treeview, faff->lastat[level-1], TVE_EXPAND);
newitem = TreeView_InsertItem(faff->treeview, &ins);
if (level > 0)
TreeView_Expand(faff->treeview, faff->lastat[level-1], TVE_EXPAND);
@@
-1360,7
+1366,7
@@
static int GenericMainDlgProc (HWND hwnd, UINT msg,
"&Standard", IDC_HOMETILDE,
"&rxvt", IDC_HOMERXVT, NULL);
radioline(&cp, "The Function keys and keypad", IDC_FUNCSTATIC, 4,
"&Standard", IDC_HOMETILDE,
"&rxvt", IDC_HOMERXVT, NULL);
radioline(&cp, "The Function keys and keypad", IDC_FUNCSTATIC, 4,
- "
&VT400
", IDC_FUNCTILDE,
+ "
ESC[n&~
", IDC_FUNCTILDE,
"&Linux", IDC_FUNCLINUX,
"&Xterm R6", IDC_FUNCXTERM,
"&VT400", IDC_FUNCVT400, NULL);
"&Linux", IDC_FUNCLINUX,
"&Xterm R6", IDC_FUNCXTERM,
"&VT400", IDC_FUNCVT400, NULL);
@@
-1435,7
+1441,8
@@
static int GenericMainDlgProc (HWND hwnd, UINT msg,
"Character set translation:", IDC_XLATSTATIC,
"&None", IDC_NOXLAT,
"&KOI8 / Win-1251", IDC_KOI8WIN1251,
"Character set translation:", IDC_XLATSTATIC,
"&None", IDC_NOXLAT,
"&KOI8 / Win-1251", IDC_KOI8WIN1251,
- "&ISO-8859-2 / Win-1250", IDC_88592WIN1250, NULL);
+ "&ISO-8859-2 / Win-1250", IDC_88592WIN1250,
+ "&ISO-8859-2 / CP852", IDC_88592CP852, NULL);
endbox(&cp);
beginbox(&cp, "Enable character set translation on input data",
IDC_BOX_TRANSLATION3, IDC_BOXT_TRANSLATION3);
endbox(&cp);
beginbox(&cp, "Enable character set translation on input data",
IDC_BOX_TRANSLATION3, IDC_BOXT_TRANSLATION3);
@@
-1541,7
+1548,7
@@
static int GenericMainDlgProc (HWND hwnd, UINT msg,
}
/* The SSH panel. Accelerators used: [acgo] rmakwp123bd */
}
/* The SSH panel. Accelerators used: [acgo] rmakwp123bd */
- {
+
if (backends[2].backend != NULL)
{
struct ctlpos cp;
ctlposinit(&cp, hwnd, 80, 3, 13);
if (dlgtype == 0) {
struct ctlpos cp;
ctlposinit(&cp, hwnd, 80, 3, 13);
if (dlgtype == 0) {
@@
-1570,6
+1577,8
@@
static int GenericMainDlgProc (HWND hwnd, UINT msg,
"&3DES", IDC_CIPHER3DES,
"&Blowfish", IDC_CIPHERBLOWF,
"&DES", IDC_CIPHERDES, NULL);
"&3DES", IDC_CIPHER3DES,
"&Blowfish", IDC_CIPHERBLOWF,
"&DES", IDC_CIPHERDES, NULL);
+ checkbox(&cp, "Imitate SSH 2 MAC bug in commercial <= v2.3.x",
+ IDC_BUGGYMAC);
endbox(&cp);
treeview_insert(&tvfaff, 1, "SSH");
endbox(&cp);
treeview_insert(&tvfaff, 1, "SSH");
@@
-1577,6
+1586,9
@@
static int GenericMainDlgProc (HWND hwnd, UINT msg,
}
init_dlg_ctrls(hwnd);
}
init_dlg_ctrls(hwnd);
+ for (i = 0; i < nsessions; i++)
+ SendDlgItemMessage (hwnd, IDC_SESSLIST, LB_ADDSTRING,
+ 0, (LPARAM) (sessions[i]));
/*
* Hide all the controls to start with.
/*
* Hide all the controls to start with.
@@
-1735,14
+1747,16
@@
static int GenericMainDlgProc (HWND hwnd, UINT msg,
{
int n = SendDlgItemMessage (hwnd, IDC_SESSLIST,
LB_GETCURSEL, 0, 0);
{
int n = SendDlgItemMessage (hwnd, IDC_SESSLIST,
LB_GETCURSEL, 0, 0);
+ int isdef;
if (n == LB_ERR) {
MessageBeep(0);
break;
}
if (n == LB_ERR) {
MessageBeep(0);
break;
}
- load_settings (sessions[n],
- !!strcmp(sessions[n], "Default Settings"),
- &cfg);
+ isdef = !strcmp(sessions[n], "Default Settings");
+ load_settings (sessions[n], !isdef, &cfg);
init_dlg_ctrls(hwnd);
init_dlg_ctrls(hwnd);
+ if (!isdef)
+ SetDlgItemText(hwnd, IDC_SESSEDIT, sessions[n]);
}
if (LOWORD(wParam) == IDC_SESSLIST) {
/*
}
if (LOWORD(wParam) == IDC_SESSLIST) {
/*
@@
-2049,6
+2063,11
@@
static int GenericMainDlgProc (HWND hwnd, UINT msg,
HIWORD(wParam) == BN_DOUBLECLICKED)
cfg.nopty = IsDlgButtonChecked (hwnd, IDC_NOPTY);
break;
HIWORD(wParam) == BN_DOUBLECLICKED)
cfg.nopty = IsDlgButtonChecked (hwnd, IDC_NOPTY);
break;
+ case IDC_BUGGYMAC:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.buggymac = IsDlgButtonChecked (hwnd, IDC_BUGGYMAC);
+ break;
case IDC_AGENTFWD:
if (HIWORD(wParam) == BN_CLICKED ||
HIWORD(wParam) == BN_DOUBLECLICKED)
case IDC_AGENTFWD:
if (HIWORD(wParam) == BN_CLICKED ||
HIWORD(wParam) == BN_DOUBLECLICKED)
@@
-2216,10
+2235,13
@@
static int GenericMainDlgProc (HWND hwnd, UINT msg,
case IDC_NOXLAT:
case IDC_KOI8WIN1251:
case IDC_88592WIN1250:
case IDC_NOXLAT:
case IDC_KOI8WIN1251:
case IDC_88592WIN1250:
+ case IDC_88592CP852:
cfg.xlat_enablekoiwin =
IsDlgButtonChecked (hwnd, IDC_KOI8WIN1251);
cfg.xlat_88592w1250 =
IsDlgButtonChecked (hwnd, IDC_88592WIN1250);
cfg.xlat_enablekoiwin =
IsDlgButtonChecked (hwnd, IDC_KOI8WIN1251);
cfg.xlat_88592w1250 =
IsDlgButtonChecked (hwnd, IDC_88592WIN1250);
+ cfg.xlat_88592cp852 =
+ IsDlgButtonChecked (hwnd, IDC_88592CP852);
break;
case IDC_CAPSLOCKCYR:
if (HIWORD(wParam) == BN_CLICKED ||
break;
case IDC_CAPSLOCKCYR:
if (HIWORD(wParam) == BN_CLICKED ||