==================================================================================== # # 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 # - compile lpatch: gcc -c md5.c ; gcc -o lpatch lpatch.c md5.o # - launch ./lpatch q3infofix_linux.lpatch # - read the text messages # - specify the name of the file to patch # - read the text messages to know if everything has been patched correctly # - test your game TITLE Quake 3 engine infostring crash universal fix 0.1.2b (Linux) 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 Linux 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. . Note that this patch has been tested with all the latest releases of these games for Linux and older versions will be NOT supported by me, so don't ask. FILE executable ONLY_ONE ; if there are multiple patches, this one forces the handling only of ; the first with the original pattern existent in the file ; used by games like Quake 3 and RTCWET BYTES_ORIGINAL 83 f8 01 ; cmp eax,0x1 76 ?? ; jbe 8080e6d 83 fa 0a ; cmp edx,0xa 74 ?? ; je 8080e6d 83 fa 25 ; cmp edx,0x25 75 ?? ; jne 8080e61 ba 2e 00 00 00 ; mov edx,0x2e 88 14 3b ; mov BYTE PTR [ebx+edi],dl 43 ; inc ebx 81 fb fe 03 00 00 ; cmp ebx,0x3fe BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 7e 01 00 00 ; cmp ebx,0x17e ; used by games like SoF2, Jedi Academy and Jedi Outcast BYTES_ORIGINAL 85 c0 ; test eax,eax 74 ?? ; je 0x808765f 83 f8 0a ; cmp eax,0xa 74 ?? ; je 0x8087669 83 f8 25 ; cmp eax,0x25 75 ?? ; jne 0x8087638 b8 2e 00 00 00 ; mov eax,0x2e 88 83 ?? ?? ?? 08 ; mov BYTE PTR [ebx+137074752],al 43 ; inc ebx 81 fb ff 03 00 00 ; cmp ebx,0x3ff BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 7f 01 00 00 ; cmp ebx,0x17f ; used only by Elite Force 2 BYTES_ORIGINAL 83 f8 01 ; cmp eax,0x1 76 ?? ; jbe 807ce95 83 f9 0a ; cmp ecx,0xa 74 ?? ; je 807ce95 83 f9 25 ; cmp ecx,0x25 75 ?? ; jne 807ce86 b9 2e 00 00 00 ; mov ecx,0x2e 88 ?? ?? ?? ?? 08 ; mov BYTE PTR [ebx+137331616],cl 43 ; inc ebx 81 fb fe 03 00 00 ; cmp ebx,0x3fe BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 7e 01 00 00 ; cmp ebx,0x17e ; used only by Elite Force BYTES_ORIGINAL 83 f8 01 ; cmp eax,0x1 76 ?? ; jbe 806bd6c 83 fa 0a ; cmp edx,0xa 74 ?? ; je 806bd6c 83 fa 25 ; cmp edx,0x25 75 ?? ; jne 806bd5d ba 2e 00 00 00 ; mov edx,0x2e 88 ?? ?? ?? ?? 08 ; mov BYTE PTR [ebx+135868320],dl 43 ; inc ebx 81 fb fe 03 00 00 ; cmp ebx,0x3fe BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 7e 01 00 00 ; cmp ebx,0x17e ; Q3 111 BYTES_ORIGINAL 89 C2 8D 42 01 83 F8 01 76 2B 83 FA 0A 74 26 83 FA 25 75 05 BA 2E 00 00 00 8B 44 24 1C B9 20 BC 1A 08 88 14 08 40 89 44 24 1C 3D FE 03 00 00 BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 7e 01 00 00 ; Q3 116n BYTES_ORIGINAL 83 F8 01 76 2B 83 FA 0A 74 26 83 FA 25 75 05 BA 2E 00 00 00 8B 44 24 1C B9 A0 EA 18 08 88 14 08 40 89 44 24 1C 3D FE 03 00 00 BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 7E 01 00 00 ; mohaa BYTES_ORIGINAL 83 F9 01 ; cmp ecx, 00000001 76 ?? ; jbe 00031313 83 FA 0A ; cmp edx, 0000000A 74 ?? ; je 00031313 83 FA 25 ; cmp edx, 00000025 74 ?? ; je 00031326 88 93 ?? ?? ?? ?? ; mov byte ptr [ebx+082F7060], dl 43 ; inc ebx 81 FB FE 07 00 00 ; cmp ebx, 000007FE BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 7E 01 00 00 ; cmp ebx, 0000017E ; moh spearhead BYTES_ORIGINAL 83 7D F8 00 ; cmp dword ptr [ebp-08], 00000000 74 ?? ; je 000430B0 83 7D F8 0A ; cmp dword ptr [ebp-08], 0000000A 74 ?? ; je 000430B0 EB ?? ; jmp 000430B2 8D B4 26 00 00 00 00 ; lea esi, dword ptr [esi] EB ?? ; jmp 000430E2 83 7D F8 25 ; cmp dword ptr [ebp-08], 00000025 75 ?? ; jne 000430BF C7 45 F8 2E 00 00 00 ; mov [ebp-08], 0000002E B8 ?? ?? ?? ?? ; mov eax, 083124A0 8B 55 FC ; mov edx, dword ptr [ebp-04] 8A 4D F8 ; mov cl, byte ptr [ebp-08] 88 0C 02 ; mov byte ptr [edx+eax], cl FF 45 FC ; inc [ebp-04] 81 7D FC FE 07 00 00 ; cmp dword ptr [ebp-04], 000007FE BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 7E 01 00 00 ; cmp dword ptr [ebp-04], 0000017E ====================================================================================