Your message dated Sun, 04 Apr 2010 07:59:10 +0000
with message-id <[email protected]>
and subject line Bug#572809: fixed in findutils 4.5.7-1
has caused the Debian Bug report #572809,
regarding findutils: Include patch to support SELinux (option -context and 
-printf '%Z')
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
572809: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=572809
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: findutils
Version: 4.4.2-1
Severity: normal
Tags: patch

Hello,

Redhat[1], and Novell[3] and probably a few other distribution are shipping
a patch, to search and print SELinux attributes with find, like:
>  find /etc/ ! -context system_u:object_r:etc_t:s0
or
>  find /etc -printf '%f %Z\n'

It would be nice to merge the patch.

I have attached a patch from FedoraR11 [1], but the latest patch (for more 
recent
libselinux can be fetched from[2]).


FYI, I have filed the patch upstream, but I doubt they would merge it in
short term, because of copyright assinements, see [4]

Thanks,


Franklin


[1] http://cvs.fedoraproject.org/viewvc/F-11/libselinux/
[2] http://cvs.fedoraproject.org/viewvc/rpms/findutils/devel/
    (the file is named something like findutils-4.4.2-selinux.patch)
[3] http://download.opensuse.org/source/distribution/11.2/repo/oss/suse/src/
    (patch inside findutils-4.4.0-46.2.src.rpm)
[4] https://savannah.gnu.org/bugs/index.php?29089


-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (500, 'testing'), (101, 'unstable'), (10, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.33-2-686 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages findutils depends on:
ii  libc6                         2.10.2-6   Embedded GNU C Library: Shared lib

findutils recommends no packages.

Versions of packages findutils suggests:
ii  mlocate                       0.22.2-1   quickly find files on the filesyst

-- no debconf information
>From 3fd0404277a20f2ab813de1eadf4f429a856566c Mon Sep 17 00:00:00 2001
From: Frank Lin PIAT <[email protected]>
Date: Sat, 6 Mar 2010 20:03:22 +0100
Subject: [PATCH] Import SELinux patch (from Fedora 11)

---
 configure.ac     |   10 ++++
 doc/find.texi    |   12 ++++-
 find/Makefile.am |    2 +-
 find/defs.h      |   13 +++++
 find/find.1      |    4 ++
 find/find.c      |   32 ++++++++++++-
 find/parser.c    |  141 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 find/pred.c      |   55 +++++++++++++++++++++
 find/tree.c      |    6 ++-
 9 files changed, 269 insertions(+), 6 deletions(-)

diff --git a/configure.ac b/configure.ac
index f4849b3..c771df7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -114,6 +114,16 @@ AC_CHECK_LIB([m],[fabs],[FINDLIBS="-lm $FINDLIBS"]
   AC_DEFINE_UNQUOTED(HAVE_FABS_IN_LIBM,1,[fabs is defined in -lm]))
 AC_SUBST([FINDLIBS])
 
+AC_ARG_WITH([selinux],
+           AS_HELP_STRING([--without-selinux], [disable SELinux support]),
+           [:],
+[AC_CHECK_LIB([selinux], [is_selinux_enabled],
+             [with_selinux=yes], [with_selinux=no])])
+if test x$with_selinux != xno; then
+   AC_DEFINE([WITH_SELINUX], [1], [Define to support SELinux])
+   AC_SUBST([LIBSELINUX], [-lselinux])
+fi
+
 dnl Checks for header files.
 AC_HEADER_STDC
 dnl Assume unistd.h is present - coreutils does too.
diff --git a/doc/find.texi b/doc/find.texi
index 2e5958d..aac149c 100644
--- a/doc/find.texi
+++ b/doc/find.texi
@@ -7,7 +7,6 @@
 @c %**end of header
 
 @include version.texi
-...@include ../locate/dblocation.texi
 
 @iftex
 @finalout
@@ -1242,6 +1241,14 @@ situation.
 
 @end deffn
 
+...@deffn Test -context pattern
+True if file's SELinux context matches the pattern @var{pattern}.
+The pattern uses shell glob matching.
+
+This predicate is supported only on @code{find} versions compiled with
+SELinux support and only when SELinux is enabled.
+...@end deffn
+
 @node Contents
 @section Contents
 
@@ -1826,6 +1833,9 @@ value used for BLOCKSIZE is system-dependent, but is usually 512
 bytes.  If the file size is zero, the value printed is undefined.  On
 systems which lack support for st_blocks, a file's sparseness is
 assumed to be 1.0.
+...@item %Z
+File's SELinux context, or empty string if the file has no SELinux context
+or this version of find does not support SELinux.
 @end table
 
 @node Location Directives
diff --git a/find/Makefile.am b/find/Makefile.am
index b001509..e51afba 100644
--- a/find/Makefile.am
+++ b/find/Makefile.am
@@ -26,7 +26,7 @@ endif
 
 EXTRA_DIST = defs.h $(man_MANS)
 INCLUDES = -I../gnulib/lib -I$(top_srcdir)/lib -I$(top_srcdir)/gnulib/lib -I../intl -DLOCALEDIR=\"$(localedir)\"
-LDADD = ./libfindtools.a ../lib/libfind.a ../gnulib/lib/libgnulib.a @INTLLIBS@ @LIB_CLOCK_GETTIME@ @FINDLIBS@
+LDADD = ./libfindtools.a ../lib/libfind.a ../gnulib/lib/libgnulib.a @INTLLIBS@ @LIB_CLOCK_GETTIME@ @FINDLIBS@ @LIBSELINUX@
 man_MANS = find.1
 SUBDIRS = . testsuite
 
diff --git a/find/defs.h b/find/defs.h
index 1708d83..b96eaaa 100644
--- a/find/defs.h
+++ b/find/defs.h
@@ -91,6 +91,9 @@ int get_statinfo PARAMS((const char *pathname, const char *name, struct stat *p)
 #define MODE_RWX	(S_IXUSR | S_IXGRP | S_IXOTH | MODE_RW)
 #define MODE_ALL	(S_ISUID | S_ISGID | S_ISVTX | MODE_RWX)
 
+#ifdef WITH_SELINUX
+#include <selinux/selinux.h>
+#endif
 
 struct predicate;
 struct options;
@@ -315,6 +318,9 @@ struct predicate
     struct samefile_file_id samefileid; /* samefile */
     mode_t type;		/* type */
     struct format_val printf_vec; /* printf fprintf fprint ls fls print0 fprint0 print */
+#ifdef WITH_SELINUX
+    security_context_t scontext; /* scontext */
+#endif
   } args;
 
   /* The next predicate in the user input sequence,
@@ -459,6 +465,9 @@ PREDICATEFUNCTION pred_used;
 PREDICATEFUNCTION pred_user;
 PREDICATEFUNCTION pred_writable;
 PREDICATEFUNCTION pred_xtype;
+#ifdef WITH_SELINUX
+PREDICATEFUNCTION pred_context;
+#endif
 
 
 
@@ -601,6 +610,10 @@ struct options
    */
   int regex_options;
 
+#ifdef WITH_SELINUX
+  int (*x_getfilecon) ();
+#endif
+
   /* Optimisation level.  One is the default. 
    */
   unsigned short optimisation_level;
diff --git a/find/find.1 b/find/find.1
index 8b67ae3..1d23b17 100644
--- a/find/find.1
+++ b/find/find.1
@@ -933,6 +933,8 @@ if \fIc\fR is `l'.  In other words, for symbolic links,
 checks the type of the file that 
 .B \-type
 does not check.
+.IP "\-context \fIpattern\fR"
+(SELinux only) Security context of the file matches glob \fIpattern\fR.
 
 .SS ACTIONS
 .IP "\-delete\fR"
@@ -1354,6 +1356,8 @@ File's type (like in
 U=unknown type (shouldn't happen)
 .IP %Y
 File's type (like %y), plus follow symlinks: L=loop, N=nonexistent
+.IP %Z
+(SELinux only) file's security context.
 .PP
 A `%' character followed by any other character is discarded, but the
 other character is printed (don't rely on this, as further format
diff --git a/find/find.c b/find/find.c
index 171988f..8aebeb8 100644
--- a/find/find.c
+++ b/find/find.c
@@ -120,6 +120,36 @@ int get_current_dirfd(void)
   return AT_FDCWD;
 }
 
+#ifdef WITH_SELINUX
+static int
+fallback_getfilecon(const char *name, security_context_t *p, int prev_rv)
+{
+  /* Our original getfilecon() call failed.  Perhaps we can't follow a
+   * symbolic link.  If that might be the problem, lgetfilecon() the link.
+   * Otherwise, admit defeat.
+   */
+  switch (errno)
+    {
+    case ENOENT:
+    case ENOTDIR:
+#ifdef DEBUG_STAT
+      fprintf(stderr, "fallback_getfilecon(): getfilecon(%s) failed; falling back on lgetfilecon()\n", name);
+#endif
+      return lgetfilecon(name, p);
+
+    case EACCES:
+    case EIO:
+    case ELOOP:
+    case ENAMETOOLONG:
+#ifdef EOVERFLOW
+    case EOVERFLOW:        /* EOVERFLOW is not #defined on UNICOS. */
+#endif
+    default:
+      return prev_rv;         
+    }
+}
+#endif /* WITH_SELINUX */
+
 
 int
 main (int argc, char **argv)
@@ -1270,7 +1300,7 @@ process_path (char *pathname, char *name, boolean leaf, char *parent,
 static void
 process_dir (char *pathname, char *name, int pathlen, const struct stat *statp, char *parent)
 {
-  int subdirs_left;		/* Number of unexamined subdirs in PATHNAME. */
+  int subdirs_left = 0;		/* Number of unexamined subdirs in PATHNAME. */
   boolean subdirs_unreliable;	/* if true, cannot use dir link count as subdir limif (if false, it may STILL be unreliable) */
   unsigned int idx;		/* Which entry are we on? */
   struct stat stat_buf;
diff --git a/find/parser.c b/find/parser.c
index 534b670..87f4098 100644
--- a/find/parser.c
+++ b/find/parser.c
@@ -53,6 +53,10 @@
 #include <unistd.h>
 #include <sys/stat.h>
 
+#ifdef WITH_SELINUX
+#include <selinux/selinux.h>
+#endif
+
 #if ENABLE_NLS
 # include <libintl.h>
 # define _(Text) gettext (Text)
@@ -155,6 +159,9 @@ static boolean parse_noignore_race PARAMS((const struct parser_table*, char *arg
 static boolean parse_warn          PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
 static boolean parse_xtype         PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
 static boolean parse_quit          PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
+#ifdef WITH_SELINUX
+static boolean parse_context       PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
+#endif
 
 boolean parse_print             PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
 
@@ -251,6 +258,9 @@ static struct parser_table const parse_table[] =
   PARSE_TEST       ("cmin",                  cmin),	     /* GNU */
   PARSE_TEST       ("cnewer",                cnewer),	     /* GNU */
   {ARG_TEST,       "ctime",                  parse_time, pred_ctime}, /* POSIX */
+#ifdef WITH_SELINUX
+  PARSE_TEST       ("context",               context),      /* GNU */
+#endif
   PARSE_POSOPT     ("daystart",              daystart),	     /* GNU */
   PARSE_ACTION     ("delete",                delete), /* GNU, Mac OS, FreeBSD */
   PARSE_OPTION     ("d",                     d), /* Mac OS X, FreeBSD, NetBSD, OpenBSD, but deprecated  in favour of -depth */
@@ -347,6 +357,89 @@ static struct parser_table const parse_table[] =
 static const char *first_nonoption_arg = NULL;
 static const struct parser_table *noop = NULL;
 
+#ifdef WITH_SELINUX
+static int
+fallback_getfilecon(const char *name, security_context_t *p, int prev_rv)
+{
+  /* Our original getfilecon() call failed.  Perhaps we can't follow a
+   * symbolic link.  If that might be the problem, lgetfilecon() the link.
+   * Otherwise, admit defeat.
+   */
+  switch (errno)
+    {
+    case ENOENT:
+    case ENOTDIR:
+#ifdef DEBUG_STAT
+      fprintf(stderr, "fallback_getfilecon(): getfilecon(%s) failed; falling back on lgetfilecon()\n", name);
+#endif
+      return lgetfilecon(name, p);
+
+    case EACCES:
+    case EIO:
+    case ELOOP:
+    case ENAMETOOLONG:
+#ifdef EOVERFLOW
+    case EOVERFLOW:        /* EOVERFLOW is not #defined on UNICOS. */
+#endif
+    default:
+      return prev_rv;         
+    }
+}
+
+/* optionh_getfilecon() implements the getfilecon operation when the
+ * -H option is in effect.
+ *
+ * If the item to be examined is a command-line argument, we follow
+ * symbolic links.  If the getfilecon() call fails on the command-line
+ * item, we fall back on the properties of the symbolic link.
+ *
+ * If the item to be examined is not a command-line argument, we
+ * examine the link itself.
+ */
+int
+optionh_getfilecon(const char *name, security_context_t *p)
+{
+  if (0 == state.curdepth)
+    {
+      /* This file is from the command line; deference the link (if it
+       * is a link).
+       */
+      int rv = getfilecon(name, p);
+      if (0 == rv)
+       return 0;               /* success */
+      else
+       return fallback_getfilecon(name, p, rv);
+    }
+  else
+    {
+      /* Not a file on the command line; do not derefernce the link.
+       */
+      return lgetfilecon(name, p);
+    }
+}
+/* optionl_getfilecon() implements the getfilecon operation when the
+ * -L option is in effect.  That option makes us examine the thing the
+ * symbolic link points to, not the symbolic link itself.
+ */
+int
+optionl_getfilecon(const char *name, security_context_t *p)
+{
+  int rv = getfilecon(name, p);
+  if (0 == rv)
+    return 0;                  /* normal case. */
+  else
+    return fallback_getfilecon(name, p, rv);
+}
+/* optionp_getfilecon() implements the stat operation when the -P
+ * option is in effect (this is also the default).  That option makes
+ * us examine the symbolic link itself, not the thing it points to.
+ */
+int
+optionp_getfilecon(const char *name, security_context_t *p)
+{
+  return lgetfilecon(name, p);
+}
+#endif /* WITH_SELINUX */
 
 void
 check_option_combinations(const struct predicate *p)
@@ -450,11 +543,17 @@ set_follow_state(enum SymlinkOption opt)
 	{
 	case SYMLINK_ALWAYS_DEREF:  /* -L */
 	  options.xstat = optionl_stat;
+#ifdef WITH_SELINUX
+	  options.x_getfilecon = optionl_getfilecon;
+#endif
 	  options.no_leaf_check = true;
 	  break;
 
 	case SYMLINK_NEVER_DEREF:	/* -P (default) */
 	  options.xstat = optionp_stat;
+#ifdef WITH_SELINUX
+	  options.x_getfilecon = optionp_getfilecon;
+#endif
 	  /* Can't turn no_leaf_check off because the user might have specified
 	   * -noleaf anyway
 	   */
@@ -462,6 +561,9 @@ set_follow_state(enum SymlinkOption opt)
 
 	case SYMLINK_DEREF_ARGSONLY: /* -H */
 	  options.xstat = optionh_stat;
+#ifdef WITH_SELINUX
+	  options.x_getfilecon = optionh_getfilecon;
+#endif
 	  options.no_leaf_check = true;
 	}
     }
@@ -1127,8 +1229,12 @@ tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N\n\
       -nouser -nogroup -path PATTERN -perm [+-]MODE -regex PATTERN\n\
       -readable -writable -executable\n\
       -wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N\n\
-      -used N -user NAME -xtype [bcdpfls]\n"));
+      -used N -user NAME -xtype [bcdpfls]"));
+#ifdef WITH_SELINUX
   puts (_("\
+      -context CONTEXT\n"));
+#endif
+  puts (_("\n\
 actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print \n\
       -fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit\n\
       -exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;\n\
@@ -2518,6 +2624,10 @@ parse_version (const struct parser_table* entry, char **argv, int *arg_ptr)
   printf("LEAF_OPTIMISATION ");
   ++features;
 #endif
+#if defined(WITH_SELINUX)
+  printf("SELINUX ");
+  ++features;
+#endif
 
   flags = 0;
   if (is_fts_enabled(&flags))
@@ -2552,6 +2662,32 @@ parse_version (const struct parser_table* entry, char **argv, int *arg_ptr)
   exit (0);
 }
 
+#ifdef WITH_SELINUX
+static boolean
+parse_context (const struct parser_table* entry, char **argv, int *arg_ptr)
+{
+  struct predicate *our_pred;
+
+  if ((argv == NULL) || (argv[*arg_ptr] == NULL))
+    return false;
+
+  if (is_selinux_enabled() <= 0)
+    {
+      error (1, 0, _("invalid predicate -context: SELinux is not enabled."));
+      return false;
+    }
+  our_pred = insert_primary (entry);
+  our_pred->need_stat = false;
+#ifdef DEBUG
+  our_pred->p_name = find_pred_name (pred_context);
+#endif /*DEBUG*/
+  our_pred->args.scontext = argv[*arg_ptr];
+
+  (*arg_ptr)++;
+  return true;
+}
+#endif /* WITH_SELINUX */
+
 static boolean
 parse_xdev (const struct parser_table* entry, char **argv, int *arg_ptr)
 {
@@ -2803,7 +2939,7 @@ insert_fprintf (struct format_val *vec,
 	  if (*scan2 == '.')
 	    for (scan2++; ISDIGIT (*scan2); scan2++)
 	      /* Do nothing. */ ;
-	  if (strchr ("abcdDfFgGhHiklmMnpPsStuUyY", *scan2))
+	  if (strchr ("abcdDfFgGhHiklmMnpPsStuUyYZ", *scan2))
 	    {
 	      segmentp = make_segment (segmentp, format, scan2 - format,
 				       KIND_FORMAT, *scan2, 0,
@@ -2930,6 +3066,7 @@ make_segment (struct segment **segment,
     case 'h':			/* leading directories part of path */
     case 'p':			/* pathname */
     case 'P':			/* pathname with ARGV element stripped */
+    case 'Z':			/* SELinux security context */
       *fmt++ = 's';
       break;
 
diff --git a/find/pred.c b/find/pred.c
index b1f48a0..f483492 100644
--- a/find/pred.c
+++ b/find/pred.c
@@ -48,6 +48,10 @@
 #include "error.h"
 #include "verify.h"
 
+#ifdef WITH_SELINUX
+#include <selinux/selinux.h>
+#endif /*WITH_SELINUX*/
+
 #if ENABLE_NLS
 # include <libintl.h>
 # define _(Text) gettext (Text)
@@ -230,6 +234,9 @@ struct pred_assoc pred_table[] =
   {pred_user, "user    "},
   {pred_writable, "writable "},
   {pred_xtype, "xtype   "},
+#ifdef WITH_SELINUX
+  {pred_context, "context"},
+#endif /*WITH_SELINUX*/
   {0, "none    "}
 };
 #endif
@@ -1054,6 +1061,27 @@ do_fprintf(struct format_val *dest,
 			     mode_to_filetype(stat_buf->st_mode & S_IFMT));
 	  }
 	  break;
+	case 'Z':               /* SELinux security context */
+#ifdef WITH_SELINUX
+         {
+           security_context_t scontext;
+           int rv;
+           rv = (*options.x_getfilecon) (state.rel_pathname, &scontext);
+
+           if (rv < 0)
+             {
+               fprintf (stderr, "getfilecon(%s): %s", pathname,
+                        strerror(errno));
+               fflush (stderr);
+             }
+           else
+             {
+               checked_fprintf (dest, segment->text, scontext);
+               freecon (scontext);
+             }
+         }
+#endif /* WITH_SELINUX */
+         break;
 	}
       /* end of KIND_FORMAT case */
       break;
@@ -1844,6 +1872,33 @@ pred_xtype (const char *pathname, struct stat *stat_buf, struct predicate *pred_
    */
   return (pred_type (pathname, &sbuf, pred_ptr));
 }
+  
+
+#ifdef WITH_SELINUX
+
+boolean
+pred_context (const char *pathname, struct stat *stat_buf,
+             struct predicate *pred_ptr)
+{
+  int rv;
+  security_context_t scontext;
+
+  rv = (*options.x_getfilecon) (state.rel_pathname, &scontext);
+
+  if (rv < 0)
+    {
+      fprintf (stderr, "getfilecon(%s): %s\n", pathname, strerror(errno));
+      fflush (stderr);
+      return false;
+    }
+
+  rv = (fnmatch (pred_ptr->args.scontext, scontext, 0) == 0);
+  freecon (scontext);
+  return rv;
+}
+
+#endif /*WITH_SELINUX*/
+
 
 /*  1) fork to get a child; parent remembers the child pid
     2) child execs the command requested
diff --git a/find/tree.c b/find/tree.c
index 7420c60..ba48f51 100644
--- a/find/tree.c
+++ b/find/tree.c
@@ -953,7 +953,8 @@ static struct pred_cost_lookup costlookup[] =
     { pred_used      ,  NeedsStatInfo        },
     { pred_user      ,  NeedsStatInfo        },
     { pred_writable  ,  NeedsAccessInfo      },
-    { pred_xtype     ,  NeedsType            } /* roughly correct unless most files are symlinks */
+    { pred_xtype     ,  NeedsType            }, /* roughly correct unless most files are symlinks */
+    { pred_context   ,  NeedsNothing         } /* remove warning only:) */
   };
 static int pred_table_sorted = 0;
 
@@ -1434,6 +1435,9 @@ get_new_pred (const struct parser_table *entry)
   last_pred->need_stat = true;
   last_pred->need_type = true;
   last_pred->args.str = NULL;
+#ifdef WITH_SELINUX
+  last_pred->args.scontext = NULL;
+#endif
   last_pred->pred_next = NULL;
   last_pred->pred_left = NULL;
   last_pred->pred_right = NULL;
-- 
1.7.0


--- End Message ---
--- Begin Message ---
Source: findutils
Source-Version: 4.5.7-1

We believe that the bug you reported is fixed in the latest version of
findutils, which is due to be installed in the Debian FTP archive:

findutils_4.5.7-1.debian.tar.gz
  to main/f/findutils/findutils_4.5.7-1.debian.tar.gz
findutils_4.5.7-1.dsc
  to main/f/findutils/findutils_4.5.7-1.dsc
findutils_4.5.7-1_i386.deb
  to main/f/findutils/findutils_4.5.7-1_i386.deb
findutils_4.5.7.orig.tar.gz
  to main/f/findutils/findutils_4.5.7.orig.tar.gz
locate_4.5.7-1_i386.deb
  to main/f/findutils/locate_4.5.7-1_i386.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Andreas Metzler <[email protected]> (supplier of updated findutils package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160

Format: 1.8
Date: Sat, 03 Apr 2010 19:32:46 +0200
Source: findutils
Binary: findutils locate
Architecture: source i386
Version: 4.5.7-1
Distribution: experimental
Urgency: low
Maintainer: Andreas Metzler <[email protected]>
Changed-By: Andreas Metzler <[email protected]>
Description: 
 findutils  - utilities for finding files--find, xargs
 locate     - maintain and query an index of a directory tree
Closes: 522389 565653 568490 572809
Changes: 
 findutils (4.5.7-1) experimental; urgency=low
 .
   * Use dh_installcron to install locate's cron script.
   * Stop suggesting slocate, it has been removed from the archive.
     Closes: #565653
   * New upstream development release.
     + includes patch for SELinux support (option -context and -printf '%Z').
       Closes: #572809
     + Correct error message for invalid arg to -ctime and other arguments
       ("invalid argument" istead of "missing argument"). Closes: #568490
     + Consistent documentation about (i)path/(i)wholename. Closes: #522389
   * Add libselinux1-dev to build-depends.
   * Ship find-maint.info.
   * [lintian] Drop leading asterisks in NEWS file.
   * Drop dpatch in favour of 3.0 (quilt).
   * Update debian/copyright.
   * Point watchfile to alpha.gnu.org.
Checksums-Sha1: 
 71d3f3a5b8240b674192963aacc7e00e7bc7109b 1275 findutils_4.5.7-1.dsc
 44e7edd4b5a03788da6635750ed3d42c1a10e3dc 2586270 findutils_4.5.7.orig.tar.gz
 69e5b79de3b86e0e02c327d274778466783c16a9 21165 findutils_4.5.7-1.debian.tar.gz
 8e8f3c3cd1a970548621d5bba7348eff582f0683 620154 findutils_4.5.7-1_i386.deb
 a2202f1f7ebcfe904771a478c58d494c78f042a2 168520 locate_4.5.7-1_i386.deb
Checksums-Sha256: 
 86119c0defa3b9dec8d39909b0a1626538ab6f3de1873cb33afce1e0a33a542d 1275 
findutils_4.5.7-1.dsc
 d856c115074fc2e74028d5d1b8ae890d2042239ae9516f8293cc9642a2adc11b 2586270 
findutils_4.5.7.orig.tar.gz
 98ee6993aba7417132baa72a8bf5f5c8c17aee3145d344e9a9ae924e3b80b12a 21165 
findutils_4.5.7-1.debian.tar.gz
 107907191b2a1fa9a0d345aedee300c2f57dcd06bd06892c3552fd8f83901213 620154 
findutils_4.5.7-1_i386.deb
 81e3dc3c67ccd8772c8b7a68247d6d578dee733850e558ee98439bf59f415a41 168520 
locate_4.5.7-1_i386.deb
Files: 
 f0dbcece31fd35529a9c857c2098ddef 1275 utils required findutils_4.5.7-1.dsc
 abe3035556f2b95a83cd4a99d1614e37 2586270 utils required 
findutils_4.5.7.orig.tar.gz
 af31c3c3e9e18b0628283c82c871aee1 21165 utils required 
findutils_4.5.7-1.debian.tar.gz
 2e2b5a841e9139b3e49c2f67a94343b0 620154 utils required 
findutils_4.5.7-1_i386.deb
 2de127f80e416ed9b209b953ca9c444f 168520 utils optional locate_4.5.7-1_i386.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEAREDAAYFAku3fNYACgkQHTOcZYuNdmMpOwCgqRBPkq/RgEKyvgk7VVb80IOW
kiMAnRuOZNGRGcohvFmxtd06S5GncSoh
=JLCS
-----END PGP SIGNATURE-----



--- End Message ---

Reply via email to