base-files: fix merge of passwd/shadow/group lines with trailing colons
authorMatthias Schiffer <mschiffer@universe-factory.net>
Thu, 29 Aug 2024 18:24:02 +0000 (20:24 +0200)
committerRISCi_ATOM <bob@bobcall.me>
Tue, 3 Sep 2024 15:49:22 +0000 (11:49 -0400)
Empty trailing fields get lost when the lines are split and merged again
at colons, resulting in unparsable entries. Only use the split fields for
matching against the other file, but emit the original line unchanged
to fix the issue.

Fixes: de7ca7dafadf ("base-files: merge /etc/passwd et al at sysupgrade config restore")
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
(cherry picked from commit 9bbaa6f2c0419739fb85d48d0f527cb1622946ee)

package/base-files/files/lib/preinit/80_mount_root

index c3816c2cbfe11a1f4e2091f4e7ef5c6791f7d308..ccfc481285f3b3fe00d573219832bf1dd0810900 100644 (file)
@@ -9,7 +9,7 @@ missing_lines() {
        IFS=":"
        while read line; do
                set -- $line
-               grep -q "^$1:" "$file2" || echo "$*"
+               grep -q "^$1:" "$file2" || echo "$line"
        done < "$file1"
        IFS="$oIFS"
 }