bus1 / dbus-broker

Linux D-Bus Message Broker
https://github.com/bus1/dbus-broker/wiki
Apache License 2.0
677 stars 79 forks source link

`../src/dbus/socket.c:180:42: runtime error: applying zero offset to null pointer` with clang-18 #365

Closed mrc0mmand closed 2 months ago

mrc0mmand commented 4 months ago

Reproducible on Fedora 40/Rawhide with clang-18 in the dbus-broker:dbus-broker suite:

$ clang --version
clang version 18.1.1 (Fedora 18.1.1-1.fc40)
Target: x86_64-redhat-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Configuration file: /etc/clang/clang.cfg
$ CC=clang meson setup build-san -Db_sanitize=address,undefined -Db_lundef=false
...
$ ninja -C build-san
...
$ UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1 meson test -C build-san -v "Broker API"
ninja: Entering directory `/home/fsumsal/repos/dbus-broker/build-san'
[5/5] Linking target test/dbus/test-broker
1/1 dbus-broker:dbus-broker / Broker API RUNNING       
>>> DBUS_BROKER_TEST_BROKER=/home/fsumsal/repos/dbus-broker/build-san/src/dbus-broker MALLOC_PERTURB_=218 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 /home/fsumsal/repos/dbus-broker/build-san/test/dbus/test-broker
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ✀  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
../src/dbus/socket.c:177:42: runtime error: applying zero offset to null pointer
    #0 0x5b7c06 in socket_buffer_consume /home/fsumsal/repos/dbus-broker/build-san/../src/dbus/socket.c:177:42
    #1 0x5b2988 in socket_dispatch_write /home/fsumsal/repos/dbus-broker/build-san/../src/dbus/socket.c:905:21
    #2 0x5b00cd in socket_dispatch /home/fsumsal/repos/dbus-broker/build-san/../src/dbus/socket.c:949:21
    #3 0x595e81 in connection_dispatch /home/fsumsal/repos/dbus-broker/build-san/../src/dbus/connection.c:225:29
    #4 0x50c383 in controller_dispatch_connection /home/fsumsal/repos/dbus-broker/build-san/../src/broker/controller.c:213:13
    #5 0x5bc24e in dispatch_context_dispatch /home/fsumsal/repos/dbus-broker/build-san/../src/util/dispatch.c:343:21
    #6 0x509518 in broker_run /home/fsumsal/repos/dbus-broker/build-san/../src/broker/broker.c:223:21
    #7 0x505c2a in run /home/fsumsal/repos/dbus-broker/build-san/../src/broker/main.c:259:21
    #8 0x503a9d in main /home/fsumsal/repos/dbus-broker/build-san/../src/broker/main.c:289:13
    #9 0x7f5f372eb149 in __libc_start_call_main (/lib64/libc.so.6+0x28149) (BuildId: 0d710e9d9dc10c500b8119c85da75004183618e2)
    #10 0x7f5f372eb20a in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x2820a) (BuildId: 0d710e9d9dc10c500b8119c85da75004183618e2)
    #11 0x42a4b4 in _start (/home/fsumsal/repos/dbus-broker/build-san/src/dbus-broker+0x42a4b4) (BuildId: 6059c4021aa4a53e2102a1b6d18f4314e54f318a)

SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../src/dbus/socket.c:177:42 
test-broker: ../test/dbus/util-broker.c:539: void util_broker_terminate(Broker *): Assertion `false && "!value"' failed.
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
1/1 dbus-broker:dbus-broker / Broker API FAIL            0.12s   killed by signal 6 SIGABRT
dvdhrm commented 4 months ago

sigh Why can't we do arithmetic on NULL pointers? I doubt that this leads to any problems in this particular case, so I don't think it is urgent, but we probably have to guard all the buffer adjustments.

Thanks for reporting this!

dvdhrm commented 2 months ago

(Fix pending in #372)

dvdhrm commented 2 months ago

Fixed. Thanks a lot for the report!