When the header= option comes before any other type= defining one, we
trip over an assertion:
Jun 04 15:45:33 H testsuite-24.sh[752]: + systemctl start systemd-cryptsetup@detached.service
Jun 04 15:45:33 H systemd[1]: Starting systemd-cryptsetup@detached.service...
Jun 04 15:45:33 H systemd-cryptsetup[4641]: Assertion 'name' failed at src/basic/strv.c:21, function strv_find(). Aborting.
...
Jun 04 15:45:33 H systemd-coredump[4643]: Process 4641 (systemd-cryptse) of user 0 dumped core.
...
Stack trace of thread 4641:
#0 0x00007ff9256afe5c __pthread_kill_implementation (libc.so.6 + 0x8ce5c)
#1 0x00007ff92565fa76 raise (libc.so.6 + 0x3ca76)
#2 0x00007ff9256497fc abort (libc.so.6 + 0x267fc)
#3 0x00007ff926076047 log_assert_failed (libsystemd-shared-253.so + 0x276047)
#4 0x00007ff9260ab317 strv_find (libsystemd-shared-253.so + 0x2ab317)
#5 0x0000000000405927 parse_one_option (systemd-cryptsetup + 0x5927)
#6 0x0000000000407793 parse_options (systemd-cryptsetup + 0x7793)
#7 0x000000000040fa0c run (systemd-cryptsetup + 0xfa0c)
#8 0x000000000041137f main (systemd-cryptsetup + 0x1137f)
#9 0x00007ff92564a510 __libc_start_call_main (libc.so.6 + 0x27510)
#10 0x00007ff92564a5c9 __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x275c9)
#11 0x0000000000403915 _start (systemd-cryptsetup + 0x3915)
ELF object binary architecture: AMD x86-64
return log_oom();
} else if ((val = startswith(option, "header="))) {
- if (!STR_IN_SET(arg_type, ANY_LUKS, CRYPT_LUKS1, CRYPT_LUKS2, CRYPT_TCRYPT))
+ if (!arg_type || !STR_IN_SET(arg_type, ANY_LUKS, CRYPT_LUKS1, CRYPT_LUKS2, CRYPT_TCRYPT))
arg_type = ANY_LUKS;
if (!path_is_absolute(val))