==================================================================================== # # this file has been created for the Lame patcher program available for both *nix # and Windows platforms. # You need this program for continuing the patching of your files: # # http://aluigi.org/mytoolz.htm#lpatch # # Quick step-by-step # - launch lpatch.exe # - select this q3infofix.lpatch file # - read the message windows and click yes # - select the file (usually executables or dlls) to patch # - read the message windows to know if everything has been patched correctly # - test your game TITLE Quake 3 engine infostring crash universal fix 0.1.3 (Windows) by Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org INTRO This unofficial patch is referred to the bug described here: . . http://aluigi.org/adv/q3infoboom-adv.txt . and can be applied to all the Windows versions of the games which use the Quake 3 engine: . . http://en.wikipedia.org/wiki/Quake_III_engine#Uses_of_the_engine . This patch is very simple since it just limits the string of the incoming Quake commands avoiding the subsequent crash if a long string is used. The limit is 320 instead of 1024 bytes which is the best size after many tests on many games. Naturally remember to test your server with the q3infoboom proof-of-concept after having applied this patch. . FYI, this patch already includes the old codinfofix and sof2-103-fix. . Note that this patch has been tested with all the latest releases of these games for Windows and older versions will be NOT supported by me, so don't ask. FILE *.exe ONLY_ONE ; Soldier of Fortune 2 1.03 BYTES_ORIGINAL 90 90 90 90 90 90 90 90 90 *65 ; 00078A34 8D 44 24 20 *2a9 ; 00078AA2 50 8D 54 24 10 *20d ; 00078D4F 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ; 00078F61 BYTES_PATCH 88 48 40 8D 44 24 20 EB 69 *65 33 C9 EB 8E *2a9 E9 0D 02 00 00 *20d 50 33 C9 88 48 40 8D 54 24 10 E9 E4 FD FF FF ; // getstatus fix ;00478A34 884840 mov byte ptr [eax+40], cl ;00478A37 8D442420 lea eax, dword ptr [esp+20] ;00478A3B EB69 jmp 00478AA6 ;.. ;00478AA2 33C9 xor ecx, ecx ;00478AA4 EB8E jmp 00478A34 ; ; // getinfo fix ;00478D4F E90D020000 jmp 00478F61 ;.. ;00478F61 50 push eax ;00478F62 33C9 xor ecx, ecx ;00478F64 884840 mov byte ptr [eax+40], cl ;00478F67 8D542410 lea edx, dword ptr [esp+10] ;00478F6B E9E4FDFFFF jmp 00478D54 ; ; the following patch is for sof2 1.00, I have preferred to left ; the old lpatch.dat ; ; Soldier of Fortune 2 1.00 ; ;BYTES_ORIGINAL ; 03 *fff0 *fff0 *1b58 ; 0005457D ; 90 90 90 90 90 90 90 90 90 *33 ; 000760B6 ; 8D 44 24 18 ; 000760F2 ; ;BYTES_PATCH ; 01 *fff0 *fff0 *1b58 ; 88 48 40 8D 44 24 18 EB 37 *33 ; 33 C9 EB C0 ; Call of Duty BYTES_ORIGINAL 85 C0 ; test eax, eax 74 ?? ; je 00447C7D 83 F8 0A ; cmp eax, 0000000A 74 ?? ; je 00447C7D 83 F8 25 ; cmp eax, 00000025 75 ?? ; jne 00447C60 B8 2E 00 00 00 ; mov eax, 0000002E EB ?? ; jmp 00447C6E 3C 92 ; cmp al, 92 75 ?? ; jne 00447C68 B0 27 ; mov al, 27 EB ?? ; jmp 00447C6E 3C 7F ; cmp al, 7F 76 ?? ; jbe 00447C6E B0 2E ; mov al, 2E 88 ?? ?? ?? ?? ?? ; mov byte ptr [esi+00916F88], al 46 ; inc esi 81 FE FF 03 00 00 ; cmp esi, 000003FF BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 7F 01 00 00 ; cmp esi, 0000017F ; any other executable BYTES_ORIGINAL 74 ?? ; je 004299DF 83 f8 0a ; cmp eax, 0000000A 74 ?? ; je 004299DF 83 f8 25 ; cmp eax, 00000025 75 ?? ; jne 004299D0 b8 2e 00 00 00 ; mov eax, 0000002E 88 ?? ?? ?? ?? ?? ; mov byte ptr [esi+008C5CD0], al ?? ; inc esi 81 ?? ff 03 00 00 ; cmp esi, 000003FF BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 7f 01 00 00 ; cmp esi, 0000017f ====================================================================================