author | Rich Burridge <rich.burridge@oracle.com> |
Wed, 05 Aug 2015 02:55:12 -0700 | |
changeset 4739 | fe9f7b631d54 |
parent 2016 | 50e1c2ae28b8 |
permissions | -rw-r--r-- |
2016
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
1 |
This patch fixes an issue with file probe on solaris. The file probe currently |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
2 |
is not zone aware and so descends into non-global zones from the global-zone. |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
3 |
Fix prevents file probe traversal into non-global zones from the global zone, |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
4 |
when local is specified for recursion. |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
5 |
|
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
6 |
This patch has not been contributed upstream, but is planned to be done by |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
7 |
2014-Aug-15. |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
8 |
--- openscap-1.0.0/src/OVAL/probes/oval_fts.c.~2~ 2014-07-24 10:53:15.269589073 -0700 |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
9 |
+++ openscap-1.0.0/src/OVAL/probes/oval_fts.c 2014-07-24 11:02:30.267608422 -0700 |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
10 |
@@ -45,6 +45,8 @@ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
11 |
#if defined(__SVR4) && defined(__sun) |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
12 |
#include "fts_sun.h" |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
13 |
#include <sys/mntent.h> |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
14 |
+#include <libzonecfg.h> |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
15 |
+#include <sys/avl.h> |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
16 |
#else |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
17 |
#include <fts.h> |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
18 |
#endif |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
19 |
@@ -138,6 +140,13 @@ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
20 |
#define MNTTYPE_PROC "proc" |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
21 |
#endif |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
22 |
|
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
23 |
+typedef struct zone_path { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
24 |
+ avl_node_t avl_link_next; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
25 |
+ char zpath[MAXPATHLEN]; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
26 |
+} zone_path_t; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
27 |
+static avl_tree_t avl_tree_list; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
28 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
29 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
30 |
static bool valid_remote_fs(char *fstype) |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
31 |
{ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
32 |
if (strcmp(fstype, MNTTYPE_NFS) == 0 || |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
33 |
@@ -160,6 +169,85 @@ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
34 |
return (false); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
35 |
return (true); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
36 |
} |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
37 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
38 |
+/* function to compare two avl nodes in the avl tree */ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
39 |
+static int compare_zoneroot(const void *entry1, const void *entry2) |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
40 |
+{ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
41 |
+ zone_path_t *t1, *t2; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
42 |
+ int comp; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
43 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
44 |
+ t1 = (zone_path_t *)entry1; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
45 |
+ t2 = (zone_path_t *)entry2; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
46 |
+ if ((comp = strcmp(t1->zpath, t2->zpath)) == 0) { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
47 |
+ return (0); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
48 |
+ } |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
49 |
+ return (comp > 0 ? 1 : -1); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
50 |
+} |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
51 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
52 |
+int load_zones_path_list() |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
53 |
+{ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
54 |
+ FILE *cookie; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
55 |
+ char *name; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
56 |
+ zone_state_t state_num; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
57 |
+ zone_path_t *temp = NULL; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
58 |
+ avl_index_t where; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
59 |
+ char rpath[MAXPATHLEN]; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
60 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
61 |
+ cookie = setzoneent(); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
62 |
+ if (getzoneid() != GLOBAL_ZONEID) |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
63 |
+ return (0); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
64 |
+ avl_create(&avl_tree_list, compare_zoneroot, |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
65 |
+ sizeof(zone_path_t), offsetof(zone_path_t, avl_link_next)); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
66 |
+ while ((name = getzoneent(cookie)) != NULL) { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
67 |
+ if (strcmp(name, "global") == 0) |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
68 |
+ continue; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
69 |
+ if (zone_get_state(name, &state_num) != Z_OK) { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
70 |
+ dE("Could not get zone state for %s\n", name); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
71 |
+ continue; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
72 |
+ } else if (state_num > ZONE_STATE_CONFIGURED) { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
73 |
+ temp = malloc(sizeof(zone_path_t)); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
74 |
+ if (temp == NULL) { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
75 |
+ dE("Memory alloc failed\n"); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
76 |
+ return(1); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
77 |
+ } |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
78 |
+ if (zone_get_zonepath(name, rpath, |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
79 |
+ sizeof(rpath)) != Z_OK) { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
80 |
+ dE("Could not get zone path for %s\n", |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
81 |
+ name); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
82 |
+ continue; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
83 |
+ } |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
84 |
+ if (realpath(rpath, temp->zpath) != NULL) |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
85 |
+ avl_add(&avl_tree_list, temp); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
86 |
+ } |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
87 |
+ } |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
88 |
+ endzoneent(cookie); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
89 |
+ return (0); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
90 |
+} |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
91 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
92 |
+static void free_zones_path_list() |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
93 |
+{ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
94 |
+ zone_path_t *temp; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
95 |
+ void* cookie = NULL; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
96 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
97 |
+ while ((temp = avl_destroy_nodes(&avl_tree_list, &cookie)) != NULL) { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
98 |
+ free(temp); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
99 |
+ } |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
100 |
+ avl_destroy(&avl_tree_list); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
101 |
+} |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
102 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
103 |
+static bool valid_local_zone(char *path) |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
104 |
+{ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
105 |
+ zone_path_t temp; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
106 |
+ avl_index_t where; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
107 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
108 |
+ strlcpy(temp.zpath, path, sizeof(temp.zpath)); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
109 |
+ if (avl_find(&avl_tree_list, &temp, &where) != NULL) |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
110 |
+ return (true); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
111 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
112 |
+ return (false); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
113 |
+} |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
114 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
115 |
+ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
116 |
#endif |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
117 |
|
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
118 |
static bool OVAL_FTS_localp(OVAL_FTS *ofts, const char *path, void *id) |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
119 |
@@ -168,9 +256,11 @@ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
120 |
if (id != NULL && (*(char*)id) != '\0') { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
121 |
/* if not a valid local fs skip */ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
122 |
if (valid_local_fs((char*)id)) { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
123 |
- /* if recurse is local , skip remote fs */ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
124 |
+ /* if recurse is local , skip remote fs |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
125 |
+ and non-global zones */ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
126 |
if (ofts->filesystem == OVAL_RECURSE_FS_LOCAL) { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
127 |
- return (!valid_remote_fs((char*)id)); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
128 |
+ return (!(valid_remote_fs((char*)id) || |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
129 |
+ valid_local_zone(path))); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
130 |
} |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
131 |
return (true); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
132 |
} |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
133 |
@@ -179,9 +269,11 @@ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
134 |
/* id was not set, because fts_read failed to stat the node */ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
135 |
struct stat sb; |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
136 |
if ((stat(path, &sb) == 0) && (valid_local_fs(sb.st_fstype))) { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
137 |
- /* if recurse is local , skip remote fs */ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
138 |
+ /* if recurse is local , skip remote fs |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
139 |
+ and non-global zones */ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
140 |
if (ofts->filesystem == OVAL_RECURSE_FS_LOCAL) { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
141 |
- return (!valid_remote_fs(sb.st_fstype)); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
142 |
+ return (!(valid_remote_fs(sb.st_fstype) || |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
143 |
+ valid_local_zone(path))); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
144 |
} |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
145 |
return (true); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
146 |
} |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
147 |
@@ -793,6 +884,12 @@ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
148 |
ofts->ofts_sfilepath = SEXP_ref(filepath); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
149 |
} |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
150 |
|
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
151 |
+#if defined(__SVR4) && defined(__sun) |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
152 |
+ if (load_zones_path_list() != 0) { |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
153 |
+ dE("Failed to load zones path info. Recursing non-global zones."); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
154 |
+ free_zones_path_list(); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
155 |
+ } |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
156 |
+#endif |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
157 |
return (ofts); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
158 |
} |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
159 |
|
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
160 |
@@ -1249,6 +1346,9 @@ |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
161 |
fsdev_free(ofts->localdevs); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
162 |
|
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
163 |
OVAL_FTS_free(ofts); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
164 |
+#if defined(__SVR4) && defined(__sun) |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
165 |
+ free_zones_path_list(); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
166 |
+#endif |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
167 |
|
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
168 |
return (0); |
50e1c2ae28b8
19173594 oscap crashes when compliance is run
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
169 |
} |