From 6597def23947bb89d5939d0973eee2636d716d13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Ferr=C3=A3o?= <2031761+viniciusferrao@users.noreply.github.com> Date: Sat, 22 Aug 2026 01:28:11 -0300 Subject: [PATCH] fix(genesis): harden package install hooks --- genesis-openembedded/package | 4 +++- genesis-openembedded/rpm/xCAT-genesis-base.spec | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/genesis-openembedded/package b/genesis-openembedded/package index 2f22736..f0cebd5 100755 --- a/genesis-openembedded/package +++ b/genesis-openembedded/package @@ -179,8 +179,10 @@ sub _build_deb { . "if [ \"\${1:-}\" = configure ]; then\n" . " mkdir -p /etc/xcat\n" . " touch /etc/xcat/genesis-base-updated\n" + . " root_stat=\$(stat -c '%i %d' / 2>/dev/null || :)\n" + . " init_stat=\$(stat -c '%i %d' /proc/1/root/. 2>/dev/null || :)\n" . " if [ -x /opt/xcat/sbin/mknb ] && [ -r /proc/cmdline ] && \\\n" - . " [ \"\$(stat -c '%i %d' / 2>/dev/null)\" = \"\$(stat -c '%i %d' /proc/1/root/. 2>/dev/null)\" ]; then\n" + . " [ -n \"\$root_stat\" ] && [ \"\$root_stat\" = \"\$init_stat\" ]; then\n" . " if /opt/xcat/sbin/mknb '$architecture'; then\n" . " rm -f /etc/xcat/genesis-base-updated\n" . " else\n" diff --git a/genesis-openembedded/rpm/xCAT-genesis-base.spec b/genesis-openembedded/rpm/xCAT-genesis-base.spec index 12db225..e2db891 100644 --- a/genesis-openembedded/rpm/xCAT-genesis-base.spec +++ b/genesis-openembedded/rpm/xCAT-genesis-base.spec @@ -30,8 +30,10 @@ install -m 0644 xcat-core-revision %{buildroot}%{_docdir}/%{name}/ %post mkdir -p /etc/xcat touch /etc/xcat/genesis-base-updated +root_stat=$(stat -c '%%i %%d' / 2>/dev/null || :) +init_stat=$(stat -c '%%i %%d' /proc/1/root/. 2>/dev/null || :) if [ -x /opt/xcat/sbin/mknb ] && [ -r /proc/cmdline ] && \ - [ "$(stat -c '%%i %%d' / 2>/dev/null)" = "$(stat -c '%%i %%d' /proc/1/root/. 2>/dev/null)" ]; then + [ -n "$root_stat" ] && [ "$root_stat" = "$init_stat" ]; then if /opt/xcat/sbin/mknb %{genesis_arch}; then rm -f /etc/xcat/genesis-base-updated else