X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fbinfmt.c;h=552d8cc227ec5131c1071573560197782e1b6181;hp=619f6e4aa781b37c1e36d4c6c4489dc68b2865f9;hb=4dc380d16dfbead78de9caaf5104dbc00bac6d75;hpb=db1413d7380acacc4e50faf801ca0d401da89764 diff --git a/src/binfmt.c b/src/binfmt.c index 619f6e4aa..552d8cc22 100644 --- a/src/binfmt.c +++ b/src/binfmt.c @@ -127,6 +127,8 @@ int main(int argc, char *argv[]) { log_parse_environment(); log_open(); + umask(0022); + if (argc > 1) { r = apply_file(argv[1], false); } else { @@ -135,11 +137,17 @@ int main(int argc, char *argv[]) { /* Flush out all rules */ write_one_line_file("/proc/sys/fs/binfmt_misc/status", "-1"); - files = conf_files_list(".conf", - "/run/binfmt.d", - "/etc/binfmt.d", - "/usr/lib/binfmt.d", - NULL); + r = conf_files_list(&files, ".conf", + "/run/binfmt.d", + "/etc/binfmt.d", + "/usr/local/lib/binfmt.d", + "/usr/lib/binfmt.d", + NULL); + + if (r < 0) { + log_error("Failed to enumerate binfmt.d files: %s", strerror(-r)); + goto finish; + } STRV_FOREACH(f, files) { int k; @@ -151,5 +159,6 @@ int main(int argc, char *argv[]) { strv_free(files); } +finish: return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; }