components/openscap/patches/smf.c.patch
author Rich Burridge <rich.burridge@oracle.com>
Tue, 13 Oct 2015 18:21:51 -0700
changeset 4945 d9d54aa673b6
parent 3833 2b76e00d94b8
permissions -rw-r--r--
21292090 "gmake test" failures for re2c plus hookup system tests
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
     1
This patch implements the smf probe on solaris, which gathers service_name,
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
     2
service_state, exec_as_user from the smf repository for the fmri that is
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
     3
provided.
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
     4
This patch has not been contributed upstream, but is planned to be done by
3833
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
     5
 2015-Mar-01.
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
     6
--- openscap-1.2.0/src/OVAL/probes/unix/solaris/smf.c.~1~	2013-03-21 08:27:20.051583517 -0700
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
     7
+++ openscap-1.2.0/src/OVAL/probes/unix/solaris/smf.c	2015-02-18 10:06:03.709601923 -0800
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
     8
@@ -33,9 +33,240 @@
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
     9
 #endif
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    10
 
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    11
 #include "probe-api.h"
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    12
+#ifdef HAVE_CONFIG_H
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    13
+#include <config.h>
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    14
+#endif
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    15
+
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    16
+#if	defined(__SVR4) && defined(__sun)
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    17
+/*
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    18
+ * smf probe:
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    19
+ *
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    20
+ * fmri
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    21
+ * service_name
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    22
+ * service_state
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    23
+ * protocol
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    24
+ * server_executable
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    25
+ * server_arguements
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    26
+ * exec_as_user
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    27
+ */
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    28
+
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    29
 
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    30
+#include <stdlib.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    31
+#include <string.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    32
+#include <stdio.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    33
+#include <errno.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    34
+#include <sys/stat.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    35
+#include <ctype.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    36
+#include <sys/types.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    37
+#include <limits.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    38
+#include <unistd.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    39
+#include <libscf.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    40
+#include <libscf_priv.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    41
+#include "seap.h"
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    42
+#include "probe/entcmp.h"
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    43
+#include "alloc.h"
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    44
+#include "common/debug_priv.h"
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    45
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    46
+#ifndef SCF_PG_START
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    47
+#define	SCF_PG_START	"start"
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    48
+#endif
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    49
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    50
+/* Convenience structure for the results being reported */
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    51
+struct result_info {
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    52
+	const char *fmri;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    53
+	char *service_name;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    54
+	char *service_state;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    55
+	char *protocol;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    56
+	char *server_executable;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    57
+	char *server_arguments;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    58
+	char *exec_as_user;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    59
+};
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    60
+
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    61
+
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    62
+static void
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    63
+toUpperCase(char *str)
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    64
+{
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    65
+	int i = 0;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    66
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    67
+	if (str != NULL) {
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    68
+		while (str[i] != '\0') {
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    69
+			str[i] = toupper(str[i]);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    70
+			i++;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    71
+		}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    72
+	}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    73
+}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    74
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    75
+static char *
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    76
+strdup_check(char *p)
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    77
+{
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    78
+	char *ret;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    79
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    80
+	if ((ret = strdup(p)) == NULL) {
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    81
+		oscap_dlprintf(DBG_E, "Error: Out of Memory error.\n");
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    82
+		exit(PROBE_ENOMEM);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    83
+	}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    84
+	return (ret);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    85
+}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    86
+
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    87
+static void
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    88
+get_smf_prop_val(scf_handle_t *h, const char *fmri,
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    89
+    const char *prop_grp_name, const char *prop_name, char **val)
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    90
+{
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    91
+	scf_simple_prop_t *prop;
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    92
+	char *prop_val;
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    93
+	*val = NULL;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    94
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    95
+	if ((prop = scf_simple_prop_get(h, fmri, prop_grp_name,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    96
+	    prop_name)) == NULL) {
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    97
+		if (scf_error() == SCF_ERROR_NOT_FOUND) {
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    98
+			oscap_dlprintf(DBG_E, "Error: Specified service "
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    99
+			    " %s has no %s/%s property.\n",
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   100
+			    fmri, prop_grp_name, prop_name);
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   101
+		} else if (scf_error() == SCF_ERROR_INVALID_ARGUMENT) {
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   102
+			oscap_dlprintf(DBG_E, "Error: Invalid service "
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   103
+			    " %s does not exist.\n",
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   104
+			    fmri);
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   105
+		}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   106
+	} else {
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   107
+		if ((prop_val =
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   108
+		    scf_simple_prop_next_astring(prop)) == NULL) {
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   109
+			oscap_dlprintf(DBG_E,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   110
+			    "Error: Could not read "
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   111
+			    " %s/%s property of %s.\n",
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   112
+			    prop_grp_name,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   113
+			    prop_name,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   114
+			    fmri);
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   115
+		} else if (prop_val[0] != '\0') {
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   116
+			*val = strdup_check(prop_val);
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   117
+		}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   118
+		scf_simple_prop_free(prop);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   119
+	}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   120
+}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   121
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   122
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   123
+static void
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   124
+report_finding(struct result_info *res, probe_ctx *ctx)
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   125
+{
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   126
+	SEXP_t *item;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   127
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   128
+	oscap_dlprintf(DBG_I, "In report_finding.\n");
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   129
+	item = probe_item_create(OVAL_SOLARIS_SMF, NULL,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   130
+	    "fmri", OVAL_DATATYPE_STRING, res->fmri,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   131
+	    "service_name", OVAL_DATATYPE_STRING, res->service_name,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   132
+	    "service_state", OVAL_DATATYPE_STRING, res->service_state,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   133
+	    "protocol", OVAL_DATATYPE_STRING, res->protocol,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   134
+	    "server_executable", OVAL_DATATYPE_STRING,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   135
+	    res->server_executable,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   136
+	    "server_arguments", OVAL_DATATYPE_STRING,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   137
+	    res->server_arguments,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   138
+	    "exec_as_user", OVAL_DATATYPE_STRING, res->exec_as_user,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   139
+	    NULL);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   140
+	probe_item_collect(ctx, item);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   141
+}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   142
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   143
+static int
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   144
+collect_smf_info(char *fmri, probe_ctx *ctx)
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   145
+{
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   146
+	struct result_info r;
3833
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   147
+	int rc = 0;
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   148
+	char *tmp;
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   149
+	scf_handle_t *scf_hdl = NULL;
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   150
+	scf_instance_t *inst = NULL;
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   151
+	scf_service_t *svc = NULL;
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   152
+
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   153
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   154
+	oscap_dlprintf(DBG_I, "In collect_smf_info.\n");
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   155
+	memset(&r, 0, sizeof (r));
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   156
+	r.fmri = fmri;
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   157
+	if ((scf_hdl = scf_handle_create(SCF_VERSION)) == NULL ||
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   158
+	    scf_handle_bind(scf_hdl) != 0 ||
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   159
+	    (svc = scf_service_create(scf_hdl)) == NULL ||
3833
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   160
+	    (inst = scf_instance_create(scf_hdl)) == NULL) {
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   161
+		rc = PROBE_EFATAL;
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   162
+		goto cleanup;
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   163
+	}
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   164
+	/* To check if service exists */
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   165
+	get_smf_prop_val(scf_hdl, r.fmri, SCF_PG_RESTARTER,
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   166
+	    SCF_PROPERTY_STATE, &(r.service_state));
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   167
+	if (scf_error() == SCF_ERROR_NOT_FOUND) {
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   168
+		if (scf_handle_decode_fmri(scf_hdl, fmri, NULL, svc,
3833
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   169
+		    inst, NULL, NULL, SCF_DECODE_FMRI_EXACT) != 0 || 
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   170
+		    scf_error() == SCF_ERROR_NOT_FOUND) {
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   171
+			oscap_dlprintf(DBG_I,"decode_fmri failed.\n");
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   172
+			goto cleanup;
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   173
+		}
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   174
+	}
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   175
+	if (r.service_state != NULL &&
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   176
+	    r.service_state[0] != '\0')
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   177
+		toUpperCase(r.service_state);
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   178
+	get_smf_prop_val(scf_hdl, r.fmri, SCF_PG_START,
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   179
+	    SCF_PROPERTY_EXEC, &(r.server_executable));
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   180
+	get_smf_prop_val(scf_hdl, r.fmri, SCF_PG_START,
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   181
+	    SCF_PROPERTY_USER, &(r.exec_as_user));
3833
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   182
+	/*
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   183
+	 * At this point the fmri we have is valid because
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   184
+	 * we were able to locate it and get info on the
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   185
+	 * above listed properties. Now trying to parse
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   186
+	 * the fmri to only get the service:instance name.
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   187
+	 * So skipping the scope and service prefix. If we
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   188
+	 * did not find the scope and service prefix, we
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   189
+	 * return the full fmri that was passed in.
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   190
+	 */
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   191
+	if ((tmp = strstr(fmri, SCF_FMRI_SCOPE_PREFIX)) != NULL) 
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   192
+		tmp += sizeof(SCF_FMRI_SCOPE_PREFIX) - 1;
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   193
+	else
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   194
+		tmp = fmri;
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   195
+	if ((tmp = strstr(tmp, SCF_FMRI_SERVICE_PREFIX)) != NULL)
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   196
+		tmp += sizeof(SCF_FMRI_SERVICE_PREFIX) - 1;
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   197
+	else
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   198
+		tmp = fmri;
2b76e00d94b8 20524603 openscap doesn't build on s12-67
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1369
diff changeset
   199
+	asprintf(&r.service_name, "%s", tmp);
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   200
+	report_finding(&r, ctx);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   201
+	free(r.protocol);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   202
+	free(r.service_state);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   203
+	free(r.server_executable);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   204
+	free(r.server_arguments);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   205
+	free(r.exec_as_user);
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   206
+cleanup:
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   207
+	free(r.service_name);
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   208
+	scf_service_destroy(svc);
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   209
+	scf_instance_destroy(inst);
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   210
+	if (scf_hdl != NULL)
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   211
+		scf_handle_unbind(scf_hdl);
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   212
+	scf_handle_destroy(scf_hdl);
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   213
+	return (rc);
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   214
+}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   215
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   216
+int
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   217
+probe_main(probe_ctx *ctx, void *arg)
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   218
+{
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   219
+	SEXP_t *fmri, *fmri_val, *probe_in;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   220
+	char *fmri_str;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   221
+	int rc;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   222
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   223
+	probe_in = probe_ctx_getobject(ctx);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   224
+	if (probe_in == NULL) {
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   225
+		oscap_dlprintf(DBG_E, "No object in context.\n");
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   226
+		return (PROBE_ENOVAL);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   227
+	}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   228
+	fmri = probe_obj_getent(probe_in, "fmri", 1);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   229
+	if (fmri == NULL) {
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   230
+		oscap_dlprintf(DBG_E, "No fmri in context.\n");
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   231
+		return (PROBE_ENOVAL);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   232
+	}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   233
+	fmri_val = probe_ent_getval(fmri);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   234
+	fmri_str = SEXP_string_cstr(fmri_val);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   235
+	oscap_dlprintf(DBG_I, "fmri in context: %s.\n", fmri_str);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   236
+	rc = collect_smf_info(fmri_str, ctx);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   237
+	free(fmri_str);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   238
+	SEXP_free(fmri_val);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   239
+	SEXP_free(fmri);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   240
+	return (rc);
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   241
+} 
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   242
+#else
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   243
 
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   244
 int probe_main(probe_ctx *ctx, void *probe_arg)
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   245
 {
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   246
         return(PROBE_EOPNOTSUPP);
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   247
 }
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   248
+#endif