diff --git a/policycoreutils-rhat.patch b/policycoreutils-rhat.patch index 790cc22..0a1eb40 100644 --- a/policycoreutils-rhat.patch +++ b/policycoreutils-rhat.patch @@ -895,8 +895,43 @@ diff --exclude-from=exclude -N -u -r nsapolicycoreutils/po/ms.po policycoreutils + diff --exclude-from=exclude -N -u -r nsapolicycoreutils/restorecon/restorecon.c policycoreutils-1.30.14/restorecon/restorecon.c --- nsapolicycoreutils/restorecon/restorecon.c 2006-05-15 09:42:56.000000000 -0400 -+++ policycoreutils-1.30.14/restorecon/restorecon.c 2006-06-21 15:51:43.000000000 -0400 -@@ -185,7 +185,7 @@ ++++ policycoreutils-1.30.14/restorecon/restorecon.c 2006-06-22 14:07:15.000000000 -0400 +@@ -42,6 +42,7 @@ + + static int change=1; + static int verbose=0; ++static int progress=0; + static FILE *outfile=NULL; + static char *progname; + static int errors=0; +@@ -49,6 +50,7 @@ + static int force=0; + #define STAT_BLOCK_SIZE 1 + static int pipe_fds[2] = { -1, -1 }; ++static unsigned long long count=0; + + #define MAX_EXCLUDES 100 + static int excludeCtr=0; +@@ -126,6 +128,18 @@ + security_context_t prev_context=NULL; + struct stat st; + char path[PATH_MAX+1]; ++ ++ if (progress) { ++ count++; ++ if (count % 80000 == 0) { ++ fprintf(stdout, "\n"); ++ fflush(stdout); ++ } ++ if (count % 1000 == 0) { ++ fprintf(stdout, "*"); ++ fflush(stdout); ++ } ++ } + + if (excludeCtr > 0 && exclude(filename)) { + return 0; +@@ -185,7 +199,7 @@ fprintf(stderr,"matchpathcon(%s) failed %s\n", filename,strerror(errno)); return 1; } @@ -905,14 +940,38 @@ diff --exclude-from=exclude -N -u -r nsapolicycoreutils/restorecon/restorecon.c if (retcontext >= 0 || errno == ENODATA) { int customizable=0; -@@ -306,6 +306,7 @@ +@@ -306,8 +320,9 @@ progname=argv[0]; if (is_selinux_enabled() <= 0 ) exit(0); + set_matchpathcon_flags(MATCHPATHCON_NOTRANS); - while ((opt = getopt(argc, argv, "FrRnvf:o:e:")) > 0) { +- while ((opt = getopt(argc, argv, "FrRnvf:o:e:")) > 0) { ++ while ((opt = getopt(argc, argv, "pFrRnvf:o:e:")) > 0) { switch (opt) { + case 'n': + change = 0; +@@ -332,8 +347,20 @@ + __fsetlocking(outfile, FSETLOCKING_BYCALLER); + break; + case 'v': ++ if (progress) { ++ fprintf(stderr, "Progress and Verbose mutually exclusive\n"); ++ usage(argv[0]); ++ } ++ + verbose++; + break; ++ case 'p': ++ if (verbose) { ++ fprintf(stderr, "Progress and Verbose mutually exclusive\n"); ++ usage(argv[0]); ++ } ++ progress = 1; ++ break; + case 'f': + file = 1; + file_name=optarg; diff --exclude-from=exclude -N -u -r nsapolicycoreutils/restorecond/restorecond.c policycoreutils-1.30.14/restorecond/restorecond.c --- nsapolicycoreutils/restorecond/restorecond.c 2006-05-15 09:42:57.000000000 -0400 +++ policycoreutils-1.30.14/restorecond/restorecond.c 2006-06-21 15:56:15.000000000 -0400 @@ -934,10 +993,107 @@ diff --exclude-from=exclude -N -u -r nsapolicycoreutils/restorecond/restorecond. master_fd = inotify_init (); if (master_fd < 0) exitApp("inotify_init"); +diff --exclude-from=exclude -N -u -r nsapolicycoreutils/scripts/fixfiles policycoreutils-1.30.14/scripts/fixfiles +--- nsapolicycoreutils/scripts/fixfiles 2006-06-16 15:08:24.000000000 -0400 ++++ policycoreutils-1.30.14/scripts/fixfiles 2006-06-22 14:21:55.000000000 -0400 +@@ -28,7 +28,7 @@ + DIRS="" + RPMILES="" + OUTFILES="" +-LOGFILE=/dev/null ++LOGFILE=`tty` + SYSLOGFLAG="-l" + LOGGER=/usr/sbin/logger + SETFILES=/sbin/setfiles +@@ -118,7 +118,7 @@ + fi + if [ ! -z "$RPMFILES" ]; then + for i in `echo $RPMFILES | sed 's/,/ /g'`; do +- rpmlist $i | ${RESTORECON} ${OUTFILES} ${FORCEFLAG} -R $1 -v -f - 2>&1 >> $LOGFILE ++ rpmlist $i | ${RESTORECON} ${OUTFILES} ${FORCEFLAG} -R $* -f - 2>&1 >> $LOGFILE + done + exit $? + fi +@@ -126,16 +126,16 @@ + if [ -x /usr/bin/find ]; then + for d in ${DIRS} ; do find $d \ + ! \( -fstype ext2 -o -fstype ext3 -o -fstype jfs -o -fstype xfs \) -prune -o -print | \ +- ${RESTORECON} ${OUTFILES} ${FORCEFLAG} $1 -v -f - 2>&1 >> $LOGFILE ++ ${RESTORECON} ${OUTFILES} ${FORCEFLAG} $* -f - 2>&1 >> $LOGFILE + done + else +- ${RESTORECON} ${OUTFILES} ${FORCEFLAG} -R $1 -v $DIRS 2>&1 >> $LOGFILE ++ ${RESTORECON} ${OUTFILES} ${FORCEFLAG} -R $* $DIRS 2>&1 >> $LOGFILE + fi + + exit $? + fi + LogReadOnly +-${SETFILES} ${OUTFILES} ${SYSLOGFLAG} ${FORCEFLAG} $1 -v ${FC} ${FILESYSTEMSRW} 2>&1 >> $LOGFILE ++${SETFILES} ${OUTFILES} ${SYSLOGFLAG} ${FORCEFLAG} $* ${FC} ${FILESYSTEMSRW} 2>&1 >> $LOGFILE + exit $? + } + +@@ -234,8 +234,8 @@ + # Make sure they specified one of the three valid commands + # + case "$command" in +- restore) restore ;; +- check) restore -n ;; ++ restore) restore -p -q ;; ++ check) restore -n -v ;; + relabel) relabel;; + *) + usage diff --exclude-from=exclude -N -u -r nsapolicycoreutils/setfiles/setfiles.c policycoreutils-1.30.14/setfiles/setfiles.c --- nsapolicycoreutils/setfiles/setfiles.c 2006-06-16 15:08:24.000000000 -0400 -+++ policycoreutils-1.30.14/setfiles/setfiles.c 2006-06-21 15:54:16.000000000 -0400 -@@ -301,7 +301,7 @@ ++++ policycoreutils-1.30.14/setfiles/setfiles.c 2006-06-22 14:32:43.000000000 -0400 +@@ -20,6 +20,7 @@ + * -d Show what specification matched each file. + * -l Log changes in files labels to syslog. + * -n Do not change any file labels. ++ * -p Show progress. Prints * for every 1000 files + * -q Be quiet (suppress non-error output). + * -r Use an alternate root path + * -s Use stdin for a list of files instead of searching a partition. +@@ -88,6 +89,8 @@ + static int force=0; + #define STAT_BLOCK_SIZE 1 + static int pipe_fds[2] = { -1, -1 }; ++static int progress=0; ++static unsigned long long count=0; + + #define MAX_EXCLUDES 100 + static int excludeCtr=0; +@@ -208,7 +211,7 @@ + void usage(const char * const name) + { + fprintf(stderr, +- "usage: %s [-dnqvW] [-o filename] [-r alt_root_path ] spec_file pathname...\n" ++ "usage: %s [-dnpqvW] [-o filename] [-r alt_root_path ] spec_file pathname...\n" + "usage: %s -c policyfile spec_file\n" + "usage: %s -s [-dnqvW] [-o filename ] spec_file\n", name, name, name); + exit(1); +@@ -278,6 +281,18 @@ + /* No matching specification. */ + return 0; + ++ if (progress) { ++ count++; ++ if (count % 80000 == 0) { ++ fprintf(stdout, "\n"); ++ fflush(stdout); ++ } ++ if (count % 1000 == 0) { ++ fprintf(stdout, "*"); ++ fflush(stdout); ++ } ++ } ++ + /* + * Try to add an association between this inode and + * this specification. If there is already an association +@@ -301,7 +316,7 @@ } /* Get the current context of the file. */ @@ -946,7 +1102,16 @@ diff --exclude-from=exclude -N -u -r nsapolicycoreutils/setfiles/setfiles.c poli if (ret < 0) { if (errno == ENODATA) { context = NULL; -@@ -485,7 +485,7 @@ +@@ -414,7 +429,7 @@ + + if (policyfile) { + valid = (sepol_check_context (context) >= 0); +- } else if (security_canonicalize_context(context, &tmpcon) < 0) { ++ } else if (security_canonicalize_context_raw(context, &tmpcon) < 0) { + if (errno != ENOENT) { + valid = 0; + inc_err(); +@@ -485,10 +500,10 @@ memset(excludeArray,0, sizeof(excludeArray)); /* Validate all file contexts during matchpathcon_init. */ @@ -954,7 +1119,31 @@ diff --exclude-from=exclude -N -u -r nsapolicycoreutils/setfiles/setfiles.c poli + set_matchpathcon_flags(MATCHPATHCON_VALIDATE | MATCHPATHCON_NOTRANS); /* Process any options. */ - while ((opt = getopt(argc, argv, "Fc:dlnqrsvWe:o:")) > 0) { +- while ((opt = getopt(argc, argv, "Fc:dlnqrsvWe:o:")) > 0) { ++ while ((opt = getopt(argc, argv, "Fc:dlnpqrsvWe:o:")) > 0) { + switch (opt) { + case 'c': + { +@@ -566,8 +581,19 @@ + add_assoc = 0; + break; + case 'v': ++ if (progress) { ++ fprintf(stderr, "Progress and Verbose mutually exclusive\n"); ++ exit(1); ++ } + verbose++; + break; ++ case 'p': ++ if (verbose) { ++ fprintf(stderr, "Progress and Verbose mutually exclusive\n"); ++ usage(argv[0]); ++ } ++ progress = 1; ++ break; + case 'W': + warn_no_match = 1; + break; diff --exclude-from=exclude -N -u -r nsapolicycoreutils/setsebool/setsebool.8 policycoreutils-1.30.14/setsebool/setsebool.8 --- nsapolicycoreutils/setsebool/setsebool.8 2006-05-15 09:42:58.000000000 -0400 +++ policycoreutils-1.30.14/setsebool/setsebool.8 2006-06-19 10:32:36.000000000 -0400 diff --git a/policycoreutils.spec b/policycoreutils.spec index 4e15ffb..7ea4d34 100644 --- a/policycoreutils.spec +++ b/policycoreutils.spec @@ -5,7 +5,7 @@ Summary: SELinux policy core utilities. Name: policycoreutils Version: 1.30.14 -Release: 4 +Release: 5 License: GPL Group: System Environment/Base Source: http://www.nsa.gov/selinux/archives/policycoreutils-%{version}.tgz @@ -111,6 +111,9 @@ rm -rf %{buildroot} [ -x /sbin/service ] && /sbin/service restorecond condrestart %changelog +* Thu Jun 22 2006 Dan Walsh 1.30.14-5 +- Add progress indicator on fixfiles/setfiles/restorecon + * Wed Jun 21 2006 Dan Walsh 1.30.14-4 - Don't use translations with matchpathcon