All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel J Walsh <dwalsh@redhat.com>
To: Stephen Smalley <sds@epoch.ncsc.mil>, SELinux <SELinux@tycho.nsa.gov>
Subject: Change of restorecon and setfiles to not modify context if only_user_section changed
Date: Fri, 21 Jan 2005 13:23:52 -0500	[thread overview]
Message-ID: <41F148B8.5090504@redhat.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 42 bytes --]

Specifying force (-F) will override.

Dan

[-- Attachment #2: policycoreutils-rhat.patch --]
[-- Type: text/x-patch, Size: 4220 bytes --]

Binary files nsapolicycoreutils/load_policy/load_policy and policycoreutils-1.21.1/load_policy/load_policy differ
Binary files nsapolicycoreutils/newrole/newrole and policycoreutils-1.21.1/newrole/newrole differ
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/restorecon/restorecon.c policycoreutils-1.21.1/restorecon/restorecon.c
--- nsapolicycoreutils/restorecon/restorecon.c	2005-01-20 15:59:21.000000000 -0500
+++ policycoreutils-1.21.1/restorecon/restorecon.c	2005-01-21 13:21:44.916873000 -0500
@@ -50,15 +50,12 @@
 static int only_changed_user(const char *a, const char *b)
 {
 	char *rest_a, *rest_b; /* Rest of the context after the user */
-	if (!a || !b)
-		return 0;
+	if (force) return 0;
+	if (!a || !b) return 0;
 	rest_a = strchr(a, ':');
 	rest_b = strchr(b, ':');
-	if (!rest_a || !rest_b)
-		return 0;
-	if (strcmp(rest_a, rest_b) == 0)
-		return 1;
-	return 0;
+	if (!rest_a || !rest_b) return 0;
+	return  (strcmp(rest_a, rest_b) == 0);
 }
 
 void usage(const char * const name)
@@ -75,6 +72,7 @@
   int len=strlen(filename);
   struct stat st;
   char path[PATH_MAX+1];
+  int user_only_changed=0;
   /* 
      Eliminate trailing /
   */
@@ -139,7 +137,8 @@
       if (outfile) {
 	fprintf(outfile, "%s\n", filename);
       }
-      if (change) {
+      user_only_changed = only_changed_user(scontext, prev_context);
+      if (change && !user_only_changed) {
 	retval=lsetfilecon(filename,scontext);
       }
       if (retval<0) {
@@ -151,7 +150,7 @@
 	  return 1;
       } else 	
 	      if (verbose && 
-		  (verbose > 1 || !only_changed_user(scontext, prev_context)))
+		  (verbose > 1 || !user_only_changed))
 		      fprintf(stderr,"%s reset context %s:%s->%s\n",
 			      progname, filename, (retcontext >= 0 ? prev_context : ""), scontext);
     }
Binary files nsapolicycoreutils/run_init/run_init and policycoreutils-1.21.1/run_init/run_init differ
Binary files nsapolicycoreutils/setfiles/setfiles and policycoreutils-1.21.1/setfiles/setfiles differ
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/setfiles/setfiles.c policycoreutils-1.21.1/setfiles/setfiles.c
--- nsapolicycoreutils/setfiles/setfiles.c	2005-01-20 15:59:22.000000000 -0500
+++ policycoreutils-1.21.1/setfiles/setfiles.c	2005-01-21 13:21:14.438382000 -0500
@@ -583,13 +583,12 @@
 static int only_changed_user(const char *a, const char *b)
 {
 	char *rest_a, *rest_b; /* Rest of the context after the user */
+	if (force) return 0;
+	if (!a || !b) return 0;
 	rest_a = strchr(a, ':');
 	rest_b = strchr(b, ':');
-	if (!rest_a || !rest_b)
-		return 0;
-	if (strcmp(rest_a, rest_b) == 0)
-		return 1;
-	return 0;
+	if (!rest_a || !rest_b) return 0;
+	return  (strcmp(rest_a, rest_b) == 0);
 }
 
 /*
@@ -605,6 +604,7 @@
 	struct stat my_sb;
 	int i, ret;
 	char *context; 
+	int user_only_changed=0;
 
 	/* Skip the extra slash at the beginning, if present. */
 	if (file[0] == '/' && file[1] == '/')
@@ -666,6 +666,8 @@
 		}
 	}
 
+	user_only_changed=only_changed_user(context, spec_arr[i].context);
+
 	/*
 	 * Do not relabel the file if the matching specification is 
 	 * <<none>> or the file is already labeled according to the 
@@ -690,21 +692,18 @@
 		/* If we're just doing "-v", trim out any relabels where
 		 * the user has changed but the role and type are the
 		 * same.  For "-vv", emit everything. */
-		if (verbose > 1 || 
-		    !only_changed_user(context, spec_arr[i].context)) {
+		if (verbose > 1 || !user_only_changed) {
 			printf("%s:  relabeling %s from %s to %s\n", progname,
 			       my_file, context, spec_arr[i].context);
 		}
 	}
 
-	if (log &&
-	    !only_changed_user(context, spec_arr[i].context)) {
+	if ( log && !user_only_changed ) {
 		syslog(LOG_INFO, "relabeling %s from %s to %s\n", 
 		       my_file, context, spec_arr[i].context);
 	}
 
-	if (outfile &&
-	    !only_changed_user(context, spec_arr[i].context)) 
+	if (outfile && !user_only_changed)
 		fprintf(outfile, "%s\n", my_file);
 
 	freecon(context);
@@ -712,7 +711,7 @@
 	/*
 	 * Do not relabel the file if -n was used.
 	 */
-	if (!change)
+	if (!change || user_only_changed) 
 		return 0;
 
 	/*
Binary files nsapolicycoreutils/setfiles/setfiles.o and policycoreutils-1.21.1/setfiles/setfiles.o differ

             reply	other threads:[~2005-01-21 18:23 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-21 18:23 Daniel J Walsh [this message]
2005-01-21 19:47 ` Change of restorecon and setfiles to not modify context if only_user_section changed Stephen Smalley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=41F148B8.5090504@redhat.com \
    --to=dwalsh@redhat.com \
    --cc=SELinux@tycho.nsa.gov \
    --cc=sds@epoch.ncsc.mil \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.