iwd segfault after upgraded to 2.12
Here is my valgrind output. I was using 2.11 just fine. iwd only started crashing after I restarted the service after the 2.12 upgrade.
$ doas valgrind --leak-check=full /usr/libexec/iwd
==13931== Memcheck, a memory error detector
==13931== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==13931== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info
==13931== Command: /usr/libexec/iwd
==13931==
Wireless daemon version 2.12
Loaded configuration from /etc/iwd/main.conf
==13931== Invalid read of size 1
==13931== at 0x48B43B0: strlen (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==13931== by 0x405926C: strdup (strdup.c:6)
==13931== by 0x1A321E: l_strdup (util.c:139)
==13931== by 0x11B853: wiphy_get_driver_name (wiphy.c:1905)
==13931== by 0x11B853: wiphy_register (wiphy.c:1995)
==13931== by 0x11E04F: wiphy_create_complete (wiphy.c:2379)
==13931== by 0x159026: manager_filtered_wiphy_dump_done (manager.c:582)
==13931== by 0x159117: manager_wiphy_dump_done (manager.c:611)
==13931== by 0x1AD5B3: destroy_request (genl.c:661)
==13931== by 0x1AD5B3: process_unicast (genl.c:940)
==13931== by 0x1AD5B3: received_data (genl.c:1043)
==13931== by 0x1AA02C: io_callback (io.c:105)
==13931== by 0x1A91EC: l_main_iterate (main.c:461)
==13931== by 0x1A92BD: l_main_run (main.c:508)
==13931== by 0x1A92BD: l_main_run (main.c:490)
==13931== by 0x1A94EE: l_main_run_with_signal (main.c:630)
==13931== Address 0xfffffffffeffe7ec is not stack'd, malloc'd or (recently) free'd
==13931==
==13931==
==13931== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==13931== Access not within mapped region at address 0xFFFFFFFFFEFFE7EC
==13931== at 0x48B43B0: strlen (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==13931== by 0x405926C: strdup (strdup.c:6)
==13931== by 0x1A321E: l_strdup (util.c:139)
==13931== by 0x11B853: wiphy_get_driver_name (wiphy.c:1905)
==13931== by 0x11B853: wiphy_register (wiphy.c:1995)
==13931== by 0x11E04F: wiphy_create_complete (wiphy.c:2379)
==13931== by 0x159026: manager_filtered_wiphy_dump_done (manager.c:582)
==13931== by 0x159117: manager_wiphy_dump_done (manager.c:611)
==13931== by 0x1AD5B3: destroy_request (genl.c:661)
==13931== by 0x1AD5B3: process_unicast (genl.c:940)
==13931== by 0x1AD5B3: received_data (genl.c:1043)
==13931== by 0x1AA02C: io_callback (io.c:105)
==13931== by 0x1A91EC: l_main_iterate (main.c:461)
==13931== by 0x1A92BD: l_main_run (main.c:508)
==13931== by 0x1A92BD: l_main_run (main.c:490)
==13931== by 0x1A94EE: l_main_run_with_signal (main.c:630)
==13931== If you believe this happened as a result of a stack
==13931== overflow in your program's main thread (unlikely but
==13931== possible), you can try to increase the size of the
==13931== main thread stack using the --main-stacksize= flag.
==13931== The main thread stack size used in this run was 8388608.
==13931==
==13931== HEAP SUMMARY:
==13931== in use at exit: 70,819 bytes in 990 blocks
==13931== total heap usage: 2,495 allocs, 1,505 frees, 196,266 bytes allocated
==13931==
==13931== 40 bytes in 1 blocks are definitely lost in loss record 435 of 573
==13931== at 0x48AD723: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==13931== by 0x40529F3: vasprintf (vasprintf.c:13)
==13931== by 0x1A335A: l_strdup_printf (util.c:193)
==13931== by 0x11B811: wiphy_get_driver_name (wiphy.c:1895)
==13931== by 0x11B811: wiphy_register (wiphy.c:1995)
==13931== by 0x11E04F: wiphy_create_complete (wiphy.c:2379)
==13931== by 0x159026: manager_filtered_wiphy_dump_done (manager.c:582)
==13931== by 0x159117: manager_wiphy_dump_done (manager.c:611)
==13931== by 0x1AD5B3: destroy_request (genl.c:661)
==13931== by 0x1AD5B3: process_unicast (genl.c:940)
==13931== by 0x1AD5B3: received_data (genl.c:1043)
==13931== by 0x1AA02C: io_callback (io.c:105)
==13931== by 0x1A91EC: l_main_iterate (main.c:461)
==13931== by 0x1A92BD: l_main_run (main.c:508)
==13931== by 0x1A92BD: l_main_run (main.c:490)
==13931== by 0x1A94EE: l_main_run_with_signal (main.c:630)
==13931==
==13931== LEAK SUMMARY:
==13931== definitely lost: 40 bytes in 1 blocks
==13931== indirectly lost: 0 bytes in 0 blocks
==13931== possibly lost: 0 bytes in 0 blocks
==13931== still reachable: 70,779 bytes in 989 blocks
==13931== suppressed: 0 bytes in 0 blocks
==13931== Reachable blocks (those to which a pointer was found) are not shown.
==13931== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==13931==
==13931== For lists of detected and suppressed errors, rerun with: -s
==13931== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
fish: Job 1, 'doas valgrind --leak-check=full…' terminated by signal SIGSEGV (Address boundary error)