Package: gnubg
Version: 1.06.002-1
Severity: normal
Tags: upstream

Dear Maintainer,

Follow these steps to reproduce the bug:

1. Start GNU Backgammon in graphical mode (just type "gnubg" at the
   command prompt, and make sure X is running).

2. Start a new game by clicking "New" or select File -> New...

3. Select "Human vs. Human" and click "OK".

4. Take note of the numbers on the dice.

5. As the player whose turn it is, offer a resignation by clicking
   "Resign" or select Game -> Resign, and select any of the
   options. This will remove the dice from the board.

6. As the other player, decline the resignation by clicking "Reject" or
   select Game -> Reject.

7. Now, as the first player again, roll the dice by clicking in the area
   on the board in which they would be rolled. Note that the roll is
   different than it was before the resignation offer (if it is not,
   repeat steps 5-7 until it is).

This allows the player to cheat by re-rolling the dice until a good roll
is available. If you can get the computer into a state where it will not
accept a normal resign (play badly until a gammon/backgammon is
inevitable), this bug is also reproducible, allowing the player to cheat
against the computer.

Ideally, in step 5. above, when the player offers a resignation, GNU
Backgammon should leave the dice on the board, and not allow the player
to re-roll them.

Note also that after step 6., if you don't roll the dice and instead
resign again immediately, and you choose a level less than or equal to
the level chosen before (e.g. normal), then it will print "<player> has
already declined your offer of a <single game|gammon|backgammon>." and
will not offer the resignation a second time. This should also happen
when the dice are rolled again before the second resignation. However it
does not.

I suppose that is a different bug, but it seemed related enough to
mention it here.

Also note that in text mode neither of these bugs are present:

$ gnubg -t
[...]
(No game) set player 0 human
Moves for foo must now be entered manually.
(No game) set player 1 human
Moves for bar must now be entered manually.
(No game) new game
foo rolls 3, bar rolls 1.
[...]
(foo) resign
foo offers to resign a single game.
[...]
(bar) reject
bar declines the single game.
[...]
(foo) roll
You have already rolled the dice.
(foo) resign
bar has already declined your offer of a single game.
(foo) exit
Are you sure you want to discard the current match? y


-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-5-amd64 (SMP w/2 CPU cores)
Kernel taint flags: TAINT_FIRMWARE_WORKAROUND
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages gnubg depends on:
ii  debconf [debconf-2.0]   1.5.71
ii  gnubg-data              1.06.002-1
ii  libc6                   2.28-10
ii  libcairo2               1.16.0-4
ii  libcanberra-gtk0        0.30-7
ii  libcanberra0            0.30-7
ii  libcurl4                7.64.0-3
ii  libfreetype6            2.9.1-3
ii  libgdk-pixbuf2.0-0      2.38.1+dfsg-1
ii  libgl1                  1.1.0-1
ii  libglib2.0-0            2.58.3-1
ii  libglu1-mesa [libglu1]  9.0.0-2.1+b3
ii  libgmp10                2:6.1.2+dfsg-4
ii  libgtk2.0-0             2.24.32-3
ii  libgtkglext1            1.2.0-9
ii  libpango-1.0-0          1.42.4-6
ii  libpangocairo-1.0-0     1.42.4-6
ii  libpng16-16             1.6.36-5
ii  libpython2.7            2.7.16-2
ii  libreadline7            7.0-5
ii  libsqlite3-0            3.27.2-2

gnubg recommends no packages.

Versions of packages gnubg suggests:
ii  sensible-utils  0.0.12

-- debconf information:
* gnubg/build-bearoffs: true

Attachment: signature.asc
Description: PGP signature

Reply via email to