Blame SOURCES/0008-Add-alias-support-to-seinfo-t.patch

5a929f
From 1136e61a9839ad3b60eb2da4d624413c02545c7d Mon Sep 17 00:00:00 2001
5a929f
From: Miroslav Grepl <mgrepl@redhat.com>
5a929f
Date: Fri, 11 Apr 2014 18:42:27 +0200
5a929f
Subject: [PATCH 08/11] Add alias support to seinfo -t
5a929f
5a929f
---
5a929f
 secmds/seinfo.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
5a929f
 1 file changed, 48 insertions(+)
5a929f
5a929f
diff --git a/secmds/seinfo.c b/secmds/seinfo.c
5a929f
index 54b2a6a..1878c49 100644
5a929f
--- a/secmds/seinfo.c
5a929f
+++ b/secmds/seinfo.c
25bb7d
@@ -46,6 +46,7 @@
25bb7d
 #include <string.h>
25bb7d
 #include <assert.h>
25bb7d
 #include <getopt.h>
25bb7d
+#include <selinux/selinux.h>
25bb7d
 
25bb7d
 #define COPYRIGHT_INFO "Copyright (C) 2003-2007 Tresys Technology, LLC"
25bb7d
 
25bb7d
@@ -54,6 +55,7 @@
25bb7d
 
25bb7d
 static char *policy_file = NULL;
25bb7d
 
25bb7d
+static void print_type_aliases(FILE * fp, const qpol_type_t * type_datum, const apol_policy_t * policydb);
5a929f
 static int print_type_attrs(FILE * fp, const qpol_type_t * type_datum, const apol_policy_t * policydb, const int expand);
5a929f
 static int print_attr_types(FILE * fp, const qpol_type_t * type_datum, const apol_policy_t * policydb, const int expand);
5a929f
 static int print_user_roles(FILE * fp, const qpol_user_t * user_datum, const apol_policy_t * policydb, const int expand);
5a929f
@@ -514,6 +516,7 @@ static int print_types(FILE * fp, const char *name, int expand, const apol_polic
25bb7d
 			goto cleanup;
5a929f
 		if (print_type_attrs(fp, type_datum, policydb, expand))
5a929f
 			goto cleanup;
5a929f
+        print_type_aliases(fp, type_datum, policydb);
25bb7d
 	} else {
25bb7d
 		if (qpol_policy_get_type_iter(q, &iter))
25bb7d
 			goto cleanup;
5a929f
@@ -1912,6 +1915,51 @@ int main(int argc, char **argv)
25bb7d
 }
25bb7d
 
25bb7d
 /**
25bb7d
+ * Prints the alias of a type.
25bb7d
+ *
25bb7d
+ * @param fp Reference to a file to which to print type information
25bb7d
+ * @param type_datum Reference to sepol type_datum
25bb7d
+ * @param policydb Reference to a policy
25bb7d
+ * attributes
25bb7d
+ */
25bb7d
+static void print_type_aliases(FILE * fp, const qpol_type_t * type_datum, const apol_policy_t * policydb)
25bb7d
+{
25bb7d
+	qpol_iterator_t *iter = NULL;
25bb7d
+	size_t alias_size;
25bb7d
+	unsigned char isattr, isalias;
25bb7d
+	const char *type_name = NULL;
25bb7d
+	const char *alias_name;
25bb7d
+	qpol_policy_t *q = apol_policy_get_qpol(policydb);
25bb7d
+
25bb7d
+	if (qpol_type_get_name(q, type_datum, &type_name))
25bb7d
+		goto cleanup;
25bb7d
+	if (qpol_type_get_isattr(q, type_datum, &isattr))
25bb7d
+		goto cleanup;
25bb7d
+	if (qpol_type_get_isalias(q, type_datum, &isalias))
25bb7d
+		goto cleanup;
25bb7d
+
25bb7d
+	if (isalias) {
25bb7d
+		fprintf(fp, "   TypeName %s\n", type_name);
25bb7d
+	}
25bb7d
+	if (qpol_type_get_alias_iter(q, type_datum, &iter))
25bb7d
+		goto cleanup;
25bb7d
+	if (qpol_iterator_get_size(iter, &alias_size))
25bb7d
+		goto cleanup;
25bb7d
+	if (alias_size >  0) {
25bb7d
+		fprintf(fp, "   Aliases\n");
25bb7d
+		for (; !qpol_iterator_end(iter); qpol_iterator_next(iter)) {
25bb7d
+			if (qpol_iterator_get_item(iter, (void **)&alias_name))
25bb7d
+				goto cleanup;
25bb7d
+			fprintf(fp, "      %s\n", alias_name);
25bb7d
+		}
25bb7d
+	}
25bb7d
+
25bb7d
+      cleanup:
25bb7d
+	qpol_iterator_destroy(&iter);
25bb7d
+	return;
25bb7d
+}
25bb7d
+
25bb7d
+/**
25bb7d
  * Prints a textual representation of a type, and possibly
25bb7d
  * all of that type's attributes.
25bb7d
  *
5a929f
-- 
5a929f
1.8.5.3
5a929f