aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--miscutils/makedevs.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/miscutils/makedevs.c b/miscutils/makedevs.c
index 9e7ca340f..fec1045e4 100644
--- a/miscutils/makedevs.c
+++ b/miscutils/makedevs.c
@@ -208,17 +208,17 @@ int makedevs_main(int argc UNUSED_PARAM, char **argv)
208 unsigned count = 0; 208 unsigned count = 0;
209 unsigned increment = 0; 209 unsigned increment = 0;
210 unsigned start = 0; 210 unsigned start = 0;
211 char name[41];
212 char user[41]; 211 char user[41];
213 char group[41]; 212 char group[41];
214 char *full_name = name; 213 char *full_name;
214 int name_len;
215 uid_t uid; 215 uid_t uid;
216 gid_t gid; 216 gid_t gid;
217 217
218 linenum = parser->lineno; 218 linenum = parser->lineno;
219 219
220 if ((2 > sscanf(line, "%40s %c %o %40s %40s %u %u %u %u %u", 220 if ((1 > sscanf(line, "%*s%n %c %o %40s %40s %u %u %u %u %u",
221 name, &type, &mode, user, group, 221 &name_len, &type, &mode, user, group,
222 &major, &minor, &start, &increment, &count)) 222 &major, &minor, &start, &increment, &count))
223 || ((unsigned)(major | minor | start | count | increment) > 255) 223 || ((unsigned)(major | minor | start | count | increment) > 255)
224 ) { 224 ) {
@@ -229,9 +229,11 @@ int makedevs_main(int argc UNUSED_PARAM, char **argv)
229 229
230 gid = (*group) ? get_ug_id(group, xgroup2gid) : getgid(); 230 gid = (*group) ? get_ug_id(group, xgroup2gid) : getgid();
231 uid = (*user) ? get_ug_id(user, xuname2uid) : getuid(); 231 uid = (*user) ? get_ug_id(user, xuname2uid) : getuid();
232 line[name_len] = '\0';
233 full_name = line;
232 /* We are already in the right root dir, 234 /* We are already in the right root dir,
233 * so make absolute paths relative */ 235 * so make absolute paths relative */
234 if ('/' == *full_name) 236 if ('/' == full_name[0])
235 full_name++; 237 full_name++;
236 238
237 if (type == 'd') { 239 if (type == 'd') {