Skip to content

Commit

Permalink
Exit on config read error to avoid crash on EACCES
Browse files Browse the repository at this point in the history
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)
```
  • Loading branch information
klemensn committed Jan 30, 2024
1 parent 7fcfe07 commit ad1fc12
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions shairport.c
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down

0 comments on commit ad1fc12

Please sign in to comment.