diff --git a/lib/Core/SmfDisabled.pm b/lib/Core/SmfDisabled.pm
index 7594c81dc419b82533eb497f2641113b5963ae2d..145878dc2660676b8775ab4adf25f509f90af79e 100644
--- a/lib/Core/SmfDisabled.pm
+++ b/lib/Core/SmfDisabled.pm
@@ -79,6 +79,12 @@ sub handler {
     };
     my $svcs_output = run_command("$svcs_path -a");
     my @lines = grep { $_ ne '' } split /\n/, $svcs_output;
+
+    # svcs/smf is broken
+    if ($? && ! @lines) {
+        return {};
+    }
+
     for my $line (@lines) {
         my ($state, $start, $name) = split /\s+/, $line, 3;
         if ($name =~ $pattern) {
diff --git a/lib/Core/SmfMaintenance.pm b/lib/Core/SmfMaintenance.pm
index d2af6cbc03a279eb66847de00274daa2ed85c58b..e2c6f2e62aae5205d44d2f3631c7c52e3865fd50 100644
--- a/lib/Core/SmfMaintenance.pm
+++ b/lib/Core/SmfMaintenance.pm
@@ -71,6 +71,10 @@ sub handler {
     my @maintenance_services = map((split(/\s+/, $_))[2],
         grep(/^maintenance/, split(/\n/, $output)));
 
+    # svcs/smf is broken
+    if ($? && ! @maintenance_services) {
+        return {};
+    }
 
     return {
         "count" => [scalar(@maintenance_services), "i"],