3d2416a
diff -up setools-3.3.7/libqpol/src/util.c.current setools-3.3.7/libqpol/src/util.c
3d2416a
--- setools-3.3.7/libqpol/src/util.c.current	2010-04-23 12:22:08.000000000 -0400
3d2416a
+++ setools-3.3.7/libqpol/src/util.c	2012-02-16 12:01:33.030434514 -0500
3d2416a
@@ -84,75 +84,12 @@ static int get_binpol_version(const char
3d2416a
 
3d2416a
 static int search_policy_binary_file(char **path)
3d2416a
 {
3d2416a
-	const char *binary_path;
3d2416a
-	if ((binary_path = selinux_binary_policy_path()) == NULL) {
3d2416a
-		return -1;
3d2416a
+	const char *binary_path = selinux_current_policy_path();
3d2416a
+	if (binary_path) {
3d2416a
+		*path = strdup(binary_path);
3d2416a
+		if (*path) return 0;
3d2416a
 	}
3d2416a
-
3d2416a
-	int expected_version = -1, latest_version = -1;
3d2416a
-#ifdef LIBSELINUX
3d2416a
-	/* if the system has SELinux enabled, prefer the policy whose
3d2416a
-	   name matches the current policy version */
3d2416a
-	if ((expected_version = security_policyvers()) < 0) {
3d2416a
-		return -1;
3d2416a
-	}
3d2416a
-#endif
3d2416a
-
3d2416a
-	glob_t glob_buf;
3d2416a
-	struct stat fs;
3d2416a
-	int rt, error = 0, retval = -1;
3d2416a
-	size_t i;
3d2416a
-	char *pattern = NULL;
3d2416a
-	if (asprintf(&pattern, "%s.*", binary_path) < 0) {
3d2416a
-		return -1;
3d2416a
-	}
3d2416a
-	glob_buf.gl_offs = 1;
3d2416a
-	glob_buf.gl_pathc = 0;
3d2416a
-	rt = glob(pattern, GLOB_DOOFFS, NULL, &glob_buf);
3d2416a
-	if (rt != 0 && rt != GLOB_NOMATCH) {
3d2416a
-		errno = EIO;
3d2416a
-		return -1;
3d2416a
-	}
3d2416a
-
3d2416a
-	for (i = 0; i < glob_buf.gl_pathc; i++) {
3d2416a
-		char *p = glob_buf.gl_pathv[i + glob_buf.gl_offs];
3d2416a
-		if (stat(p, &fs) != 0) {
3d2416a
-			error = errno;
3d2416a
-			goto cleanup;
3d2416a
-		}
3d2416a
-		if (S_ISDIR(fs.st_mode))
3d2416a
-			continue;
3d2416a
-
3d2416a
-		if ((rt = get_binpol_version(p)) < 0) {
3d2416a
-			error = errno;
3d2416a
-			goto cleanup;
3d2416a
-		}
3d2416a
-
3d2416a
-		if (rt > latest_version || rt == expected_version) {
3d2416a
-			free(*path);
3d2416a
-			if ((*path = strdup(p)) == NULL) {
3d2416a
-				error = errno;
3d2416a
-				goto cleanup;
3d2416a
-			}
3d2416a
-			if (rt == expected_version) {
3d2416a
-				break;
3d2416a
-			}
3d2416a
-			latest_version = rt;
3d2416a
-		}
3d2416a
-	}
3d2416a
-
3d2416a
-	if (*path == NULL) {
3d2416a
-		retval = 1;
3d2416a
-	} else {
3d2416a
-		retval = 0;
3d2416a
-	}
3d2416a
-      cleanup:
3d2416a
-	free(pattern);
3d2416a
-	globfree(&glob_buf);
3d2416a
-	if (retval == -1) {
3d2416a
-		errno = error;
3d2416a
-	}
3d2416a
-	return retval;
3d2416a
+	return -1;
3d2416a
 }
3d2416a
 
3d2416a
 int qpol_default_policy_find(char **path)