fuzzer fixes on windows for testing
This commit is contained in:
+2
-2
@@ -688,11 +688,11 @@ tty_delay_output()
|
|||||||
clock_t goal;
|
clock_t goal;
|
||||||
int k;
|
int k;
|
||||||
|
|
||||||
|
goal = 50 + clock();
|
||||||
|
back_buffer_flip();
|
||||||
if (iflags.debug_fuzzer)
|
if (iflags.debug_fuzzer)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
goal = 50 + clock();
|
|
||||||
back_buffer_flip();
|
|
||||||
while (goal > clock()) {
|
while (goal > clock()) {
|
||||||
k = junk; /* Do nothing */
|
k = junk; /* Do nothing */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -185,6 +185,8 @@ static const char scanmap[] = {
|
|||||||
'b', 'n', 'm', ',', '.', '?' /* ... */
|
'b', 'n', 'm', ',', '.', '?' /* ... */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define IDT_FUZZ_TIMER 100
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
|
// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
|
||||||
//
|
//
|
||||||
@@ -727,6 +729,62 @@ mswin_layout_main_window(HWND changed_child)
|
|||||||
SetForegroundWindow(changed_child);
|
SetForegroundWindow(changed_child);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VOID CALLBACK FuzzTimerProc(
|
||||||
|
_In_ HWND hwnd,
|
||||||
|
_In_ UINT uMsg,
|
||||||
|
_In_ UINT_PTR idEvent,
|
||||||
|
_In_ DWORD dwTime
|
||||||
|
)
|
||||||
|
{
|
||||||
|
INPUT input[16];
|
||||||
|
int i_pos = 0;
|
||||||
|
int c = randomkey();
|
||||||
|
SHORT k = VkKeyScanA(c);
|
||||||
|
BOOL gen_alt = (rn2(50) == 0) && isalpha(c);
|
||||||
|
|
||||||
|
if (!iflags.debug_fuzzer) {
|
||||||
|
KillTimer(hwnd, IDT_FUZZ_TIMER);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!GetFocus())
|
||||||
|
return;
|
||||||
|
|
||||||
|
ZeroMemory(input, sizeof(input));
|
||||||
|
if (gen_alt) {
|
||||||
|
input[i_pos].type = INPUT_KEYBOARD;
|
||||||
|
input[i_pos].ki.dwFlags = KEYEVENTF_SCANCODE;
|
||||||
|
input[i_pos].ki.wScan = MapVirtualKey(VK_MENU, 0);
|
||||||
|
i_pos++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HIBYTE(k) & 1) {
|
||||||
|
input[i_pos].type = INPUT_KEYBOARD;
|
||||||
|
input[i_pos].ki.dwFlags = KEYEVENTF_SCANCODE;
|
||||||
|
input[i_pos].ki.wScan = MapVirtualKey(VK_LSHIFT, 0);
|
||||||
|
i_pos++;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[i_pos].type = INPUT_KEYBOARD;
|
||||||
|
input[i_pos].ki.dwFlags = KEYEVENTF_SCANCODE;
|
||||||
|
input[i_pos].ki.wScan = MapVirtualKey(LOBYTE(k), 0);
|
||||||
|
i_pos++;
|
||||||
|
|
||||||
|
if (HIBYTE(k) & 1) {
|
||||||
|
input[i_pos].type = INPUT_KEYBOARD;
|
||||||
|
input[i_pos].ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
|
||||||
|
input[i_pos].ki.wScan = MapVirtualKey(VK_LSHIFT, 0);
|
||||||
|
i_pos++;
|
||||||
|
}
|
||||||
|
if (gen_alt) {
|
||||||
|
input[i_pos].type = INPUT_KEYBOARD;
|
||||||
|
input[i_pos].ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
|
||||||
|
input[i_pos].ki.wScan = MapVirtualKey(VK_MENU, 0);
|
||||||
|
i_pos++;
|
||||||
|
}
|
||||||
|
SendInput(i_pos, input, sizeof(input[0]));
|
||||||
|
}
|
||||||
|
|
||||||
LRESULT
|
LRESULT
|
||||||
onWMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
onWMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
@@ -745,11 +803,22 @@ onWMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
mswin_display_splash_window(TRUE);
|
mswin_display_splash_window(TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IDM_FUZZ:
|
||||||
|
if (iflags.debug_fuzzer)
|
||||||
|
KillTimer(hWnd, IDT_FUZZ_TIMER);
|
||||||
|
else
|
||||||
|
SetTimer(hWnd, IDT_FUZZ_TIMER, 10, FuzzTimerProc);
|
||||||
|
iflags.debug_fuzzer = !iflags.debug_fuzzer;
|
||||||
|
break;
|
||||||
case IDM_EXIT:
|
case IDM_EXIT:
|
||||||
|
if (iflags.debug_fuzzer)
|
||||||
|
break;
|
||||||
done2();
|
done2();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDM_SAVE:
|
case IDM_SAVE:
|
||||||
|
if (iflags.debug_fuzzer)
|
||||||
|
break;
|
||||||
if (!program_state.gameover && !program_state.done_hup)
|
if (!program_state.gameover && !program_state.done_hup)
|
||||||
dosave();
|
dosave();
|
||||||
else
|
else
|
||||||
@@ -829,6 +898,9 @@ onWMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
wchar_t *wtext;
|
wchar_t *wtext;
|
||||||
int tlen = 0;
|
int tlen = 0;
|
||||||
|
|
||||||
|
if (iflags.debug_fuzzer)
|
||||||
|
break;
|
||||||
|
|
||||||
ZeroMemory(filename, sizeof(filename));
|
ZeroMemory(filename, sizeof(filename));
|
||||||
ZeroMemory(&ofn, sizeof(ofn));
|
ZeroMemory(&ofn, sizeof(ofn));
|
||||||
ofn.lStructSize = sizeof(OPENFILENAME);
|
ofn.lStructSize = sizeof(OPENFILENAME);
|
||||||
|
|||||||
@@ -142,6 +142,7 @@
|
|||||||
#define IDM_SETTING_LOCKWINDOWS 32797
|
#define IDM_SETTING_LOCKWINDOWS 32797
|
||||||
#define IDM_SETTING_SCREEN_TO_CLIPBOARD 32798
|
#define IDM_SETTING_SCREEN_TO_CLIPBOARD 32798
|
||||||
#define IDM_SETTING_SCREEN_TO_FILE 32799
|
#define IDM_SETTING_SCREEN_TO_FILE 32799
|
||||||
|
#define IDM_FUZZ 32800
|
||||||
#define IDC_STATIC -1
|
#define IDC_STATIC -1
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
@@ -149,7 +150,7 @@
|
|||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 146
|
#define _APS_NEXT_RESOURCE_VALUE 146
|
||||||
#define _APS_NEXT_COMMAND_VALUE 32800
|
#define _APS_NEXT_COMMAND_VALUE 32801
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1341
|
#define _APS_NEXT_CONTROL_VALUE 1341
|
||||||
#define _APS_NEXT_SYMED_VALUE 110
|
#define _APS_NEXT_SYMED_VALUE 110
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user