author | Jacob Varughese <jacob.varughese@oracle.com> |
Thu, 19 Feb 2015 11:07:16 -0800 | |
changeset 3833 | 2b76e00d94b8 |
parent 1369 | 20813e08fff3 |
permissions | -rw-r--r-- |
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 |