diff options
author | Peter Kjellerstedt <pkj@axis.com> | 2013-05-29 11:47:17 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-05-30 20:59:12 +0100 |
commit | 6804eec62515c57df81a385f84573982d27b22be (patch) | |
tree | bc7ca7c4fbad671bf05669b9604b4a213558054f /meta/recipes-devtools | |
parent | 4128b217c6760c371115c1dcc16cb7c5135f784a (diff) | |
download | poky-6804eec62515c57df81a385f84573982d27b22be.tar.gz |
makedevs: Create blocks of devices with the correct uid/gid
When creating a block of devices (i.e., when count > 0), the wrong
path was used with the call to chown(), effectively trying to change
the owner of some (probably) non-existent file. Thus the created
device nodes were always owned by root.
(From OE-Core rev: e7796880164d6a37c2699a94e1c5391337c5eaa5)
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools')
-rw-r--r-- | meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c b/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c index c7ad722f2e..247d6c1c3c 100644 --- a/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c +++ b/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c | |||
@@ -130,7 +130,7 @@ static void add_new_device(char *name, char *path, unsigned long uid, | |||
130 | timestamp = sb.st_mtime; | 130 | timestamp = sb.st_mtime; |
131 | } | 131 | } |
132 | 132 | ||
133 | mknod(name, mode, rdev); | 133 | mknod(path, mode, rdev); |
134 | chown(path, uid, gid); | 134 | chown(path, uid, gid); |
135 | // printf("Device: %s %s UID: %ld GID: %ld MODE: %ld MAJOR: %d MINOR: %d\n", | 135 | // printf("Device: %s %s UID: %ld GID: %ld MODE: %ld MAJOR: %d MINOR: %d\n", |
136 | // path, name, uid, gid, mode, (short)(rdev >> 8), (short)(rdev & 0xff)); | 136 | // path, name, uid, gid, mode, (short)(rdev >> 8), (short)(rdev & 0xff)); |
@@ -198,7 +198,7 @@ static int interpret_table_entry(char *line) | |||
198 | error_msg_and_die("Device table entries require absolute paths"); | 198 | error_msg_and_die("Device table entries require absolute paths"); |
199 | } | 199 | } |
200 | name = xstrdup(path + 1); | 200 | name = xstrdup(path + 1); |
201 | sprintf(path, "%s/%s\0", rootdir, name); | 201 | sprintf(path, "%s/%s", rootdir, name); |
202 | 202 | ||
203 | switch (type) { | 203 | switch (type) { |
204 | case 'd': | 204 | case 'd': |
@@ -223,6 +223,7 @@ static int interpret_table_entry(char *line) | |||
223 | 223 | ||
224 | for (i = start; i < count; i++) { | 224 | for (i = start; i < count; i++) { |
225 | sprintf(buf, "%s%d", name, i); | 225 | sprintf(buf, "%s%d", name, i); |
226 | sprintf(path, "%s/%s%d", rootdir, name, i); | ||
226 | /* FIXME: MKDEV uses illicit insider knowledge of kernel | 227 | /* FIXME: MKDEV uses illicit insider knowledge of kernel |
227 | * major/minor representation... */ | 228 | * major/minor representation... */ |
228 | rdev = MKDEV(major, minor + (i * increment - start)); | 229 | rdev = MKDEV(major, minor + (i * increment - start)); |