Quake 3 engine infostring crash universal fix 0.1.2b (Linux)

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

====================================================================================