Bug#681812: openarena-server: segfaults when a client is requesting a callvote to kick another player

Markus Koschany apo at gambaru.de
Mon Jul 16 18:54:41 UTC 2012


Package: openarena-server
Version: 0.8.8-5
Severity: normal

Dear Maintainer,

as i have hinted in my last report to #664637, there are at least two
different kind of bugs which can lead to a server crash.

This one is reproducible with Debian's standard configuration. 

*How to reproduce the crash?*

1. Join the server and open the ingame console with Shift+ESC or ~.
2. Ask for a vote to kick a non-existing player on the server like

\callvote kick pullo

if pullo is a player who does not play on the server.

3. Result: Segmentation Fault and server crash

The crash always occurs if the callvote name differs from the actual player
names.

If you ask for a callvote and if you leave the field for the player
name blank, then the following message can be found in the log file.

NET_CompareBaseAdr: bad address type

As far as i can tell the "clientkick id"-command, which you can use
from the ingame menu, works as intended. 

*Quick solution*

Disable the vote option to kick a player from the server in
/etc/openarena-server/server.cfg. The default value is:

set g_voteNames "/map_restart/nextmap/map/g_gametype/kick/clientkick/g_doWarmup/timelimit/fraglimit/shuffle" 

If you remove "kick" from the line the callvote option to kick another
player is disabled and nobody can crash the server anymore.

set g_voteNames "/map_restart/nextmap/map/g_gametype/clientkick/g_doWarmup/timelimit/fraglimit/shuffle" 

*Attachments*

I've attached my debug log files and the backtrace from gdb. It seems
that the if-condition in code/game/g_cmds.c line 1818 is never true
although the player doesn't exist. Somehow the server doesn't check
carefully enough if a player exists or not. 

Kind regards
Markus Koschany

-- System Information:
Debian Release: 6.0.5
  APT prefers stable
  APT policy: (990, 'stable'), (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 3.0.24 (SMP w/1 CPU core)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages openarena-server depends on:
ii  adduser                   3.112+nmu2     add and remove users and groups
ii  ioquake3-server           1.36+svn2287-1 Standalone server for ioQuake3 bas
ii  libc6                     2.11.3-3       Embedded GNU C Library: Shared lib
ii  openarena-081-maps        0.8.5split-2   OpenArena game data - maps from 0.
ii  openarena-081-misc        0.8.5split-2   OpenArena game data - miscellaneou
ii  openarena-081-players     0.8.5split-2   OpenArena game data - player graph
ii  openarena-081-players-mat 0.8.5split-2   OpenArena game data - "mature" pla
ii  openarena-081-textures    0.8.5split-2   OpenArena game data - textures fro
ii  openarena-085-data        0.8.5split-2   OpenArena game data - 0.8.5 update
ii  openarena-088-data        0.8.8-1        OpenArena game data
ii  openarena-data            0.8.5-3        OpenArena game data

openarena-server recommends no packages.

openarena-server suggests no packages.

Versions of packages ioquake3-server depends on:
ii  libc6                   2.11.3-3         Embedded GNU C Library: Shared lib
ii  zlib1g                  1:1.2.3.4.dfsg-3 compression library - runtime

-- Configuration Files:
/etc/default/openarena-server changed [not included]
/etc/init.d/openarena-server changed [not included]
/etc/openarena-server/server.cfg changed [not included]

-- no debconf information



More information about the Pkg-games-devel mailing list