From 0189a3b4a3dd7df47637f0a974c291a93c8d2a16 Mon Sep 17 00:00:00 2001 From: Julian Brost Date: Wed, 14 Jan 2026 14:10:11 +0100 Subject: [PATCH] Add error handling for icacls calls --- icinga-installer/icinga-installer.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/icinga-installer/icinga-installer.cpp b/icinga-installer/icinga-installer.cpp index 8a87c7a3f..2095627ed 100644 --- a/icinga-installer/icinga-installer.cpp +++ b/icinga-installer/icinga-installer.cpp @@ -270,9 +270,15 @@ static int InstallIcinga(void) // TODO: In Icinga 2.14, rename features-available/mainlog.conf to mainlog.conf.deprecated // so that it's no longer listed as an available feature. - ExecuteCommand("icacls", "\"" + dataDir + "\" /grant *S-1-5-20:(oi)(ci)m"); - ExecuteCommand("icacls", "\"" + dataDir + "\\etc\" /inheritance:r /grant:r *S-1-5-20:(oi)(ci)m *S-1-5-32-544:(oi)(ci)f"); - ExecuteCommand("icacls", "\"" + dataDir + "\\var\" /inheritance:r /grant:r *S-1-5-20:(oi)(ci)m *S-1-5-32-544:(oi)(ci)f"); + if (!ExecuteCommand("icacls", "\"" + dataDir + "\" /grant *S-1-5-20:(oi)(ci)m")){ + throw std::runtime_error("failed to set ACLs for " + dataDir); + } + if (!ExecuteCommand("icacls", "\"" + dataDir + "\\etc\" /inheritance:r /grant:r *S-1-5-20:(oi)(ci)m *S-1-5-32-544:(oi)(ci)f")) { + throw std::runtime_error("failed to set ACLs for " + dataDir + "\\etc"); + } + if (!ExecuteCommand("icacls", "\"" + dataDir + "\\var\" /inheritance:r /grant:r *S-1-5-20:(oi)(ci)m *S-1-5-32-544:(oi)(ci)f")) { + throw std::runtime_error("failed to set ACLs for " + dataDir + "\\var"); + } ExecuteIcingaCommand("--scm-install daemon");