]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
makedevs: Fix matching uid/gid
authorJaeyoon Jung <jaeyoon.jung@lge.com>
Mon, 26 Aug 2024 16:41:34 +0000 (01:41 +0900)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 27 Aug 2024 10:57:20 +0000 (11:57 +0100)
Correct the length to compare in convert2guid() to fix an issue where it
ends up with returning a wrong id that matches partially. Also fix the
length of usr_buf and grp_buf in interpret_table_entry() which are used
as arguments of convert2guid().

Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/makedevs/makedevs/makedevs.c

index 2254b548918f7fcfbad82dee5752d25668515b19..411a66915343cbfb43bf64672d2e89db081e15c9 100644 (file)
@@ -202,7 +202,7 @@ static unsigned long convert2guid(char *id_buf, struct name_id *search_list)
                // Check for bad user/group name
                node = search_list;
                while (node != NULL) {
-                       if (!strncmp(node->name, id_buf, strlen(id_buf))) {
+                       if (!strncmp(node->name, id_buf, MAX_ID_LEN)) {
                                fprintf(stderr, "WARNING: Bad user/group name %s detected\n", id_buf);
                                break;
                        }
@@ -212,7 +212,7 @@ static unsigned long convert2guid(char *id_buf, struct name_id *search_list)
        } else {
                node = search_list;
                while (node != NULL) {
-                       if (!strncmp(node->name, id_buf, strlen(id_buf)))
+                       if (!strncmp(node->name, id_buf, MAX_ID_LEN))
                                return node->id;
                        node = node->next;
                }
@@ -362,13 +362,13 @@ static void add_new_fifo(char *name, char *path, unsigned long uid,
 static int interpret_table_entry(char *line)
 {
        char *name;
-       char usr_buf[MAX_ID_LEN];
-       char grp_buf[MAX_ID_LEN];
-       char path[4096], type;
+       char usr_buf[MAX_ID_LEN+1];
+       char grp_buf[MAX_ID_LEN+1];
+       char path[PATH_MAX], type;
        unsigned long mode = 0755, uid = 0, gid = 0, major = 0, minor = 0;
        unsigned long start = 0, increment = 1, count = 0;
 
-       if (0 > sscanf(line, "%4095s %c %lo %39s %39s %lu %lu %lu %lu %lu", path,
+       if (0 > sscanf(line, "%4095s %c %lo %40s %40s %lu %lu %lu %lu %lu", path,
                    &type, &mode, usr_buf, grp_buf, &major, &minor, &start,
                    &increment, &count))
        {