author | Norm Jacobs <Norm.Jacobs@Oracle.COM> |
Fri, 21 Mar 2014 00:13:55 -0700 | |
branch | s11-update |
changeset 2996 | 9d8e1fd67549 |
parent 2705 | e39a44e3cb41 |
permissions | -rw-r--r-- |
2705
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
1 |
This patch fixes the issue with recursing directories when local is specified |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
2 |
on solaris. It no longer traverses remote and pseudo file systems like proc, |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
3 |
etc. |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
4 |
|
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
5 |
This patch has not been contributed upstream, but is planned to be done by |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
6 |
2013-Jul-12. |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
7 |
|
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
8 |
--- openscap-0.9.5/src/OVAL/probes/oval_fts.c.~1~ 2013-01-14 05:21:10.139830956 -0800 |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
9 |
+++ openscap-0.9.5/src/OVAL/probes/oval_fts.c 2013-02-27 14:12:10.322103381 -0800 |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
10 |
@@ -44,11 +44,11 @@ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
11 |
#include "oval_fts.h" |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
12 |
#if defined(__SVR4) && defined(__sun) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
13 |
#include "fts_sun.h" |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
14 |
+#include <sys/mntent.h> |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
15 |
#else |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
16 |
#include <fts.h> |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
17 |
#endif |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
18 |
|
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
19 |
-#undef OSCAP_FTS_DEBUG |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
20 |
|
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
21 |
static OVAL_FTS *OVAL_FTS_new() |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
22 |
{ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
23 |
@@ -130,14 +130,73 @@ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
24 |
return; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
25 |
} |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
26 |
|
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
27 |
+#if defined(__SVR4) && defined(__sun) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
28 |
+#ifndef MNTTYPE_SMB |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
29 |
+#define MNTTYPE_SMB "smb" |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
30 |
+#endif |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
31 |
+#ifndef MNTTYPE_PROC |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
32 |
+#define MNTTYPE_PROC "proc" |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
33 |
+#endif |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
34 |
+ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
35 |
+static bool valid_remote_fs(char *fstype) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
36 |
+{ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
37 |
+ if (strcmp(fstype, MNTTYPE_NFS) == 0 || |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
38 |
+ strcmp(fstype, MNTTYPE_SMBFS) == 0 || |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
39 |
+ strcmp(fstype, MNTTYPE_SMB) == 0) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
40 |
+ return (true); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
41 |
+ return (false); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
42 |
+} |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
43 |
+ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
44 |
+static bool valid_local_fs(char *fstype) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
45 |
+{ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
46 |
+ if (strcmp(fstype, MNTTYPE_SWAP) == 0 || |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
47 |
+ strcmp(fstype, MNTTYPE_MNTFS) == 0 || |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
48 |
+ strcmp(fstype, MNTTYPE_CTFS) == 0 || |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
49 |
+ strcmp(fstype, MNTTYPE_OBJFS) == 0 || |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
50 |
+ strcmp(fstype, MNTTYPE_SHAREFS) == 0 || |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
51 |
+ strcmp(fstype, MNTTYPE_PROC) == 0 || |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
52 |
+ strcmp(fstype, MNTTYPE_LOFS) == 0 || |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
53 |
+ strcmp(fstype, MNTTYPE_AUTOFS) == 0) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
54 |
+ return (false); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
55 |
+ return (true); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
56 |
+} |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
57 |
+#endif |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
58 |
+ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
59 |
static bool OVAL_FTS_localp(OVAL_FTS *ofts, const char *path, void *id) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
60 |
{ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
61 |
+#if defined(__SVR4) && defined(__sun) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
62 |
+ if (id != NULL && (*(char*)id) != '\0') { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
63 |
+ /* if not a valid local fs skip */ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
64 |
+ if (valid_local_fs((char*)id)) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
65 |
+ /* if recurse is local , skip remote fs */ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
66 |
+ if (ofts->filesystem == OVAL_RECURSE_FS_LOCAL) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
67 |
+ return (!valid_remote_fs((char*)id)); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
68 |
+ } |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
69 |
+ return (true); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
70 |
+ } |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
71 |
+ return (false); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
72 |
+ } else if (path != NULL) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
73 |
+ /* id was not set, because fts_read failed to stat the node */ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
74 |
+ struct stat sb; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
75 |
+ if ((stat(path, &sb) == 0) && (valid_local_fs(sb.st_fstype))) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
76 |
+ /* if recurse is local , skip remote fs */ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
77 |
+ if (ofts->filesystem == OVAL_RECURSE_FS_LOCAL) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
78 |
+ return (!valid_remote_fs(sb.st_fstype)); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
79 |
+ } |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
80 |
+ return (true); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
81 |
+ } |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
82 |
+ return (false); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
83 |
+ } else { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
84 |
+ return (false); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
85 |
+ } |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
86 |
+#else |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
87 |
if (id != NULL) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
88 |
return (fsdev_search(ofts->localdevs, id) == 1 ? true : false); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
89 |
else if (path != NULL) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
90 |
return (fsdev_path(ofts->localdevs, path) == 1 ? true : false); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
91 |
else |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
92 |
return (false); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
93 |
+#endif |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
94 |
} |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
95 |
|
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
96 |
static char *__regex_locate(char *str) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
97 |
@@ -695,6 +754,9 @@ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
98 |
} |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
99 |
|
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
100 |
if (filesystem == OVAL_RECURSE_FS_LOCAL) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
101 |
+#if defined(__SVR4) && defined(__sun) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
102 |
+ ofts->localdevs = NULL; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
103 |
+#else |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
104 |
ofts->localdevs = fsdev_init(NULL, 0); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
105 |
if (ofts->localdevs == NULL) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
106 |
dE("fsdev_init() failed.\n"); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
107 |
@@ -705,6 +767,7 @@ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
108 |
oval_fts_close(ofts); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
109 |
return (NULL); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
110 |
} |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
111 |
+#endif |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
112 |
} else if (filesystem == OVAL_RECURSE_FS_DEFINED) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
113 |
/* store the device id for future comparison */ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
114 |
FTSENT *fts_ent; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
115 |
@@ -745,7 +808,6 @@ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
116 |
fts_ent = fts_read(ofts->ofts_match_path_fts); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
117 |
if (fts_ent == NULL) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
118 |
return NULL; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
119 |
- |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
120 |
switch (fts_ent->fts_info) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
121 |
case FTS_DP: |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
122 |
continue; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
123 |
@@ -769,13 +831,21 @@ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
124 |
fts_set(ofts->ofts_match_path_fts, fts_ent, FTS_FOLLOW); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
125 |
continue; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
126 |
} |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
127 |
- |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
128 |
+#if defined(__SVR4) && defined(__sun) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
129 |
+ /* pseudo filesystems will be skipped */ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
130 |
+ /* don't recurse into remote fs if local is specified */ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
131 |
+ if ((fts_ent->fts_info == FTS_D || fts_ent->fts_info == FTS_SL) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
132 |
+ && (!OVAL_FTS_localp(ofts, fts_ent->fts_path, |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
133 |
+ (fts_ent->fts_statp != NULL) ? |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
134 |
+ &fts_ent->fts_statp->st_fstype : NULL))) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
135 |
+#else |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
136 |
/* don't recurse into non-local filesystems */ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
137 |
if (ofts->filesystem == OVAL_RECURSE_FS_LOCAL |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
138 |
&& (fts_ent->fts_info == FTS_D || fts_ent->fts_info == FTS_SL) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
139 |
&& (!OVAL_FTS_localp(ofts, fts_ent->fts_path, |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
140 |
(fts_ent->fts_statp != NULL) ? |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
141 |
&fts_ent->fts_statp->st_dev : NULL))) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
142 |
+#endif |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
143 |
dI("Don't recurse into non-local filesystems, skipping '%s'.\n", fts_ent->fts_path); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
144 |
fts_set(ofts->ofts_recurse_path_fts, fts_ent, FTS_SKIP); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
145 |
continue; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
146 |
@@ -964,6 +1034,15 @@ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
147 |
continue; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
148 |
} |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
149 |
} |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
150 |
+#if defined(__SVR4) && defined(__sun) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
151 |
+ /* pseudo filesystems will be skipped */ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
152 |
+ /* don't recurse into remote fs if local is specified */ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
153 |
+ if ((fts_ent->fts_info == FTS_D || |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
154 |
+ fts_ent->fts_info == FTS_SL) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
155 |
+ && (!OVAL_FTS_localp(ofts, fts_ent->fts_path, |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
156 |
+ (fts_ent->fts_statp != NULL) ? |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
157 |
+ &fts_ent->fts_statp->st_fstype : NULL))) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
158 |
+#else |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
159 |
|
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
160 |
/* don't recurse into non-local filesystems */ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
161 |
if (ofts->filesystem == OVAL_RECURSE_FS_LOCAL |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
162 |
@@ -971,6 +1050,7 @@ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
163 |
&& (!OVAL_FTS_localp(ofts, fts_ent->fts_path, |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
164 |
(fts_ent->fts_statp != NULL) ? |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
165 |
&fts_ent->fts_statp->st_dev : NULL))) { |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
166 |
+#endif |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
167 |
fts_set(ofts->ofts_recurse_path_fts, fts_ent, FTS_SKIP); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
168 |
continue; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
169 |
} |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
170 |
@@ -1039,12 +1119,18 @@ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
171 |
if (ofts->ofts_recurse_path_curdepth == 0) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
172 |
ofts->ofts_recurse_path_devid = fts_ent->fts_statp->st_dev; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
173 |
*/ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
174 |
- |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
175 |
+#if defined(__SVR4) && defined(__sun) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
176 |
+ if ((!OVAL_FTS_localp(ofts, fts_ent->fts_path, |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
177 |
+ (fts_ent->fts_statp != NULL) ? |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
178 |
+ &fts_ent->fts_statp->st_fstype : NULL))) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
179 |
+ break; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
180 |
+#else |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
181 |
if (ofts->filesystem == OVAL_RECURSE_FS_LOCAL |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
182 |
&& (!OVAL_FTS_localp(ofts, fts_ent->fts_path, |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
183 |
(fts_ent->fts_statp != NULL) ? |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
184 |
&fts_ent->fts_statp->st_dev : NULL))) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
185 |
break; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
186 |
+#endif |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
187 |
if (ofts->filesystem == OVAL_RECURSE_FS_DEFINED |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
188 |
&& ofts->ofts_recurse_path_devid != fts_ent->fts_statp->st_dev) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
189 |
break; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
190 |
--- openscap-0.9.5/src/OVAL/fts_sun.c.~1~ 2012-11-06 05:51:31.668229747 -0800 |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
191 |
+++ openscap-0.9.5/src/OVAL/fts_sun.c 2013-02-27 11:32:47.333961072 -0800 |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
192 |
@@ -1022,6 +1022,10 @@ |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
193 |
p->fts_instr = FTS_NOINSTR; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
194 |
p->fts_number = 0; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
195 |
p->fts_pointer = NULL; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
196 |
+#if defined(__SVR4) && defined(__sun) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
197 |
+ if (!ISSET(FTS_NOSTAT)) |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
198 |
+ p->fts_statp->st_fstype[0] = '\0'; |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
199 |
+#endif |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
200 |
return (p); |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
201 |
} |
e39a44e3cb41
16186483 Port openscap 0.9.7 to solaris
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff
changeset
|
202 |