]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Exit on config read error to avoid crash on EACCES 1798/head
authorKlemens Nanni <kn@openbsd.org>
Tue, 30 Jan 2024 02:43:44 +0000 (03:43 +0100)
committerKlemens Nanni <kn@openbsd.org>
Tue, 30 Jan 2024 02:57:37 +0000 (03:57 +0100)
Failure to read does not exit despite
`    /* Read the file. If there is an error, report it and exit. */`

EACCES (e.g. insufficient filesystem permissions) is enough to crash
on access through later `config_*()` such as those when either of
either of D-Bus, MPRIS or MQTT is used.

Seen `--with-mpris-interface` and
```
$ ls -l /etc/shairport-sync.conf
-rw-r-----  1 root  _shairport  28114 Jan 25 01:53 /etc/shairport-sync.conf
$ shairport-sync
Segmentation fault (core dumped)
```

shairport.c

index 4ced23928d276e7e335a3edef40dab151a9cee4f..bded416524abae2322631251a09c956cb7327884 100644 (file)
@@ -1207,8 +1207,8 @@ int parse_options(int argc, char **argv) {
 
     } else {
       if (config_error_type(&config_file_stuff) == CONFIG_ERR_FILE_IO)
-        debug(2, "Error reading configuration file \"%s\": \"%s\".",
-              config_error_file(&config_file_stuff), config_error_text(&config_file_stuff));
+        die("Error reading configuration file \"%s\": \"%s\".",
+              config_file_real_path, config_error_text(&config_file_stuff));
       else {
         die("Line %d of the configuration file \"%s\":\n%s", config_error_line(&config_file_stuff),
             config_error_file(&config_file_stuff), config_error_text(&config_file_stuff));