components/openscap/patches/smf.c.patch
author Jacob Varughese <jacob.varughese@oracle.com>
Tue, 25 Jun 2013 10:43:56 -0700
changeset 1369 20813e08fff3
parent 1136 226e8d9d2ff0
child 3833 2b76e00d94b8
permissions -rw-r--r--
16186483 Port openscap 0.9.7 to solaris 16371391 system info probe does not provide phys. interface name, mac addr and IP addr 16597173 File probe crashes when encountering file types of door,port 16908303 oscap leaves too many open file descriptors, processing xccdf
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
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
     5
 2013-Jul-12.
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
     6
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
     7
--- openscap-0.9.7/src/OVAL/probes/unix/solaris/smf.c.~1~	2013-04-23 06:21:51.479000001 -0700
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
     8
+++ openscap-0.9.7/src/OVAL/probes/unix/solaris/smf.c	2013-06-18 13:13:20.112012008 -0700
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
     9
@@ -33,9 +33,240 @@
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    10
 #endif
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    11
 
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    12
 #include "probe-api.h"
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    13
+#ifdef HAVE_CONFIG_H
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    14
+#include <config.h>
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    15
+#endif
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    16
+
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    17
+#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
    18
+/*
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    19
+ * smf probe:
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    20
+ *
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    21
+ * fmri
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    22
+ * service_name
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    23
+ * service_state
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    24
+ * protocol
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    25
+ * server_executable
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    26
+ * server_arguements
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    27
+ * exec_as_user
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    28
+ */
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    29
+
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    30
 
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    31
+#include <stdlib.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    32
+#include <string.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    33
+#include <stdio.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    34
+#include <errno.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    35
+#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
    36
+#include <ctype.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    37
+#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
    38
+#include <limits.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    39
+#include <unistd.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.h>
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    41
+#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
    42
+#include "seap.h"
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    43
+#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
    44
+#include "alloc.h"
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    45
+#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
    46
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    47
+#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
    48
+#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
    49
+#endif
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    50
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    51
+/* 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
    52
+struct result_info {
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    53
+	const char *fmri;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    54
+	char *service_name;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    55
+	char *service_state;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    56
+	char *protocol;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    57
+	char *server_executable;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    58
+	char *server_arguments;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    59
+	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
    60
+};
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    61
+
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    62
+
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    63
+static void
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    64
+toUpperCase(char *str)
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    65
+{
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    66
+	int i = 0;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    67
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    68
+	if (str != NULL) {
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    69
+		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
    70
+			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
    71
+			i++;
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
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    76
+static char *
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    77
+strdup_check(char *p)
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    78
+{
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    79
+	char *ret;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    80
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    81
+	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
    82
+		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
    83
+		exit(PROBE_ENOMEM);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    84
+	}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    85
+	return (ret);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    86
+}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    87
+
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    88
+static void
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    89
+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
    90
+    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
    91
+{
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    92
+	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
    93
+	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
    94
+	*val = NULL;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    95
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    96
+	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
    97
+	    prop_name)) == NULL) {
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
    98
+		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
    99
+			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
   100
+			    " %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
   101
+			    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
   102
+		} 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
   103
+			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
   104
+			    " %s does not exist.\n",
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   105
+			    fmri);
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   106
+		}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   107
+	} else {
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   108
+		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
   109
+		    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
   110
+			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
   111
+			    "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
   112
+			    " %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
   113
+			    prop_grp_name,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   114
+			    prop_name,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   115
+			    fmri);
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   116
+		} 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
   117
+			*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
   118
+		}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   119
+		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
   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
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   124
+static void
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   125
+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
   126
+{
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   127
+	SEXP_t *item;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   128
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   129
+	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
   130
+	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
   131
+	    "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
   132
+	    "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
   133
+	    "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
   134
+	    "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
   135
+	    "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
   136
+	    res->server_executable,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   137
+	    "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
   138
+	    res->server_arguments,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   139
+	    "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
   140
+	    NULL);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   141
+	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
   142
+}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   143
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   144
+static int
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   145
+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
   146
+{
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   147
+	struct result_info r;
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   148
+	int rc = 0, type;
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   149
+	const char *service, *instance, *scope, *propgrp, *prop;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   150
+	char *tmp;
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   151
+	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
   152
+	scf_instance_t *inst = NULL;
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   153
+	scf_service_t *svc = NULL;
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   154
+
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   155
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   156
+	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
   157
+	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
   158
+	r.service_name = strdup_check(fmri);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   159
+	tmp = r.service_name;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   160
+	scf_parse_fmri(r.service_name, &type, &scope, &service,
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   161
+	    &instance, &propgrp, &prop);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   162
+	if (scf_error() == SCF_ERROR_INVALID_ARGUMENT) {
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   163
+		rc = PROBE_EINVAL;
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   164
+		goto cleanup;
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   165
+	}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   166
+	if (instance == NULL)
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   167
+		r.service_name = strdup(service);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   168
+	else /* service name is service:instance */
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   169
+		asprintf(&r.service_name, "%s:%s", service, instance);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   170
+	if (r.service_name == NULL)
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   171
+		exit(PROBE_ENOMEM);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   172
+	free(tmp);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   173
+	r.fmri = fmri;
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   174
+	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
   175
+	    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
   176
+	    (svc = scf_service_create(scf_hdl)) == NULL ||
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   177
+	    (instance != NULL &&
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   178
+	    (inst = scf_instance_create(scf_hdl)) == NULL)) {
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   179
+		rc = PROBE_EFATAL;
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   180
+		goto cleanup;
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   181
+	}
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   182
+	/* To check if service exists */
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   183
+	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
   184
+	    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
   185
+	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
   186
+		if (scf_handle_decode_fmri(scf_hdl, fmri, NULL, svc,
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   187
+		    (instance == NULL ? NULL : inst),
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   188
+		    NULL, NULL, SCF_DECODE_FMRI_EXACT) != 0 ||
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   189
+			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
   190
+			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
   191
+			goto cleanup;
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   192
+		}
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   193
+	}
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   194
+	if (r.service_state != NULL &&
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   195
+	    r.service_state[0] != '\0')
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   196
+		toUpperCase(r.service_state);
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   197
+	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
   198
+	    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
   199
+	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
   200
+	    SCF_PROPERTY_USER, &(r.exec_as_user));
1136
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   201
+	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
   202
+	free(r.protocol);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   203
+	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
   204
+	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
   205
+	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
   206
+	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
   207
+cleanup:
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   208
+	free(r.service_name);
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   209
+	scf_service_destroy(svc);
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   210
+	scf_instance_destroy(inst);
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   211
+	if (scf_hdl != NULL)
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   212
+		scf_handle_unbind(scf_hdl);
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   213
+	scf_handle_destroy(scf_hdl);
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   214
+	return (rc);
1136
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
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   217
+int
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   218
+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
   219
+{
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   220
+	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
   221
+	char *fmri_str;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   222
+	int rc;
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   223
+
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   224
+	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
   225
+	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
   226
+		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
   227
+		return (PROBE_ENOVAL);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   228
+	}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   229
+	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
   230
+	if (fmri == NULL) {
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   231
+		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
   232
+		return (PROBE_ENOVAL);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   233
+	}
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   234
+	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
   235
+	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
   236
+	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
   237
+	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
   238
+	free(fmri_str);
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_val);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   240
+	SEXP_free(fmri);
226e8d9d2ff0 16186528 Implement SMF probe to support the OVAL schema for solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
   241
+	return (rc);
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   242
+} 
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   243
+#else
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   244
 
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   245
 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
   246
 {
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   247
         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
   248
 }
1369
20813e08fff3 16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents: 1136
diff changeset
   249
+#endif