[Announce] FrogComposband 7.1.salmiak released

Collapse
X
 
  • Time
  • Show
Clear All
new posts

  • mariari
    replied
    Originally posted by Nick
    Looks to me like
    Code:
        /* Paranoia -- Clip the default entry */
        buf[len] = '\0';
    should be
    Code:
        /* Paranoia -- Clip the default entry */
        buf[len - 1] = '\0';
    (util.c line 2720). Or potentially you could use different call parameters in line 979 of obj.c, but that still leaves it open for error in other calls.
    Yeah That seems to fix the two errors I've encountered.

    I've since got other people to compile the game, and seems if they ran the make file without any options, the commands work, but pref crashes when you hit enter.

    However when they do compile with
    Code:
    ./configure SANITIZE_FLAGS=-fsanitize=address --with-no-install
    This error happens for them, I'm guessing without fsantize=adresss the game just sees the errors writes to the memory location that is out of bounds and continues on. Should I make a pull request with this on the repo, it seems to lack any sort of issue tracking.

    Thank you once again
    Last edited by mariari; January 17, 2022, 00:36.

    Leave a comment:


  • Nick
    replied
    Originally posted by mariari
    I got the game to compile fine on Linux, however it seems if I try to press !, or { (inscribe then select any item) the game crashes with the message given in the below code snippet .
    Looks to me like
    Code:
        /* Paranoia -- Clip the default entry */
        buf[len] = '\0';
    should be
    Code:
        /* Paranoia -- Clip the default entry */
        buf[len - 1] = '\0';
    (util.c line 2720). Or potentially you could use different call parameters in line 979 of obj.c, but that still leaves it open for error in other calls.

    Leave a comment:


  • mariari
    replied
    I got the game to compile fine on Linux, however it seems if I try to press !, or { (inscribe then select any item) the game crashes with the message given in the below code snippet .

    Note this happens both with the master branch on github and the 7.1 salmiak release. Does anyone know if there is some library mismatch or any way to solve or better report this issue?

    Code:
    2 katya@Babylon-4:~/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak % ./frogcomposband 
    =================================================================
    ==3746037==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffe9fbb8ec0 at pc 0x555c18d6a3a2 bp 0x7ffe9fbb8c70 sp 0x7ffe9fbb8c60
    WRITE of size 1 at 0x7ffe9fbb8ec0 thread T0
        #0 0x555c18d6a3a1 in askfor_aux /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/util.c:2720
        #1 0x555c18d6abbc in askfor /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/util.c:2904
        #2 0x555c18a85133 in _inscriber /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/obj.c:979
        #3 0x555c18a9cb97 in obj_prompt /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/obj_prompt.c:147
        #4 0x555c18a85555 in obj_inscribe_ui /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/obj.c:999
        #5 0x555c1884cb35 in _dispatch_command /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/dungeon.c:4031
        #6 0x555c1884e516 in process_command /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/dungeon.c:4499
        #7 0x555c18853232 in process_player /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/dungeon.c:5018
        #8 0x555c1885793c in dungeon /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/dungeon.c:5432
        #9 0x555c18860566 in play_game /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/dungeon.c:6464
        #10 0x555c18e8adbe in main /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/main.c:779
        #11 0x7f9e56cfeb24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)
        #12 0x555c1863fa5d in _start (/home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/frogcomposband+0x1d6a5d)
    
    Address 0x7ffe9fbb8ec0 is located in stack of thread T0 at offset 128 in frame
        #0 0x555c18a84d6b in _inscriber /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/obj.c:959
    
      This frame has 2 object(s):
        [48, 128) 'insc' (line 966) <== Memory access at offset 128 overflows this variable
        [160, 415) 'name' (line 965)
    HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork
          (longjmp and C++ exceptions *are* supported)
    SUMMARY: AddressSanitizer: stack-buffer-overflow /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/util.c:2720 in askfor_aux
    Shadow bytes around the buggy address:
      0x100053f6f180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x100053f6f190: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 f1 f1 04 f2
      0x100053f6f1a0: 04 f2 00 00 00 00 00 00 00 00 00 00 00 00 04 f3
      0x100053f6f1b0: f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 00 00
      0x100053f6f1c0: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 f1 f1 00 00
    =>0x100053f6f1d0: 00 00 00 00 00 00 00 00[f2]f2 f2 f2 00 00 00 00
      0x100053f6f1e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x100053f6f1f0: 00 00 00 00 00 00 00 00 00 00 00 07 f3 f3 f3 f3
      0x100053f6f200: f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 00 00
      0x100053f6f210: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 04 f2 00 00
      0x100053f6f220: 00 00 00 f2 f2 f2 f2 f2 00 00 00 00 00 00 00 00
    Shadow byte legend (one shadow byte represents 8 application bytes):
      Addressable:           00
      Partially addressable: 01 02 03 04 05 06 07 
      Heap left redzone:       fa
      Freed heap region:       fd
      Stack left redzone:      f1
      Stack mid redzone:       f2
      Stack right redzone:     f3
      Stack after return:      f5
      Stack use after scope:   f8
      Global redzone:          f9
      Global init order:       f6
      Poisoned by user:        f7
      Container overflow:      fc
      Array cookie:            ac
      Intra object redzone:    bb
      ASan internal:           fe
      Left alloca redzone:     ca
      Right alloca redzone:    cb
      Shadow gap:              cc
    
    2 1 katya@Babylon-4:~/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak % ./frogcomposband
    =================================================================
    ==3746105==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffc69e3ad40 at pc 0x55f9d91b63a2 bp 0x7ffc69e3aae0 sp 0x7ffc69e3aad0
    WRITE of size 1 at 0x7ffc69e3ad40 thread T0
        #0 0x55f9d91b63a1 in askfor_aux /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/util.c:2720
        #1 0x55f9d91b6bbc in askfor /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/util.c:2904
        #2 0x55f9d91b6c02 in get_string /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/util.c:2932
        #3 0x55f9d8bb00bc in do_cmd_pref /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/cmd4.c:1770
        #4 0x55f9d8c997ea in _dispatch_command /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/dungeon.c:4275
        #5 0x55f9d8c9a516 in process_command /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/dungeon.c:4499
        #6 0x55f9d8c9f232 in process_player /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/dungeon.c:5018
        #7 0x55f9d8ca393c in dungeon /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/dungeon.c:5432
        #8 0x55f9d8cac566 in play_game /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/dungeon.c:6464
        #9 0x55f9d92d6dbe in main /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/main.c:779
        #10 0x7f0617c3ab24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)
        #11 0x55f9d8a8ba5d in _start (/home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/frogcomposband+0x1d6a5d)
    
    Address 0x7ffc69e3ad40 is located in stack of thread T0 at offset 128 in frame
        #0 0x55f9d8baffdc in do_cmd_pref /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/cmd4.c:1763
    
      This frame has 1 object(s):
        [48, 128) 'buf' (line 1764) <== Memory access at offset 128 overflows this variable
    HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork
          (longjmp and C++ exceptions *are* supported)
    SUMMARY: AddressSanitizer: stack-buffer-overflow /home/katya/Desktop/Games/Rogue/Angband/frogcomposband/frogcomposband-7.1.salmiak/src/util.c:2720 in askfor_aux
    Shadow bytes around the buggy address:
      0x10000d3bf550: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x10000d3bf560: 00 00 00 00 00 00 f1 f1 f1 f1 f1 f1 04 f2 04 f2
      0x10000d3bf570: 00 00 00 00 00 00 00 00 00 00 00 00 04 f3 f3 f3
      0x10000d3bf580: f3 f3 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x10000d3bf590: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 f1 f1 00 00
    =>0x10000d3bf5a0: 00 00 00 00 00 00 00 00[f3]f3 f3 f3 00 00 00 00
      0x10000d3bf5b0: 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00 00
      0x10000d3bf5c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x10000d3bf5d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x10000d3bf5e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x10000d3bf5f0: 00 f2 f2 f2 f2 f2 f2 f2 f2 f2 00 00 00 00 00 00
    Shadow byte legend (one shadow byte represents 8 application bytes):
      Addressable:           00
      Partially addressable: 01 02 03 04 05 06 07 
      Heap left redzone:       fa
      Freed heap region:       fd
      Stack left redzone:      f1
      Stack mid redzone:       f2
      Stack right redzone:     f3
      Stack after return:      f5
      Stack use after scope:   f8
      Global redzone:          f9
      Global init order:       f6
      Poisoned by user:        f7
      Container overflow:      fc
      Array cookie:            ac
      Intra object redzone:    bb
      ASan internal:           fe
      Left alloca redzone:     ca
      Right alloca redzone:    cb
      Shadow gap:              cc

    Leave a comment:


  • Sideways
    replied
    Originally posted by GrimaTheBold
    A quick Ninja question - is there any downside to adding light sources as long as they're offset by darkness sources?
    No, actually negative total light simply gets rounded up to no light. As long as any light gets offset by darkness, you're good.

    Leave a comment:


  • GrimaTheBold
    replied
    A quick Ninja question - is there any downside to adding light sources as long as they're offset by darkness sources?

    I have a Feanoran Lamp of Darkness which decreases light by 3. Is there any penalty to using Sting, or an Amulet with Lu, as long as they are still offset by the -3 on the Lamp and I'm not getting the "Icky light" message? Is there a benefit to having a larger negative light (darkness)?

    Leave a comment:


  • smbhax
    replied
    Originally posted by backwardsEric
    This also worked for Angband:

    Code:
    ./configure --with-no-install --with-ncurses-prefix=/usr LIBS=-lncurses
    Aha! That one solves the ncurses5/6 detection problem on Cygwin. Thanks! : D

    Leave a comment:


  • backwardsEric
    replied
    The "Fatal Error." means it didn't find the lib directory. Check the output of configure to see what it said the "lib path" would be. I suspect that configure wants the LIBS= option at the end of the command line (after any of the --with, --without, --enable, --prefix, ...) and ignored the --with-no-install.

    Leave a comment:


  • lea2501
    replied
    Originally posted by backwardsEric
    When I compiled it on OpenBSD 6.9, it did not recognize the installed version of ncurses by default but did recognize the X11 libraries which were also installed. Adding "--with-ncurses-prefix=/usr LIBS=-lncurses" to the options to configure let it build the curses front end. That worked, at least as far as getting to the splash screen and the prompt for what sort of game to start.
    It managed to compile like this:
    Code:
    $ ./configure --prefix $HOME/.frogcomposband --with-ncurses-prefix=/usr LIBS=-lncurses --without-x --with-no-install CFLAGS="-DSGI -DULTRIX"
    But then i get this (new) error:
    Code:
    x ~/src/frogcomposband [master]
    lea@openbsd > ./src/frogcomposband -uUser
    ./src/frogcomposband: Fatal Error.

    Leave a comment:


  • backwardsEric
    replied
    Originally posted by lea2501
    Code:
    v ~/src/frogcomposband [master]
    lea@openbsd > ./src/frogcomposband -uUser -mgcu -- -n1
    ./src/frogcomposband: Unable to prepare any 'display module'!
    x ~/src/frogcomposband [master]
    lea@openbsd > ./src/frogcomposband -uUser
    ./src/frogcomposband: Unable to prepare any 'display module'!
    x ~/src/frogcomposband [master]
    lea@openbsd > ./src/frogcomposband
    ./src/frogcomposband: Unable to prepare any 'display module'!
    When I compiled it on OpenBSD 6.9, it did not recognize the installed version of ncurses by default but did recognize the X11 libraries which were also installed. Adding "--with-ncurses-prefix=/usr LIBS=-lncurses" to the options to configure let it build the curses front end. That worked, at least as far as getting to the splash screen and the prompt for what sort of game to start.

    Leave a comment:


  • lea2501
    replied
    Originally posted by backwardsEric
    Hmm, setting SGI should have excluded that; it worked on OpenBSD 6.9. Commenting out line 43 of h-system.h should do the trick; replace it with

    Code:
    /* # include <sys/timeb.h> */
    Thanks! i managed to compiled it with this:
    Code:
    $ ./configure --prefix $HOME/.frogcomposband --without-x --with-no-install CFLAGS="-DSGI -DULTRIX"
    $ gmake
    because i saw this in the "src/h-system.h" file:
    Code:
    # if !defined(SGI) && !defined(ULTRIX)
        # include <sys/timeb.h>
    # endif
    and it compiled! but it doesn't work
    Code:
    v ~/src/frogcomposband [master]
    lea@openbsd > ./src/frogcomposband -uUser -mgcu -- -n1
    ./src/frogcomposband: Unable to prepare any 'display module'!
    x ~/src/frogcomposband [master]
    lea@openbsd > ./src/frogcomposband -uUser
    ./src/frogcomposband: Unable to prepare any 'display module'!
    x ~/src/frogcomposband [master]
    lea@openbsd > ./src/frogcomposband
    ./src/frogcomposband: Unable to prepare any 'display module'!

    Leave a comment:


  • backwardsEric
    replied
    Originally posted by lea2501
    Sadly i have the same exact error

    Code:
    Generating dependencies...
    gmake[4]: Entering directory '/home/lea/src/frogcomposband/src'
    In file included from ninja.c:1:
    In file included from ./angband.h:19:
    In file included from ./h-basic.h:66:
    ./h-system.h:43:12: fatal error: 'sys/timeb.h' file not found
    #  include <sys/timeb.h>
               ^~~~~~~~~~~~~
    Hmm, setting SGI should have excluded that; it worked on OpenBSD 6.9. Commenting out line 43 of h-system.h should do the trick; replace it with

    Code:
    /* # include <sys/timeb.h> */

    Leave a comment:


  • lea2501
    replied
    Originally posted by backwardsEric
    A quick way is to tell it you're using an SGI (looks like the only effect of that is to skip the problematic header file):

    Code:
    ./configure --prefix $HOME/.frogcomposband --without-x --with-no-install CFLAGS=-DSGI
    gmake
    Sadly i have the same exact error

    Code:
    Generating dependencies...
    gmake[4]: Entering directory '/home/lea/src/frogcomposband/src'
    In file included from ninja.c:1:
    In file included from ./angband.h:19:
    In file included from ./h-basic.h:66:
    ./h-system.h:43:12: fatal error: 'sys/timeb.h' file not found
    #  include <sys/timeb.h>
               ^~~~~~~~~~~~~

    Leave a comment:


  • backwardsEric
    replied
    Originally posted by lea2501
    How can i compile Frogcomposband in OpenBSD 7.0 -current? i tried the following with no success:

    Code:
    $ ./configure --prefix $HOME/.frogcomposband --without-x --with-no-install
    $ gmake clean
    $ gmake
    A quick way is to tell it you're using an SGI (looks like the only effect of that is to skip the problematic header file):

    Code:
    ./configure --prefix $HOME/.frogcomposband --without-x --with-no-install CFLAGS=-DSGI
    gmake

    Leave a comment:


  • lea2501
    replied
    How can i compile Frogcomposband in OpenBSD 7.0 -current? i tried the following with no success:

    Code:
    $ ./configure --prefix $HOME/.frogcomposband --without-x --with-no-install
    $ gmake clean
    $ gmake
    But i get this output:
    Code:
    gmake[1]: Entering directory '/home/lea/src/frogcomposband'
    Entering directory src
    gmake[2]: Entering directory '/home/lea/src/frogcomposband/src'
    gmake[3]: Entering directory '/home/lea/src/frogcomposband/src'
    gmake[3]: Leaving directory '/home/lea/src/frogcomposband/src'
    gmake[3]: Entering directory '/home/lea/src/frogcomposband/src'
    Generating dependencies...
    gmake[4]: Entering directory '/home/lea/src/frogcomposband/src'
    In file included from monk.c:1:
    In file included from ./angband.h:19:
    In file included from ./h-basic.h:66:
    ./h-system.h:43:12: fatal error: 'sys/timeb.h' file not found
    #  include <sys/timeb.h>
               ^~~~~~~~~~~~~
    1 error generated.
    In file included from monspell.c:1:
    In file included from ./angband.h:19:
    In file included from ./h-basic.h:66:
    ./h-system.h:43:12: fatal error: 'sys/timeb.h' file not found
    #  include <sys/timeb.h>
               ^~~~~~~~~~~~~

    Leave a comment:


  • Sideways
    replied
    That's a good point; I could make thieves drop stolen gold, but also pick up floor gold. Although it would change the money balance a bit, and make the Thieves' Hideout quest less of a warning about giving all your money away.

    Leave a comment:

Working...
😀
😂
🥰
😘
🤢
😎
😞
😡
👍
👎