X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fudev%2Fudev-rules.c;h=c571c828773f66a75a17c58ec991a46c2112e6c6;hb=4a010f4e6e95964d7acaa33be768dbdb5e46d72a;hp=22b91c67974cc6004aec3381fa4e4870daa1e2ef;hpb=775f8b3c74e796e1215aa06b8ea4c5d354bc50ee;p=elogind.git diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index 22b91c679..c571c8287 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -31,6 +31,8 @@ #include #include "udev.h" +#include "path-util.h" +#include "conf-files.h" #define PREALLOC_TOKEN 2048 #define PREALLOC_STRBUF 32 * 1024 @@ -743,7 +745,7 @@ static int import_file_into_properties(struct udev_device *dev, const char *file FILE *f; char line[UTIL_LINE_SIZE]; - f = fopen(filename, "r"); + f = fopen(filename, "re"); if (f == NULL) return -1; while (fgets(line, sizeof(line), f) != NULL) @@ -1643,7 +1645,7 @@ static int parse_file(struct udev_rules *rules, const char *filename) } log_debug("read rules file: %s\n", filename); - f = fopen(filename, "r"); + f = fopen(filename, "re"); if (f == NULL) return -1; @@ -1763,7 +1765,7 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names) log_error("failed to build config directory array"); return NULL; } - if (!strv_path_canonicalize(rules->dirs)) { + if (!path_strv_canonicalize(rules->dirs)) { log_error("failed to canonicalize config directories\n"); return NULL; } @@ -1856,6 +1858,9 @@ bool udev_rules_check_timestamp(struct udev_rules *rules) unsigned int i; bool changed = false; + if (rules == NULL) + goto out; + for (i = 0; rules->dirs[i]; i++) { struct stat stats; @@ -1874,7 +1879,7 @@ bool udev_rules_check_timestamp(struct udev_rules *rules) /* update timestamp */ rules->dirs_ts_usec[i] = ts_usec(&stats.st_mtim); } - +out: return changed; } @@ -2317,7 +2322,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event FILE *f; bool imported = false; - f = fopen("/proc/cmdline", "r"); + f = fopen("/proc/cmdline", "re"); if (f != NULL) { char cmdline[4096]; @@ -2602,7 +2607,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event log_debug("ATTR '%s' writing '%s' %s:%u\n", attr, value, &rules->buf[rule->rule.filename_off], rule->rule.filename_line); - f = fopen(attr, "w"); + f = fopen(attr, "we"); if (f != NULL) { if (fprintf(f, "%s", value) <= 0) log_error("error writing ATTR{%s}: %m\n", attr);