base-files: improve default root-passwd script
authorJohn Crispin <john@phrozen.org>
Tue, 12 Nov 2024 06:49:22 +0000 (07:49 +0100)
committerJohn Crispin <john@phrozen.org>
Wed, 13 Nov 2024 06:54:40 +0000 (07:54 +0100)
The script was not exiting cleanly causing it to not be removed from the
uci-defaults folder.

Signed-off-by: John Crispin <john@phrozen.org>
package/base-files/files/etc/uci-defaults/50-root-passwd

index 9eddf1559baf33b49bc73299ffd1f1e0f876e242..f0bb519aece4f488c8c24310ede6d9ec338f8617 100644 (file)
@@ -3,10 +3,16 @@
 json_init
 json_load "$(cat /etc/board.json)"
 
-json_select credentials
-       json_get_vars root_password_hash root_password_hash
-       [ -z "$root_password_hash" ] || sed -i "s|^root:[^:]*|root:$root_password_hash|g" /etc/shadow
+if json_is_a credentials object; then
+       json_select credentials
+               json_get_vars root_password_hash root_password_hash
+               if [ -n "$root_password_hash" ]; then
+                       sed -i "s|^root:[^:]*|root:$root_password_hash|g" /etc/shadow
+               fi
 
-       json_get_vars root_password_plain root_password_plain
-       [ -z "$root_password_plain" ] || { (echo "$root_password_plain"; sleep 1; echo "$root_password_plain") | passwd root }
-json_select ..
+               json_get_vars root_password_plain root_password_plain
+               if [ -n "$root_password_plain" ]; then
+                       (echo "$root_password_plain"; sleep 1; echo "$root_password_plain") | passwd root
+               fi
+       json_select ..
+fi