X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fudev%2Fudev-rules.c;h=55185920fa054ad7695797d718633558c33b04d9;hp=cc562156fa693f693983cbdc01f9932619030512;hb=a56ba6158b9649e01226dfaf3ff7082c82571090;hpb=39d8db043b599a7382f94bfc904d5e108af438bd diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index cc562156f..55185920f 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -459,6 +459,7 @@ static uid_t add_uid(struct udev_rules *rules, const char *owner) { unsigned int i; uid_t uid; unsigned int off; + int r; /* lookup, if we know it already */ for (i = 0; i < rules->uids_cur; i++) { @@ -468,7 +469,9 @@ static uid_t add_uid(struct udev_rules *rules, const char *owner) { return uid; } } - uid = util_lookup_user(rules->udev, owner); + r = get_user_creds(&owner, &uid, NULL, NULL, NULL); + if (r < 0) + uid = 0; /* grow buffer if needed */ if (rules->uids_cur+1 >= rules->uids_max) { @@ -499,6 +502,7 @@ static gid_t add_gid(struct udev_rules *rules, const char *group) { unsigned int i; gid_t gid; unsigned int off; + int r; /* lookup, if we know it already */ for (i = 0; i < rules->gids_cur; i++) { @@ -508,7 +512,9 @@ static gid_t add_gid(struct udev_rules *rules, const char *group) { return gid; } } - gid = util_lookup_group(rules->udev, group); + r = get_group_creds(&group, &gid); + if (r < 0) + gid = 0; /* grow buffer if needed */ if (rules->gids_cur+1 >= rules->gids_max) { @@ -2170,6 +2176,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, break; case TK_A_OWNER: { char owner[UTIL_NAME_SIZE]; + int r; if (event->owner_final) break; @@ -2177,7 +2184,9 @@ int udev_rules_apply_to_event(struct udev_rules *rules, event->owner_final = true; udev_event_apply_format(event, rules_str(rules, cur->key.value_off), owner, sizeof(owner)); event->owner_set = true; - event->uid = util_lookup_user(event->udev, owner); + r = get_user_creds(&owner, &event->uid, NULL, NULL, NULL); + if (r < 0) + event->uid = 0; log_debug("OWNER %u %s:%u", event->uid, rules_str(rules, rule->rule.filename_off), @@ -2186,6 +2195,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, } case TK_A_GROUP: { char group[UTIL_NAME_SIZE]; + int r; if (event->group_final) break; @@ -2193,7 +2203,9 @@ int udev_rules_apply_to_event(struct udev_rules *rules, event->group_final = true; udev_event_apply_format(event, rules_str(rules, cur->key.value_off), group, sizeof(group)); event->group_set = true; - event->gid = util_lookup_group(event->udev, group); + r = get_group_creds(&group, &event->gid); + if (r < 0) + event->gid = 0; log_debug("GROUP %u %s:%u", event->gid, rules_str(rules, rule->rule.filename_off),