]> code.ossystems Code Review - openembedded-core.git/commitdiff
useradd_base.bbclass: Make perform_groupmems handle overlapping usernames
authorPeter Kjellerstedt <peter.kjellerstedt@axis.com>
Mon, 15 Oct 2018 20:25:44 +0000 (22:25 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 15 Oct 2018 22:19:37 +0000 (23:19 +0100)
If the name of the last user being part of the group had a name that
was a prefix of the user being added, then perform_groupmems() would
treat it as if the user already existed in the list of users and not
add it.

Reported-by: Peter Henricsson <peter.henricsson@axis.com>
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/useradd_base.bbclass

index 551c82c32285e0d5ad07be6dbe99c3595c6ccb86..0d0bdb80f5bc81f61f881abc7dc05281d82249b5 100644 (file)
@@ -51,10 +51,10 @@ perform_groupmems () {
        local groupname=`echo "$opts" | awk '{ for (i = 1; i < NF; i++) if ($i == "-g" || $i == "--group") print $(i+1) }'`
        local username=`echo "$opts" | awk '{ for (i = 1; i < NF; i++) if ($i == "-a" || $i == "--add") print $(i+1) }'`
        bbnote "${PN}: Running groupmems command with group $groupname and user $username"
-       local mem_exists="`grep "^$groupname:[^:]*:[^:]*:\([^,]*,\)*$username\(,[^,]*\)*" $rootdir/etc/group || true`"
+       local mem_exists="`grep "^$groupname:[^:]*:[^:]*:\([^,]*,\)*$username\(,[^,]*\)*$" $rootdir/etc/group || true`"
        if test "x$mem_exists" = "x"; then
                eval flock -x $rootdir${sysconfdir} -c \"$PSEUDO groupmems \$opts\" || true
-               mem_exists="`grep "^$groupname:[^:]*:[^:]*:\([^,]*,\)*$username\(,[^,]*\)*" $rootdir/etc/group || true`"
+               mem_exists="`grep "^$groupname:[^:]*:[^:]*:\([^,]*,\)*$username\(,[^,]*\)*$" $rootdir/etc/group || true`"
                if test "x$mem_exists" = "x"; then
                        bbfatal "${PN}: groupmems command did not succeed."
                fi