====================================================================================
#
# 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
====================================================================================