components/openscap/patches/recurse_file_system_local.patch
author Norm Jacobs <Norm.Jacobs@Oracle.COM>
Fri, 21 Mar 2014 00:13:55 -0700
branchs11-update
changeset 2996 9d8e1fd67549
parent 2705 e39a44e3cb41
permissions -rw-r--r--
15818459 SUNBT7200992 gcc45 needs a 'link path=usr/gcc/4.5/share/info/dir ...' action
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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