summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--namedev.c20
-rw-r--r--udev.h2
-rw-r--r--udev_config.c4
3 files changed, 24 insertions, 2 deletions
diff --git a/namedev.c b/namedev.c
index 137446e255..e39207e6a7 100644
--- a/namedev.c
+++ b/namedev.c
@@ -151,6 +151,22 @@ static mode_t get_default_mode(struct sysfs_class_device *class_dev)
return mode;
}
+static char * get_default_owner(void)
+{
+ if (strlen(default_owner_str) == 0) {
+ strncpy(default_owner_str, "root", OWNER_SIZE);
+ }
+ return default_owner_str;
+}
+
+static char * get_default_group(void)
+{
+ if (strlen(default_group_str) == 0) {
+ strncpy(default_group_str, "root", GROUP_SIZE);
+ }
+ return default_group_str;
+}
+
static void apply_format(struct udevice *udev, unsigned char *string)
{
char temp[NAME_SIZE];
@@ -720,8 +736,8 @@ done:
} else {
/* no matching perms found :( */
udev->mode = get_default_mode(class_dev);
- udev->owner[0] = 0x00;
- udev->group[0] = 0x00;
+ strncpy(udev->owner, get_default_owner(), OWNER_SIZE);
+ strncpy(udev->group, get_default_group(), GROUP_SIZE);
}
dbg("name, '%s' is going to have owner='%s', group='%s', mode = %#o",
udev->name, udev->owner, udev->group, udev->mode);
diff --git a/udev.h b/udev.h
index 90aa823939..963f8d2516 100644
--- a/udev.h
+++ b/udev.h
@@ -68,5 +68,7 @@ extern char udev_permissions_filename[PATH_MAX+NAME_MAX];
extern char udev_config_filename[PATH_MAX+NAME_MAX];
extern char udev_rules_filename[PATH_MAX+NAME_MAX];
extern char default_mode_str[NAME_MAX];
+extern char default_owner_str[OWNER_SIZE];
+extern char default_group_str[GROUP_SIZE];
#endif
diff --git a/udev_config.c b/udev_config.c
index 44b5767b85..d262f2af07 100644
--- a/udev_config.c
+++ b/udev_config.c
@@ -46,6 +46,8 @@ char udev_permissions_filename[PATH_MAX+NAME_MAX];
char udev_rules_filename[PATH_MAX+NAME_MAX];
char udev_config_filename[PATH_MAX+NAME_MAX];
char default_mode_str[NAME_MAX];
+char default_owner_str[OWNER_SIZE];
+char default_group_str[GROUP_SIZE];
static void init_variables(void)
@@ -117,6 +119,8 @@ static int parse_config_file(void)
set_var("udev_rules", udev_rules_filename);
set_var("udev_permissions", udev_permissions_filename);
set_var("default_mode", default_mode_str);
+ set_var("default_owner", default_owner_str);
+ set_var("default_group", default_group_str);
}
dbg_parse("%s:%d:%Zd: error parsing '%s'", udev_config_filename,
lineno, temp - line, temp);