From 2a959d7b03ed7fcfc1f4723dac710ec7b207d6cb Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Tue, 12 Nov 2024 07:49:22 +0100
Subject: [PATCH] base-files: improve default root-passwd script

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>
---
 .../files/etc/uci-defaults/50-root-passwd      | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/package/base-files/files/etc/uci-defaults/50-root-passwd b/package/base-files/files/etc/uci-defaults/50-root-passwd
index 9eddf1559ba..f0bb519aece 100644
--- a/package/base-files/files/etc/uci-defaults/50-root-passwd
+++ b/package/base-files/files/etc/uci-defaults/50-root-passwd
@@ -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
-- 
GitLab