return 0;
}
+/*
+ * Null dialog procedure.
+ */
+static int CALLBACK NullDlgProc (HWND hwnd, UINT msg,
+ WPARAM wParam, LPARAM lParam) {
+ return 0;
+}
+
/* ----------------------------------------------------------------------
* Routines to self-manage the controls in a dialog box.
*/
IDC_CIPHER3DES,
IDC_CIPHERBLOWF,
IDC_CIPHERDES,
+ IDC_BUGGYMAC,
IDC_AUTHTIS,
IDC_PKSTATIC,
IDC_PKEDIT,
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 :
}
/* The SSH panel. Accelerators used: [acgo] rmakwp123bd */
- {
+ if (backends[2].backend != NULL) {
struct ctlpos cp;
ctlposinit(&cp, hwnd, 80, 3, 13);
if (dlgtype == 0) {
"&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");
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)
return GenericMainDlgProc (hwnd, msg, wParam, lParam, 1);
}
+int defuse_showwindow(void) {
+ /*
+ * Work around the fact that the app's first call to ShowWindow
+ * will ignore the default in favour of the shell-provided
+ * setting.
+ */
+ {
+ HWND hwnd;
+ hwnd = CreateDialog (hinst, MAKEINTRESOURCE(IDD_ABOUTBOX),
+ NULL, NullDlgProc);
+ ShowWindow(hwnd, SW_HIDE);
+ DestroyWindow(hwnd);
+ }
+}
+
int do_config (void) {
int ret;