"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Mikhail <mp39590@gmail.com>
Subject:
Re: gotd segfault
To:
gameoftrees@openbsd.org
Date:
Mon, 1 May 2023 14:51:19 +0300

Download raw body.

Thread
On Mon, May 01, 2023 at 02:47:35PM +0300, Mikhail wrote:
> core:~# egdb /home/misha/bin/gotd
> [...]
> Reading symbols from /home/misha/bin/gotd...
> (gdb) run -vvvvd
> Starting program: /home/misha/bin/gotd -vvvvd
> gotd: socket: /var/run/gotd.sock
> gotd: user: misha
> listen: gotd_accept: new client connected on fd 6 uid 1000 gid 1000
> parent: recv_connect: new client uid 1000 connected on fd 5
> parent: list-refs request from uid 1000
> parent: starting auth for uid 1000 repository src
> parent: proc auth /var/git/src.git is on fd 7
> auth /var/git/src.git: authentication request received
> auth /var/git/src.git: authenticating uid 1000 gid 1000
> auth /var/git/src.git: src: Permission denied
> parent: uid 1000: src: Permission denied
> parent: uid 1000: disconnecting
> parent: waiting for child PID 25599 to terminate
> auth /var/git/src.git: shutting down
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x00000b9ad943f762 in gotd_dispatch_auth_child (fd=7, event=2, arg=0xb9d122b0510) at /home/misha/work/got/gotd/gotd.c:1143
> 1143                    log_warnx("uid %d: %s", client->euid, err->msg);
> (gdb) bt
> #0  0x00000b9ad943f762 in gotd_dispatch_auth_child (fd=7, event=2, arg=0xb9d122b0510) at /home/misha/work/got/gotd/gotd.c:1143
> #1  0x00000b9cf77db41f in event_process_active (base=0xb9d512f9760) at /usr/src/lib/libevent/event.c:333
> #2  event_base_loop (base=0xb9d512f9760, flags=<optimized out>) at /usr/src/lib/libevent/event.c:483
> #3  0x00000b9ad943cb43 in main (argc=0, argv=0x78b213c7bff8) at /home/misha/work/got/gotd/gotd.c:1932
> (gdb) p client
> $1 = (struct gotd_client *) 0xb9cdc05a000
> (gdb) p err
> $2 = (const struct got_error *) 0xb9ad9514030 <custom_errors>
> (gdb) p err->msg
> $3 = 0xb9ad9514040 <custom_errors+16> "src: Permission denied"
> (gdb) p client->euid
> Cannot access memory at address 0xb9cdc06a170
> 
> Is this info enough?

The problem was that in gotd.conf I had:

repository "src" {
        path "/var/git/src.git"
#        permit rw flan_hacker
#        permit rw :developers
        permit ro anonymous

        protect branch "main"
        protect tag namespace "refs/tags/"
}

Replacing anonymous with misha made gotd work, but with anonymous it
crashes.