OBS User unknown 2006-12-18 23:15:28 +00:00 committed by Git OBS Bridge
commit d88e232f02
22 changed files with 7262 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

89
acl-test.diff Normal file
View File

@ -0,0 +1,89 @@
2006-12-13 Andreas Schwab <schwab@suse.de>
* tests/mv/acl (skip): Check for acl support in the file system.
* tests/mv/Makefile.am (XFAIL_TESTS): Remove.
(TESTS_ENVIRONMENT): Pass CONFIG_HEADER.
2006-12-12 Jim Meyering <jim@meyering.net>
* m4/acl.m4 (gl_ACL_GET_FILE): Fix logic error.
Reported by Andreas Schwab <schwab@suse.de>.
diff --git a/tests/mv/Makefile.am b/tests/mv/Makefile.am
index 57581cd..0a1f2db 100644
--- a/tests/mv/Makefile.am
+++ b/tests/mv/Makefile.am
@@ -20,7 +20,6 @@
AUTOMAKE_OPTIONS = 1.3 gnits
-XFAIL_TESTS = acl
TESTS = \
hard-verbose \
backup-dir \
@@ -48,4 +47,5 @@ TESTS_ENVIRONMENT = \
PERL="$(PERL)" \
EGREP="$(EGREP)" \
PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ CONFIG_HEADER=$(CONFIG_HEADER) \
PROG=mv
diff --git a/tests/mv/acl b/tests/mv/acl
index f570656..df3bb01 100755
--- a/tests/mv/acl
+++ b/tests/mv/acl
@@ -24,6 +24,13 @@
# Make sure we get English translations.
. $srcdir/../lang-default
+# Skip this test if cp was built without ACL support:
+grep '^#define USE_ACL 0' $CONFIG_HEADER > /dev/null && \
+ {
+ echo 1>&2 "$0: insufficient ACL support, so skipping this test"
+ (exit 77); exit 77
+ }
+
if test "$VERBOSE" = yes; then
set -x
mv --version
@@ -46,15 +53,26 @@ framework_failure=0
mkdir -p $tmp || framework_failure=1
cd $tmp || framework_failure=1
+touch file || framework_failure=1
+
if test $framework_failure = 1; then
echo 'failure in testing framework'
(exit 1); exit 1
fi
+skip=no
+# Ensure that setfacl and getfacl work on this file system.
+setfacl -m user:bin:rw file 2> /dev/null || skip=yes
+acl1=`getfacl file` || skip=yes
+
+test $skip = yes &&
+ {
+ echo "$0: '.' is not on a suitable file system for this test" 1>&2
+ echo "$0: skipping this test" 1>&2
+ (exit 77); exit 77
+ }
+
# move the access acl of a file
-touch file || framework_failure=1
-setfacl -m user:bin:rw file || framework_failure=1
-acl1=`getfacl file` || framework_failure=1
mv file $other_partition_tmpdir || fail=1
acl2=`cd $other_partition_tmpdir && getfacl file` || framework_failure=1
test "$acl1" = "$acl2" || fail=1
--- a/m4/acl.m4
+++ b/m4/acl.m4
@@ -53,7 +53,7 @@
#include <errno.h>
]],
[[return !! (!acl_get_file (".", ACL_TYPE_ACCESS)
- || errno == ENOENT);]])],
+ && errno == ENOENT);]])],
[gl_cv_func_working_acl_get_file=yes],
[gl_cv_func_working_acl_get_file=no],
[gl_cv_func_working_acl_get_file=cross-compiling])])

View File

@ -0,0 +1,38 @@
--- coreutils-5.3.0/src/su.c
+++ coreutils-5.3.0/src/su.c
@@ -521,6 +521,21 @@
}
/* child shell */
+
+ /* Export env variables declared by PAM modules */
+ {
+ const char *const *env;
+
+ env = (const char *const *) pam_getenvlist (pamh);
+ while (env && *env)
+ {
+
+ if (putenv (*env) != 0)
+ xalloc_die ();
+ env++;
+ }
+ }
+
pam_end (pamh, 0);
#endif
@@ -726,9 +741,12 @@
shell = NULL;
}
shell = xstrdup (shell ? shell : pw->pw_shell);
+ change_identity (pw);
+
+ /* Set environment after pam_open_session, which may put KRB5CCNAME
+ into the pam_env, etc. */
modify_environment (pw, shell);
- change_identity (pw);
if (simulate_login && chdir (pw->pw_dir) != 0)
error (0, errno, _("warning: cannot change directory to %s"), pw->pw_dir);

File diff suppressed because it is too large Load Diff

21
coreutils-5.3.0-pie.diff Normal file
View File

@ -0,0 +1,21 @@
--- lib/Makefile.am
+++ lib/Makefile.am
@@ -20,6 +20,7 @@
include gnulib.mk
AM_CFLAGS = $(WARNING_CFLAGS) $(WERROR_CFLAGS)
+AM_CFLAGS += -fpie
noinst_PROGRAMS = t-fpending
LDADD = $(noinst_LIBRARIES)
--- src/Makefile.am
+++ src/Makefile.am
@@ -105,6 +105,8 @@
su_SOURCES = su.c getdef.c
su_LDADD = $(LDADD) $(LIB_CRYPT) -lpam -lpam_misc -ldl
+su_CFLAGS = -fpie
+su_LDFLAGS = -pie
dir_LDADD += $(LIB_ACL)
ls_LDADD += $(LIB_ACL)

View File

@ -0,0 +1,143 @@
--- src/su.c
+++ src/su.c
@@ -344,6 +344,117 @@
#endif /* !USE_PAM */
}
+/* Add or clear /sbin and /usr/sbin for the su command
+ used without `-'. */
+
+/* Set if /sbin is found in path. */
+#define SBIN_MASK 0x01
+/* Set if /usr/sbin is found in path. */
+#define USBIN_MASK 0x02
+
+static char *
+addsbin (const char *const path)
+{
+ unsigned char smask = 0;
+ char *ptr, *tmp, *cur, *ret = NULL;
+ size_t len;
+
+ if (!path || *path == 0)
+ return NULL;
+
+ tmp = xstrdup (path);
+ cur = tmp;
+ for (ptr = strsep (&cur, ":"); ptr != NULL; ptr = strsep (&cur, ":"))
+ {
+ if (!strcmp (ptr, "/sbin"))
+ smask |= SBIN_MASK;
+ if (!strcmp (ptr, "/usr/sbin"))
+ smask |= USBIN_MASK;
+ }
+
+ if ((smask & (USBIN_MASK|SBIN_MASK)) == (USBIN_MASK|SBIN_MASK))
+ {
+ free (tmp);
+ return NULL;
+ }
+
+ len = strlen (path);
+ if (!(smask & USBIN_MASK))
+ len += strlen ("/usr/sbin:");
+
+ if (!(smask & SBIN_MASK))
+ len += strlen (":/sbin");
+
+ ret = xmalloc (len + 1);
+ strcpy (tmp, path);
+
+ *ret = 0;
+ cur = tmp;
+ for (ptr = strsep (&cur, ":"); ptr; ptr = strsep (&cur, ":"))
+ {
+ if (!strcmp (ptr, "."))
+ continue;
+ if (*ret)
+ strcat (ret, ":");
+ if (!(smask & USBIN_MASK) && !strcmp (ptr, "/bin"))
+ {
+ strcat (ret, "/usr/sbin:");
+ strcat (ret, ptr);
+ smask |= USBIN_MASK;
+ continue;
+ }
+ if (!(smask & SBIN_MASK) && !strcmp (ptr, "/usr/bin"))
+ {
+ strcat (ret, ptr);
+ strcat (ret, ":/sbin");
+ smask |= SBIN_MASK;
+ continue;
+ }
+ strcat (ret, ptr);
+ }
+ free (tmp);
+
+ if (!(smask & USBIN_MASK))
+ strcat (ret, ":/usr/sbin");
+
+ if (!(smask & SBIN_MASK))
+ strcat (ret, ":/sbin");
+
+ return ret;
+}
+
+static char *
+clearsbin (const char *const path)
+{
+ char *ptr, *tmp, *cur, *ret = NULL;
+
+ if (!path || *path == 0)
+ return NULL;
+
+ tmp = strdup (path);
+ if (!tmp)
+ return NULL;
+
+ ret = xmalloc (strlen (path) + 1);
+ *ret = 0;
+ cur = tmp;
+ for (ptr = strsep (&cur, ":"); ptr; ptr = strsep (&cur, ":"))
+ {
+ if (!strcmp (ptr, "/sbin"))
+ continue;
+ if (!strcmp (ptr, "/usr/sbin"))
+ continue;
+ if (!strcmp (ptr, "/usr/local/sbin"))
+ continue;
+ if (*ret)
+ strcat (ret, ":");
+ strcat (ret, ptr);
+ }
+ free (tmp);
+
+ return ret;
+}
+
/* Update `environ' for the new shell based on PW, with SHELL being
the value for the SHELL environment variable. */
@@ -383,6 +494,22 @@
DEFAULT_LOGIN_PATH)
: getdef_str ("SUPATH",
DEFAULT_ROOT_LOGIN_PATH)));
+ else
+ {
+ char const *path = getenv ("PATH");
+ char *new = NULL;
+
+ if (pw->pw_uid)
+ new = clearsbin (path);
+ else
+ new = addsbin (path);
+
+ if (new)
+ {
+ xsetenv ("PATH", new);
+ free (new);
+ }
+ }
if (pw->pw_uid)
{
xsetenv ("USER", pw->pw_name);

764
coreutils-6.7.diff Normal file
View File

@ -0,0 +1,764 @@
--- doc/coreutils.texi
+++ doc/coreutils.texi
@@ -64,8 +64,6 @@
* fold: (coreutils)fold invocation. Wrap long input lines.
* groups: (coreutils)groups invocation. Print group names a user is in.
* head: (coreutils)head invocation. Output the first part of files.
-* hostid: (coreutils)hostid invocation. Print numeric host identifier.
-* hostname: (coreutils)hostname invocation. Print or set system name.
* id: (coreutils)id invocation. Print user identity.
* install: (coreutils)install invocation. Copy and change attributes.
* join: (coreutils)join invocation. Join lines on a common field.
@@ -398,8 +396,6 @@
* date invocation:: Print or set system date and time
* uname invocation:: Print system information
-* hostname invocation:: Print or set system name
-* hostid invocation:: Print numeric host identifier.
@command{date}: Print or set system date and time
@@ -12190,8 +12186,6 @@
@menu
* date invocation:: Print or set system date and time.
* uname invocation:: Print system information.
-* hostname invocation:: Print or set system name.
-* hostid invocation:: Print numeric host identifier.
@end menu
@@ -12949,55 +12943,6 @@
@exitstatus
-@node hostname invocation
-@section @command{hostname}: Print or set system name
-
-@pindex hostname
-@cindex setting the hostname
-@cindex printing the hostname
-@cindex system name, printing
-@cindex appropriate privileges
-
-With no arguments, @command{hostname} prints the name of the current host
-system. With one argument, it sets the current host name to the
-specified string. You must have appropriate privileges to set the host
-name. Synopsis:
-
-@example
-hostname [@var{name}]
-@end example
-
-The only options are @option{--help} and @option{--version}. @xref{Common
-options}.
-
-@exitstatus
-
-
-@node hostid invocation
-@section @command{hostid}: Print numeric host identifier.
-
-@pindex hostid
-@cindex printing the host identifier
-
-@command{hostid} prints the numeric identifier of the current host
-in hexadecimal. This command accepts no arguments.
-The only options are @option{--help} and @option{--version}.
-@xref{Common options}.
-
-For example, here's what it prints on one system I use:
-
-@example
-$ hostid
-1bac013d
-@end example
-
-On that system, the 32-bit quantity happens to be closely
-related to the system's Internet address, but that isn't always
-the case.
-
-@exitstatus
-
-
@node Modified command invocation
@chapter Modified command invocation
--- src/Makefile.am
+++ src/Makefile.am
@@ -103,7 +103,8 @@
# If necessary, add -lm to resolve use of pow in lib/strtod.c.
uptime_LDADD = $(LDADD) $(POW_LIB) $(GETLOADAVG_LIBS)
-su_LDADD = $(LDADD) $(LIB_CRYPT)
+su_SOURCES = su.c getdef.c
+su_LDADD = $(LDADD) $(LIB_CRYPT) -lpam -lpam_misc -ldl
dir_LDADD += $(LIB_ACL)
ls_LDADD += $(LIB_ACL)
--- src/getdef.c
+++ src/getdef.c
@@ -0,0 +1,257 @@
+/* Copyright (C) 2003, 2004, 2005 Thorsten Kukuk
+ Author: Thorsten Kukuk <kukuk@suse.de>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#define _GNU_SOURCE
+
+#include <errno.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+
+#include "getdef.h"
+
+struct item {
+ char *name; /* name of the option. */
+ char *value; /* value of the option. */
+ struct item *next; /* pointer to next option. */
+};
+
+static struct item *list = NULL;
+
+void
+free_getdef_data (void)
+{
+ struct item *ptr;
+
+ ptr = list;
+ while (ptr != NULL)
+ {
+ struct item *tmp;
+ tmp = ptr->next;
+ free (ptr->name);
+ free (ptr->value);
+ free (ptr);
+ ptr = tmp;
+ }
+
+ list = NULL;
+}
+
+/* Add a new entry to the list. */
+static void
+store (const char *name, const char *value)
+{
+ struct item *new = malloc (sizeof (struct item));
+
+ if (new == NULL)
+ abort ();
+
+ if (name == NULL)
+ abort ();
+
+ new->name = strdup (name);
+ new->value = strdup (value?:"");
+ new->next = list;
+ list = new;
+}
+
+/* search a special entry in the list and return the value. */
+static const char *
+search (const char *name)
+{
+ struct item *ptr;
+
+ ptr = list;
+ while (ptr != NULL)
+ {
+ if (strcasecmp (name, ptr->name) == 0)
+ return ptr->value;
+ ptr = ptr->next;
+ }
+
+ return NULL;
+}
+
+/* Load the login.defs file (/etc/login.defs) */
+static void
+load_defaults_internal (const char *filename)
+{
+ FILE *fp;
+ char *buf = NULL;
+ size_t buflen = 0;
+
+ fp = fopen (filename, "r");
+ if (NULL == fp)
+ return;
+
+ while (!feof (fp))
+ {
+ char *tmp, *cp;
+#if defined(HAVE_GETLINE)
+ ssize_t n = getline (&buf, &buflen, fp);
+#elif defined (HAVE_GETDELIM)
+ ssize_t n = getdelim (&buf, &buflen, '\n', fp);
+#else
+ ssize_t n;
+
+ if (buf == NULL)
+ {
+ buflen = 8096;
+ buf = malloc (buflen);
+ }
+ buf[0] = '\0';
+ fgets (buf, buflen - 1, fp);
+ if (buf != NULL)
+ n = strlen (buf);
+ else
+ n = 0;
+#endif /* HAVE_GETLINE / HAVE_GETDELIM */
+ cp = buf;
+
+ if (n < 1)
+ break;
+
+ tmp = strchr (cp, '#'); /* remove comments */
+ if (tmp)
+ *tmp = '\0';
+ while (isspace ((int)*cp)) /* remove spaces and tabs */
+ ++cp;
+ if (*cp == '\0') /* ignore empty lines */
+ continue;
+
+ if (cp[strlen (cp) - 1] == '\n')
+ cp[strlen (cp) - 1] = '\0';
+
+ tmp = strsep (&cp, " \t=");
+ if (cp != NULL)
+ while (isspace ((int)*cp) || *cp == '=')
+ ++cp;
+
+ store (tmp, cp);
+ }
+ fclose (fp);
+
+ if (buf)
+ free (buf);
+}
+
+static void
+load_defaults (void)
+{
+ load_defaults_internal ("/etc/default/su");
+ load_defaults_internal ("/etc/login.defs");
+}
+
+int
+getdef_bool (const char *name, int dflt)
+{
+ const char *val;
+
+ if (list == NULL)
+ load_defaults ();
+
+ val = search (name);
+
+ if (val == NULL)
+ return dflt;
+
+ return (strcasecmp (val, "yes") == 0);
+}
+
+long
+getdef_num (const char *name, long dflt)
+{
+ const char *val;
+ char *cp;
+ long retval;
+
+ if (list == NULL)
+ load_defaults ();
+
+ val = search (name);
+
+ if (val == NULL)
+ return dflt;
+
+ retval = strtol (val, &cp, 0);
+ if (*cp != '\0' ||
+ ((retval == LONG_MAX || retval == LONG_MIN) && errno == ERANGE))
+ {
+ fprintf (stderr,
+ "%s contains invalid numerical value: %s!\n",
+ name, val);
+ retval = dflt;
+ }
+ return retval;
+}
+
+unsigned long
+getdef_unum (const char *name, unsigned long dflt)
+{
+ const char *val;
+ char *cp;
+ unsigned long retval;
+
+ if (list == NULL)
+ load_defaults ();
+
+ val = search (name);
+
+ if (val == NULL)
+ return dflt;
+
+ retval = strtoul (val, &cp, 0);
+ if (*cp != '\0' || (retval == ULONG_MAX && errno == ERANGE))
+ {
+ fprintf (stderr,
+ "%s contains invalid numerical value: %s!\n",
+ name, val);
+ retval = dflt;
+ }
+ return retval;
+}
+
+const char *
+getdef_str (const char *name, const char *dflt)
+{
+ const char *retval;
+
+ if (list == NULL)
+ load_defaults ();
+
+ retval = search (name);
+
+ return retval ?: dflt;
+}
+
+#if defined(TEST)
+
+int
+main ()
+{
+ printf ("CYPT=%s\n", getdef_str ("cRypt", "no"));
+ printf ("LOG_UNKFAIL_ENAB=%s\n", getdef_str ("log_unkfail_enab",""));
+ printf ("DOESNOTEXIST=%s\n", getdef_str ("DOESNOTEXIST","yes"));
+ return 0;
+}
+
+#endif
--- src/getdef.h
+++ src/getdef.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2003, 2005 Thorsten Kukuk
+ Author: Thorsten Kukuk <kukuk@suse.de>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef _GETDEF_H_
+
+#define _GETDEF_H_ 1
+
+extern int getdef_bool (const char *name, int dflt);
+extern long getdef_num (const char *name, long dflt);
+extern unsigned long getdef_unum (const char *name, unsigned long dflt);
+extern const char *getdef_str (const char *name, const char *dflt);
+
+/* Free all data allocated by getdef_* calls before. */
+extern void free_getdef_data (void);
+
+#endif /* _GETDEF_H_ */
--- src/install.c
+++ src/install.c
@@ -572,7 +572,8 @@
while (pid != wait (&status)) /* Wait for kid to finish. */
/* Do nothing. */ ;
if (status)
- error (EXIT_FAILURE, 0, _("strip failed"));
+ /* Don't fail just because `strip' failed. */
+ error (0, 0, _("strip failed"));
break;
}
}
--- src/su.c
+++ src/su.c
@@ -38,6 +38,12 @@
restricts who can su to UID 0 accounts. RMS considers that to
be fascist.
+ Actually, with PAM, su has nothing to do with whether or not a
+ wheel group is enforced by su. RMS tries to restrict your access
+ to a su which implements the wheel group, but PAM considers that
+ to be fascist, and gives the user/sysadmin the opportunity to
+ enforce a wheel group by proper editing of /etc/pam.d/su
+
Compile-time options:
-DSYSLOG_SUCCESS Log successful su's (by default, to root) with syslog.
-DSYSLOG_FAILURE Log failed su's (by default, to root) with syslog.
@@ -53,6 +59,13 @@
#include <sys/types.h>
#include <pwd.h>
#include <grp.h>
+#ifdef USE_PAM
+#include <security/pam_appl.h>
+#include <security/pam_misc.h>
+#include <signal.h>
+#include <sys/wait.h>
+#include <sys/fsuid.h>
+#endif
/* Hide any system prototype for getusershell.
This is necessary because some Cray systems have a conflicting
@@ -66,6 +79,9 @@
#if HAVE_SYSLOG_H && HAVE_SYSLOG
# include <syslog.h>
+# define SYSLOG_SUCCESS 1
+# define SYSLOG_FAILURE 1
+# define SYSLOG_NON_ROOT 1
#else
# undef SYSLOG_SUCCESS
# undef SYSLOG_FAILURE
@@ -99,19 +115,13 @@
# include <paths.h>
#endif
+#include "getdef.h"
+
/* The default PATH for simulated logins to non-superuser accounts. */
-#ifdef _PATH_DEFPATH
-# define DEFAULT_LOGIN_PATH _PATH_DEFPATH
-#else
-# define DEFAULT_LOGIN_PATH ":/usr/ucb:/bin:/usr/bin"
-#endif
+#define DEFAULT_LOGIN_PATH "/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin"
/* The default PATH for simulated logins to superuser accounts. */
-#ifdef _PATH_DEFPATH_ROOT
-# define DEFAULT_ROOT_LOGIN_PATH _PATH_DEFPATH_ROOT
-#else
-# define DEFAULT_ROOT_LOGIN_PATH "/usr/ucb:/bin:/usr/bin:/etc"
-#endif
+#define DEFAULT_ROOT_LOGIN_PATH "/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin"
/* The shell to run if none is given in the user's passwd entry. */
#define DEFAULT_SHELL "/bin/sh"
@@ -119,7 +129,9 @@
/* The user to become if none is specified. */
#define DEFAULT_USER "root"
+#ifndef USE_PAM
char *crypt ();
+#endif
char *getusershell ();
void endusershell ();
void setusershell ();
@@ -216,7 +228,26 @@
}
#endif
+#ifdef USE_PAM
+
+static pam_handle_t *pamh = NULL;
+static int retval;
+static struct pam_conv conv =
+{
+ misc_conv,
+ NULL
+};
+
+#define PAM_BAIL_P(a) \
+ if (retval) \
+ { \
+ pam_end (pamh, PAM_SUCCESS); \
+ a; \
+ }
+#endif
+
/* Ask the user for a password.
+ If PAM is in use, let PAM ask for the password if necessary.
Return true if the user gives the correct password for entry PW,
false if not. Return true without asking for a password if run by UID 0
or if PW has an empty password. */
@@ -224,10 +255,49 @@
static bool
correct_password (const struct passwd *pw)
{
+#ifdef USE_PAM
+ const struct passwd *lpw;
+ const char *cp;
+
+ retval = pam_start ("su", pw->pw_name, &conv, &pamh);
+ PAM_BAIL_P (return false);
+
+ if (isatty (0) && (cp = ttyname (0)) != NULL)
+ {
+ const char *tty;
+
+ if (strncmp (cp, "/dev/", 5) == 0)
+ tty = cp + 5;
+ else
+ tty = cp;
+ retval = pam_set_item (pamh, PAM_TTY, tty);
+ PAM_BAIL_P (return false);
+ }
+ cp = getlogin ();
+ if (!(cp && *cp && (lpw = getpwnam (cp)) != NULL && lpw->pw_uid == getuid ()))
+ lpw = getpwuid (getuid ());
+ if (lpw)
+ {
+ retval = pam_set_item (pamh, PAM_RUSER, (const void *) lpw->pw_name);
+ PAM_BAIL_P (return false);
+ }
+ retval = pam_authenticate (pamh, 0);
+ PAM_BAIL_P (return false);
+ retval = pam_acct_mgmt (pamh, 0);
+ if (retval == PAM_NEW_AUTHTOK_REQD)
+ {
+ /* password has expired. Offer option to change it. */
+ retval = pam_chauthtok (pamh, PAM_CHANGE_EXPIRED_AUTHTOK);
+ PAM_BAIL_P (return false);
+ }
+ PAM_BAIL_P (return false);
+ /* must be authenticated if this point was reached */
+ return true;
+#else /* !USE_PAM */
char *unencrypted, *encrypted, *correct;
#if HAVE_GETSPNAM && HAVE_STRUCT_SPWD_SP_PWDP
/* Shadow passwd stuff for SVR3 and maybe other systems. */
- struct spwd *sp = getspnam (pw->pw_name);
+ const struct spwd *sp = getspnam (pw->pw_name);
endspent ();
if (sp)
@@ -248,6 +318,7 @@
encrypted = crypt (unencrypted, correct);
memset (unencrypted, 0, strlen (unencrypted));
return STREQ (encrypted, correct);
+#endif /* !USE_PAM */
}
/* Update `environ' for the new shell based on PW, with SHELL being
@@ -272,8 +343,8 @@
xsetenv ("USER", pw->pw_name);
xsetenv ("LOGNAME", pw->pw_name);
xsetenv ("PATH", (pw->pw_uid
- ? DEFAULT_LOGIN_PATH
- : DEFAULT_ROOT_LOGIN_PATH));
+ ? getdef_str ("PATH", DEFAULT_LOGIN_PATH)
+ : getdef_str ("SUPATH", DEFAULT_ROOT_LOGIN_PATH)));
}
else
{
@@ -283,6 +354,12 @@
{
xsetenv ("HOME", pw->pw_dir);
xsetenv ("SHELL", shell);
+ if (getdef_bool ("ALWAYS_SET_PATH", 0))
+ xsetenv ("PATH", (pw->pw_uid
+ ? getdef_str ("PATH",
+ DEFAULT_LOGIN_PATH)
+ : getdef_str ("SUPATH",
+ DEFAULT_ROOT_LOGIN_PATH)));
if (pw->pw_uid)
{
xsetenv ("USER", pw->pw_name);
@@ -303,12 +380,35 @@
error (EXIT_FAIL, errno, _("cannot set groups"));
endgrent ();
#endif
+#ifdef USE_PAM
+ retval = pam_setcred (pamh, PAM_ESTABLISH_CRED);
+ if (retval != PAM_SUCCESS)
+ error (EXIT_FAIL, 0, "%s", pam_strerror (pamh, retval));
+
+ retval = pam_open_session (pamh,0);
+ if (retval != PAM_SUCCESS)
+ {
+ pam_setcred (pamh, PAM_DELETE_CRED);
+ error (EXIT_FAIL, 0, "could not open session: %s",
+ pam_strerror (pamh, retval));
+ }
+#endif /* USE_PAM */
if (setgid (pw->pw_gid))
error (EXIT_FAIL, errno, _("cannot set group id"));
if (setuid (pw->pw_uid))
error (EXIT_FAIL, errno, _("cannot set user id"));
}
+#ifdef USE_PAM
+static bool caught = false;
+/* Signal handler for parent process later */
+static void
+su_catch_sig (int sig)
+{
+ caught = true;
+}
+#endif
+
/* Run SHELL, or DEFAULT_SHELL if SHELL is empty.
If COMMAND is nonzero, pass it to the shell with the -c option.
Pass ADDITIONAL_ARGS to the shell as more arguments; there
@@ -321,6 +421,88 @@
size_t n_args = 1 + fast_startup + 2 * !!command + n_additional_args + 1;
char const **args = xnmalloc (n_args, sizeof *args);
size_t argno = 1;
+#ifdef USE_PAM
+ pid_t child;
+ sigset_t ourset;
+ int status;
+
+ child = fork ();
+ if (child == (pid_t) -1)
+ error (EXIT_FAILURE, errno, "cannot fork");
+
+ if (child != 0)
+ {
+ /* parent only */
+ sigfillset (&ourset);
+ if (sigprocmask (SIG_BLOCK, &ourset, NULL))
+ {
+ error (0, errno, "cannot block signals");
+ caught = true;
+ }
+ if (!caught)
+ {
+ struct sigaction action;
+ action.sa_handler = su_catch_sig;
+ sigemptyset (&action.sa_mask);
+ action.sa_flags = 0;
+ sigemptyset (&ourset);
+ if (sigaddset (&ourset, SIGTERM)
+ || sigaddset (&ourset, SIGALRM)
+ || sigaction (SIGTERM, &action, NULL)
+ || sigprocmask (SIG_UNBLOCK, &ourset, NULL))
+ {
+ error (0, errno, "cannot set signal handler");
+ caught = true;
+ }
+ }
+ if (!caught)
+ {
+ for (;;)
+ {
+ pid_t pid;
+
+ pid = waitpid (child, &status, WUNTRACED);
+
+ if (WIFSTOPPED (status))
+ {
+ kill (getpid (), SIGSTOP);
+ /* once we get here, we must have resumed */
+ kill (pid, SIGCONT);
+ }
+ else
+ break;
+ }
+ if (WIFSIGNALED (status))
+ status = WTERMSIG (status) + 128;
+ else
+ status = WEXITSTATUS (status);
+ }
+ else
+ status = 1;
+
+ if (caught)
+ {
+ fprintf (stderr, "\nSession terminated, killing shell...");
+ kill (child, SIGTERM);
+ }
+ retval = pam_setcred (pamh, PAM_DELETE_CRED);
+ PAM_BAIL_P (exit (EXIT_FAILURE));
+ retval = pam_close_session (pamh, 0);
+ PAM_BAIL_P (exit (EXIT_FAILURE));
+ retval = pam_end (pamh, PAM_SUCCESS);
+ PAM_BAIL_P (exit (EXIT_FAILURE));
+ if (caught)
+ {
+ sleep (2);
+ kill (child, SIGKILL);
+ fprintf (stderr, " ...killed.\n");
+ }
+ exit (status);
+ }
+
+ /* child shell */
+ pam_end (pamh, 0);
+#endif
if (simulate_login)
{
@@ -339,6 +521,11 @@
args[argno++] = "-f";
if (command)
{
+ if (simulate_login)
+ /* Bash 2.0 have to be invoked as `-su'. See the comments in
+ `shell.c (run_startup_files)'. */
+ args[0] = "-su";
+
args[argno++] = "-c";
args[argno++] = command;
}
@@ -495,6 +682,9 @@
#ifdef SYSLOG_FAILURE
log_su (pw, false);
#endif
+#ifdef USE_PAM
+ sleep (getdef_num ("FAIL_DELAY", 1));
+#endif
error (EXIT_FAIL, 0, _("incorrect password"));
}
#ifdef SYSLOG_SUCCESS
--- src/system.h
+++ src/system.h
@@ -173,7 +173,7 @@
# define DEV_BSIZE BBSIZE
#endif
#ifndef DEV_BSIZE
-# define DEV_BSIZE 4096
+# define DEV_BSIZE 512
#endif
/* Extract or fake data from a `struct stat'.
--- tests/help-version
+++ tests/help-version
@@ -190,7 +190,7 @@
for i in $all_programs; do
# Skip these.
- case $i in chroot|stty|tty|false) continue;; esac
+ case $i in chroot|stty|tty|false|df) continue;; esac
rm -rf $tmp_in $tmp_in2 $tmp_dir $tmp_out
echo > $tmp_in
--- tests/other-fs-tmpdir
+++ tests/other-fs-tmpdir
@@ -44,6 +44,8 @@
fi
done
+# Autobuild hack
+test -f /bin/uname.bin && other_partition_tmpdir=
if test -z "$other_partition_tmpdir"; then
cat <<EOF 1>&2

3
coreutils-6.7.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4d7027cc803682decdadf850095dce7e22cc08eba2b1283e16d0fb7a675ac1f0
size 5315342

44
coreutils-changelog.diff Normal file
View File

@ -0,0 +1,44 @@
2005-10-20 Andreas Gruenbacher <agruen@suse.de>
* Add support for access control lists and extended attributes
(see below).
* lib/acl.h: Remove HAVE_ACL symbol; <sys/acl.h> is needed for POSIX
ACLs even if there is no acl system call.
* lib/acl.c (file_has_acl, copy_acl, set_acl): Add Linux/POSIX ACL
implementation.
* src/copy.c (get_dest_mode): Remove, no longer correct with acls.
* src/copy.c (copy_internal): Check effective permissions after
mkdir(). Add S_IRWXU only after saving the default permissions,
so that the default permissions can be restored. This is needed
with POSIX 1003.1e draft 17 acls. Add dst_mode and dst_mode_valid,
which are set when the destination file mode is changed
temporarily. Remove obsolete ran_chown.
* src/copy.c (copy_internal): Use copy_acl and set_acl instead of
chmod.
* src/copy.c: Add --attributes option for controlling which extended
attributes to copy.
* src/cp.c (make_path_private): Remove the mode parameter. Pass in
cp_options, instead of cp_options->xstat only. Stat the source dir,
and create the destination dir with the source dir's mode as create
mode (see analog change to src/copy.c (copy_internal)). Check if the
effective permissions include S_IRWXU. Remember the original mode
only if needed later.
* src/cp.c, src/install.c, src/mv.c, src/copy.h: Remove umask_kill,
and never change the startup umask. The functions creating files
need the original umask to create the correct permissions inside
directories with default ACLs.
* src/cp.c (struct dir_attr, re_protect, make_path_private): Replace
is_new_dir by mode and mode_valid variables.
* src/ls.c: change `HAVE_ACL' to `USE_ACL' for POSIX ACLs: POSIX ACLs
have no acl syscall.

58
coreutils-sysinfo.diff Normal file
View File

@ -0,0 +1,58 @@
--- coreutils-5.90/src/uname.c
+++ coreutils-5.90/src/uname.c
@@ -287,6 +287,36 @@
# endif
}
#endif
+ if (element == unknown)
+ {
+ struct utsname name;
+ static char processor[sizeof (name.machine)];
+ if (uname (&name) != 0)
+ error (EXIT_FAILURE, errno, _("cannot get system name"));
+ strcpy (processor, name.machine);
+ element = processor;
+#ifdef __linux__
+ if (!strcmp (element, "i686"))
+ {
+ /* Check for Athlon */
+ char line[1024];
+ FILE *f = fopen ("/proc/cpuinfo", "r");
+ if (f)
+ {
+ while (fgets (line, sizeof (line), f) > 0)
+ {
+ if (strncmp (line, "vendor_id", 9) == 0)
+ {
+ if (strstr (line, "AuthenticAMD"))
+ element = "athlon";
+ break;
+ }
+ }
+ fclose (f);
+ }
+ }
+#endif
+ }
if (! (toprint == UINT_MAX && element == unknown))
print_element (element);
}
@@ -312,6 +342,18 @@
element = hardware_platform;
}
#endif
+ if (element == unknown)
+ {
+ struct utsname name;
+ static char hardware_platform[sizeof (name.machine)];
+ if (uname (&name) != 0)
+ error (EXIT_FAILURE, errno, _("cannot get system name"));
+ strcpy (hardware_platform, name.machine);
+ if (hardware_platform[0] == 'i' && hardware_platform[2] == '8'
+ && hardware_platform[3] == '6' && hardware_platform[4] == 0)
+ hardware_platform[1] = '3';
+ element = hardware_platform;
+ }
if (! (toprint == UINT_MAX && element == unknown))
print_element (element);
}

321
coreutils-xattr.diff Normal file
View File

@ -0,0 +1,321 @@
Index: coreutils-6.2/configure.ac
===================================================================
--- coreutils-6.2.orig/configure.ac
+++ coreutils-6.2/configure.ac
@@ -246,6 +246,9 @@ AC_CHECK_DECLS([strtoimax, strtoumax])
cu_LIB_CHECK
+# Extended attribute copying.
+AC_FUNC_XATTR
+
AM_GNU_GETTEXT([external], [need-formatstring-macros])
AM_GNU_GETTEXT_VERSION([0.15])
Index: coreutils-6.2/m4/xattr.m4
===================================================================
--- /dev/null
+++ coreutils-6.2/m4/xattr.m4
@@ -0,0 +1,38 @@
+# xattr.m4 - check for Extended Attributes (Linux)
+
+# Copyright (C) 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+# Written by Andreas Gruenbacher.
+
+AC_DEFUN([AC_FUNC_XATTR],
+[
+ AC_CHECK_HEADERS(attr/error_context.h attr/libattr.h)
+ if test "$ac_cv_header_attr_libattr_h" = yes \
+ && test "$ac_cv_header_attr_error_context_h" = yes; then
+ use_xattr=1
+ else
+ use_xattr=0
+ fi
+ AC_DEFINE_UNQUOTED(USE_XATTR, $use_xattr,
+ [Define if you want extended attribute support.])
+ xattr_saved_LIBS=$LIBS
+ AC_SEARCH_LIBS(attr_copy_file, attr,
+ [test "$ac_cv_search_attr_copy_file" = "none required" || LIB_XATTR=$ac_cv_search_attr_copy_file])
+ AC_SUBST(LIB_XATTR)
+ AC_CHECK_FUNCS(attr_copy_file)
+ LIBS=$xattr_saved_LIBS
+])
Index: coreutils-6.2/src/Makefile.am
===================================================================
--- coreutils-6.2.orig/src/Makefile.am
+++ coreutils-6.2/src/Makefile.am
@@ -112,6 +112,10 @@ cp_LDADD += $(LIB_ACL)
mv_LDADD += $(LIB_ACL)
ginstall_LDADD += $(LIB_ACL)
+cp_LDADD += $(LIB_XATTR)
+mv_LDADD += $(LIB_XATTR)
+ginstall_LDADD += $(LIB_XATTR)
+
$(PROGRAMS): ../lib/libcoreutils.a
SUFFIXES = .sh
Index: coreutils-6.2/src/copy.c
===================================================================
--- coreutils-6.2.orig/src/copy.c
+++ coreutils-6.2/src/copy.c
@@ -53,6 +53,12 @@
#include "xreadlink.h"
#include "yesno.h"
+#if USE_XATTR
+# include <stdarg.h>
+# include <attr/error_context.h>
+# include <attr/libattr.h>
+#endif
+
#ifndef HAVE_FCHOWN
# define HAVE_FCHOWN false
# define fchown(fd, uid, gid) (-1)
@@ -118,6 +124,98 @@ is_ancestor (const struct stat *sb, cons
return false;
}
+#if USE_XATTR
+static void
+copy_xattr_error (struct error_context *ctx, const char *fmt, ...)
+{
+ int err = errno;
+ va_list ap;
+ int len;
+ char *buffer;
+
+ /* There is no error function that takes a va_list argument,
+ so we print the message in a buffer first. */
+
+ va_start (ap, fmt);
+ len = vsnprintf (NULL, 0, fmt, ap);
+ va_end (ap);
+ if (len > 0)
+ {
+ buffer = xmalloc (len + 1);
+ va_start (ap, fmt);
+ vsnprintf (buffer, len + 1, fmt, ap);
+ va_end (ap);
+ error (0, err, "%s", buffer);
+ free (buffer);
+ }
+}
+
+static const char *
+copy_xattr_quote (struct error_context *ctx, const char *str)
+{
+ return xstrdup (quote (str));
+}
+
+static void
+copy_xattr_free (struct error_context *ctx, const char *str)
+{
+ free ((void *) str);
+}
+
+struct copy_xattr_context {
+ struct error_context ctx;
+ struct cp_options *x;
+};
+
+static int
+copy_xattr_filter (const char *name, struct error_context *ctx)
+{
+ struct copy_xattr_context *copy_ctx = (struct copy_xattr_context *) ctx;
+ int action;
+
+ /* We handle POSIX ACLs separately. */
+ if (!strcmp(name, "system.posix_acl_access")
+ || !strcmp(name, "system.posix_acl_default"))
+ return 0;
+
+ action = attr_copy_action(name, ctx);
+ return (action != ATTR_ACTION_SKIP &&
+ (!copy_ctx->x->preserve_mode
+ || action != ATTR_ACTION_PERMISSIONS));
+}
+#endif /* USE_XATTR */
+
+static bool
+copy_xattrs (const char *src_path, int source_desc, const char *dst_path,
+ int dest_desc, const struct cp_options *x)
+{
+ struct copy_xattr_context copy_xattr_ctx = {
+ { copy_xattr_error,
+ copy_xattr_quote,
+ copy_xattr_free },
+ x
+ };
+
+#if USE_XATTR
+ if (x->preserve_xattrs)
+ {
+ int ret;
+
+ if (source_desc != -1 && dest_desc != -1)
+ ret = attr_copy_fd(src_path, source_desc, dst_path, dest_desc,
+ copy_xattr_filter, &copy_xattr_ctx.ctx);
+ else
+ ret = attr_copy_file (src_path, dst_path,
+ copy_xattr_filter, &copy_xattr_ctx.ctx);
+ return ret == 0 || !x->require_preserve;
+ }
+ else
+ return true;
+#else /* USE_XATTR */
+ return true;
+#endif /* USE_XATTR */
+}
+
/* Read the contents of the directory SRC_NAME_IN, and recursively
copy the contents to DST_NAME_IN. NEW_DST is true if
DST_NAME_IN is a directory that was created previously in the
@@ -509,6 +607,9 @@ copy_reg (char const *src_name, char con
}
}
+ if (!copy_xattrs (src_name, source_desc, dst_name, dest_desc, x))
+ return_val = false;
+
set_author (dst_name, dest_desc, src_sb);
if (x->preserve_mode || x->move_mode)
@@ -1755,6 +1856,9 @@ copy_internal (char const *src_name, cha
return false;
}
+ if (!copy_xattrs (src_name, -1, dst_name, -1, x))
+ delayed_ok = false;
+
set_author (dst_name, -1, &src_sb);
if (x->preserve_mode || x->move_mode)
Index: coreutils-6.2/src/copy.h
===================================================================
--- coreutils-6.2.orig/src/copy.h
+++ coreutils-6.2/src/copy.h
@@ -128,6 +128,9 @@ struct cp_options
bool preserve_mode;
bool preserve_timestamps;
+ /* If true, attempt to copy extended attributes. */
+ bool preserve_xattrs;
+
/* Enabled for mv, and for cp by the --preserve=links option.
If true, attempt to preserve in the destination files any
logical hard links between the source files. If used with cp's
Index: coreutils-6.2/src/cp.c
===================================================================
--- coreutils-6.2.orig/src/cp.c
+++ coreutils-6.2/src/cp.c
@@ -191,7 +191,7 @@ Mandatory arguments to long options are
-p same as --preserve=mode,ownership,timestamps\n\
--preserve[=ATTR_LIST] preserve the specified attributes (default:\n\
mode,ownership,timestamps), if possible\n\
- additional attributes: links, all\n\
+ additional attributes: links, xattrs, all\n\
"), stdout);
fputs (_("\
--no-preserve=ATTR_LIST don't preserve the specified attributes\n\
@@ -724,6 +724,7 @@ cp_option_init (struct cp_options *x)
x->preserve_links = false;
x->preserve_mode = false;
x->preserve_timestamps = false;
+ x->preserve_xattrs = false;
x->require_preserve = false;
x->recursive = false;
@@ -752,18 +753,21 @@ decode_preserve_arg (char const *arg, st
PRESERVE_TIMESTAMPS,
PRESERVE_OWNERSHIP,
PRESERVE_LINK,
+ PRESERVE_XATTRS,
PRESERVE_ALL
};
static enum File_attribute const preserve_vals[] =
{
PRESERVE_MODE, PRESERVE_TIMESTAMPS,
- PRESERVE_OWNERSHIP, PRESERVE_LINK, PRESERVE_ALL
+ PRESERVE_OWNERSHIP, PRESERVE_LINK,
+ PRESERVE_XATTRS, PRESERVE_ALL
};
/* Valid arguments to the `--preserve' option. */
static char const* const preserve_args[] =
{
"mode", "timestamps",
- "ownership", "links", "all", NULL
+ "ownership", "links",
+ "xattrs", "all", NULL
};
ARGMATCH_VERIFY (preserve_args, preserve_vals);
@@ -799,11 +803,16 @@ decode_preserve_arg (char const *arg, st
x->preserve_links = on_off;
break;
+ case PRESERVE_XATTRS:
+ x->preserve_xattrs = on_off;
+ break;
+
case PRESERVE_ALL:
x->preserve_mode = on_off;
x->preserve_timestamps = on_off;
x->preserve_ownership = on_off;
x->preserve_links = on_off;
+ x->preserve_xattrs = on_off;
break;
default:
Index: coreutils-6.2/src/install.c
===================================================================
--- coreutils-6.2.orig/src/install.c
+++ coreutils-6.2/src/install.c
@@ -154,6 +154,7 @@ cp_option_init (struct cp_options *x)
x->preserve_links = false;
x->preserve_mode = false;
x->preserve_timestamps = false;
+ x->preserve_xattrs = false;
x->require_preserve = false;
x->recursive = false;
x->sparse_mode = SPARSE_AUTO;
Index: coreutils-6.2/src/mv.c
===================================================================
--- coreutils-6.2.orig/src/mv.c
+++ coreutils-6.2/src/mv.c
@@ -125,6 +125,7 @@ cp_option_init (struct cp_options *x)
x->preserve_links = true;
x->preserve_mode = true;
x->preserve_timestamps = true;
+ x->preserve_xattrs = true;
x->require_preserve = false; /* FIXME: maybe make this an option */
x->recursive = true;
x->sparse_mode = SPARSE_AUTO; /* FIXME: maybe make this an option */
Index: coreutils-6.2/doc/coreutils.texi
===================================================================
--- coreutils-6.2.orig/doc/coreutils.texi
+++ coreutils-6.2/doc/coreutils.texi
@@ -6948,6 +6948,8 @@ Preserve in the destination files
any links between corresponding source files.
@c Give examples illustrating how hard links are preserved.
@c Also, show how soft links map to hard links with -L and -H.
+@itemx xattrs
+Preserve extended attributes. (See /etc/xattr.conf.)
@itemx all
Preserve all file attributes.
Equivalent to specifying all of the above.

898
coreutils.changes Normal file
View File

@ -0,0 +1,898 @@
-------------------------------------------------------------------
Wed Dec 13 13:27:36 CET 2006 - schwab@suse.de
- Fix acl tests.
-------------------------------------------------------------------
Sat Dec 9 01:00:28 CET 2006 - schwab@suse.de
- Update to coreutils 6.7.
** Bug fixes
When cp -p copied a file with special mode bits set, the same bits
were set on the copy even when ownership could not be preserved.
This could result in files that were setuid to the wrong user.
To fix this, special mode bits are now set in the copy only if its
ownership is successfully preserved. Similar problems were fixed
with mv when copying across file system boundaries. This problem
affects all versions of coreutils through 6.6.
cp --preserve=ownership would create output files that temporarily
had too-generous permissions in some cases. For example, when
copying a file with group A and mode 644 into a group-B sticky
directory, the output file was briefly readable by group B.
Fix similar problems with cp options like -p that imply
--preserve=ownership, with install -d when combined with either -o
or -g, and with mv when copying across file system boundaries.
This bug affects coreutils 6.0 through 6.6.
du --one-file-system (-x) would skip subdirectories of any directory
listed as second or subsequent command line argument. This bug affects
coreutils-6.4, 6.5 and 6.6.
-------------------------------------------------------------------
Wed Nov 22 16:16:52 CET 2006 - schwab@suse.de
- Update to coreutils 6.6.
** Bug fixes
ls would segfault (dereference a NULL pointer) for a file with a
nameless group or owner. This bug was introduced in coreutils-6.5.
A bug in the latest official m4/gettext.m4 (from gettext-0.15)
made configure fail to detect gettext support, due to the unusual
way in which coreutils uses AM_GNU_GETTEXT.
** Improved robustness
Now, du (and the other fts clients: chmod, chgrp, chown) honor a
trailing slash in the name of a symlink-to-directory even on
Solaris 9, by working around its buggy fstatat implementation.
-------------------------------------------------------------------
Mon Nov 20 11:34:05 CET 2006 - schwab@suse.de
- Update to coreutils 6.5.
** Bug fixes
du (and the other fts clients: chmod, chgrp, chown) would exit early
when encountering an inaccessible directory on a system with native
openat support (i.e., linux-2.6.16 or newer along with glibc-2.4
or newer). This bug was introduced with the switch to gnulib's
openat-based variant of fts, for coreutils-6.0.
"ln --backup f f" now produces a sensible diagnostic
** New features
rm accepts a new option: --one-file-system
-------------------------------------------------------------------
Mon Oct 23 10:58:38 CEST 2006 - schwab@suse.de
- Update to coreutils 6.4.
** Bug fixes
chgrp and chown would malfunction when invoked with both -R and -H and
with one or more of the following: --preserve-root, --verbose, --changes,
--from=o:g (chown only). This bug was introduced with the switch to
gnulib's openat-based variant of fts, for coreutils-6.0.
cp --backup dir1 dir2, would rename an existing dir2/dir1 to dir2/dir1~.
This bug was introduced in coreutils-6.0.
With --force (-f), rm no longer fails for ENOTDIR.
For example, "rm -f existing-non-directory/anything" now exits
successfully, ignoring the error about a nonexistent file.
-------------------------------------------------------------------
Mon Oct 9 14:48:23 CEST 2006 - schwab@suse.de
- Update to coreutils 6.3.
** Improved robustness
pinky no longer segfaults on Darwin 7.9.0 (MacOS X 10.3.9) due to a
buggy native getaddrinfo function.
rm works around a bug in Darwin 7.9.0 (MacOS X 10.3.9) that would
sometimes keep it from removing all entries in a directory on an HFS+
or NFS-mounted partition.
sort would fail to handle very large input (around 40GB) on systems with a
mkstemp function that returns a file descriptor limited to 32-bit offsets.
** Bug fixes
chmod would fail unnecessarily in an unusual case: when an initially-
inaccessible argument is rendered accessible by chmod's action on a
preceding command line argument. This bug also affects chgrp, but
it is harder to demonstrate. It does not affect chown. The bug was
introduced with the switch from explicit recursion to the use of fts
in coreutils-5.1.0 (2003-10-15).
cp -i and mv -i occasionally neglected to prompt when the copy or move
action was bound to fail. This bug dates back to before fileutils-4.0.
With --verbose (-v), cp and mv would sometimes generate no output,
or neglect to report file removal.
For the "groups" command:
"groups" no longer prefixes the output with "user :" unless more
than one user is specified; this is for compatibility with BSD.
"groups user" now exits nonzero when it gets a write error.
"groups" now processes options like --help more compatibly.
shuf would infloop, given 8KB or more of piped input
** Portability
Versions of chmod, chown, chgrp, du, and rm (tools that use openat etc.)
compiled for Solaris 8 now also work when run on Solaris 10.
-------------------------------------------------------------------
Thu Oct 5 00:16:42 CEST 2006 - agruen@suse.de
- cp: Replace the old --attributes=regex option with
--preserve=xattrs. Only copy extended attributes if this
option is given. Use libattr's new copy_attr_action() function
to check which attributes to copy in /etc/xattr.conf.
-------------------------------------------------------------------
Tue Sep 19 13:20:47 CEST 2006 - schwab@suse.de
- Disable broken autopoint.
-------------------------------------------------------------------
Mon Sep 18 13:13:58 CEST 2006 - schwab@suse.de
- Update to coreutils 6.2.
** Changes in behavior
mkdir -p and install -d (or -D) now use a method that forks a child
process if the working directory is unreadable and a later argument
uses a relative file name. This avoids some race conditions, but it
means you may need to kill two processes to stop these programs.
rm now rejects attempts to remove the root directory, e.g., `rm -fr /'
now fails without removing anything. Likewise for any file name with
a final `./' or `../' component.
tail now ignores the -f option if POSIXLY_CORRECT is set, no file
operand is given, and standard input is any FIFO; formerly it did
this only for pipes.
** Infrastructure changes
Coreutils now uses gnulib via the gnulib-tool script.
If you check the source out from CVS, then follow the instructions
in README-cvs. Although this represents a large change to the
infrastructure, it should cause no change in how the tools work.
** Bug fixes
cp --backup no longer fails when the last component of a source file
name is "." or "..".
"ls --color" would highlight other-writable and sticky directories
no differently than regular directories on a file system with
dirent.d_type support.
"mv -T --verbose --backup=t A B" now prints the " (backup: B.~1~)"
suffix when A and B are directories as well as when they are not.
mv and "cp -r" no longer fail when invoked with two arguments
where the first one names a directory and the second name ends in
a slash and doesn't exist. E.g., "mv dir B/", for nonexistent B,
now succeeds, once more. This bug was introduced in coreutils-5.3.0.
-------------------------------------------------------------------
Fri Sep 1 15:56:51 CEST 2006 - schwab@suse.de
- Fix sbin patch [#202632].
-------------------------------------------------------------------
Mon Aug 21 11:32:53 CEST 2006 - schwab@suse.de
- Update to coreutils 6.1.
** Changes in behavior
df now considers BSD "kernfs" file systems to be dummies
** Bug fixes
cp --sparse preserves sparseness at the end of a file, even when
the file's apparent size is not a multiple of its block size.
[introduced with the original design, in fileutils-4.0r, 2000-04-29]
df (with a command line argument) once again prints its header
[introduced in coreutils-6.0]
ls -CF would misalign columns in some cases involving non-stat'able files
[introduced in coreutils-6.0]
-------------------------------------------------------------------
Tue Aug 15 17:50:41 CEST 2006 - schwab@suse.de
- Update to coreutils 6.0.
** Improved robustness
df: if the file system claims to have more available than total blocks,
report the number of used blocks as being "total - available"
(a negative number) rather than as garbage.
dircolors: a new autoconf run-test for AIX's buggy strndup function
prevents malfunction on that system; may also affect cut, expand,
and unexpand.
fts no longer changes the current working directory, so its clients
(chmod, chown, chgrp, du) no longer malfunction under extreme conditions.
pwd and other programs using lib/getcwd.c work even on file systems
where dirent.d_ino values are inconsistent with those from stat.st_ino.
rm's core is now reentrant: rm --recursive (-r) now processes
hierarchies without changing the working directory at all.
** Changes in behavior
basename and dirname now treat // as different from / on platforms
where the two are distinct.
chmod, install, and mkdir now preserve a directory's set-user-ID and
set-group-ID bits unless you explicitly request otherwise. E.g.,
`chmod 755 DIR' and `chmod u=rwx,go=rx DIR' now preserve DIR's
set-user-ID and set-group-ID bits instead of clearing them, and
similarly for `mkdir -m 755 DIR' and `mkdir -m u=rwx,go=rx DIR'. To
clear the bits, mention them explicitly in a symbolic mode, e.g.,
`mkdir -m u=rwx,go=rx,-s DIR'. To set them, mention them explicitly
in either a symbolic or a numeric mode, e.g., `mkdir -m 2755 DIR',
`mkdir -m u=rwx,go=rx,g+s' DIR. This change is for convenience on
systems where these bits inherit from parents. Unfortunately other
operating systems are not consistent here, and portable scripts
cannot assume the bits are set, cleared, or preserved, even when the
bits are explicitly mentioned. For example, OpenBSD 3.9 `mkdir -m
777 D' preserves D's setgid bit but `chmod 777 D' clears it.
Conversely, Solaris 10 `mkdir -m 777 D', `mkdir -m g-s D', and
`chmod 0777 D' all preserve D's setgid bit, and you must use
something like `chmod g-s D' to clear it.
`cp --link --no-dereference' now works also on systems where the
link system call cannot create a hard link to a symbolic link.
This change has no effect on systems with a Linux-based kernel.
csplit and nl now use POSIX syntax for regular expressions, not
Emacs syntax. As a result, character classes like [[:print:]] and
interval expressions like A\{1,9\} now have their usual meaning,
. no longer matches the null character, and \ must precede the + and
? operators.
date: a command like date -d '2006-04-23 21 days ago' would print
the wrong date in some time zones. (see the test for an example)
df now considers "none" and "proc" file systems to be dummies and
therefore does not normally display them. Also, inaccessible file
systems (which can be caused by shadowed mount points or by chrooted
bind mounts) are now dummies, too.
expr no longer complains about leading ^ in a regular expression
(the anchor is ignored), or about regular expressions like A** (the
second "*" is ignored). expr now exits with status 2 (not 3) for
errors it detects in the expression's values; exit status 3 is now
used only for internal errors (such as integer overflow, which expr
now checks for).
install and mkdir now implement the X permission symbol correctly,
e.g., `mkdir -m a+X dir'; previously the X was ignored.
install now creates parent directories with mode u=rwx,go=rx (755)
instead of using the mode specified by the -m option; and it does
not change the owner or group of parent directories. This is for
compatibility with BSD and closes some race conditions.
ln now uses different (and we hope clearer) diagnostics when it fails.
ln -v now acts more like FreeBSD, so it generates output only when
successful and the output is easier to parse.
ls now defaults to --time-style='locale', not --time-style='posix-long-iso'.
However, the 'locale' time style now behaves like 'posix-long-iso'
if your locale settings appear to be messed up. This change
attempts to have the default be the best of both worlds.
mkfifo and mknod no longer set special mode bits (setuid, setgid,
and sticky) with the -m option.
nohup's usual diagnostic now more precisely specifies the I/O
redirections, e.g., "ignoring input and appending output to
nohup.out". Also, nohup now redirects stderr to nohup.out (or
$HOME/nohup.out) if stdout is closed and stderr is a tty; this is in
response to Open Group XCU ERN 71.
rm --interactive now takes an optional argument, although the
default of using no argument still acts like -i.
rm no longer fails to remove an empty, unreadable directory
seq changes:
seq defaults to a minimal fixed point format that does not lose
information if seq's operands are all fixed point decimal numbers.
You no longer need the `-f%.f' in `seq -f%.f 1048575 1024 1050623',
for example, since the default format now has the same effect.
seq now lets you use %a, %A, %E, %F, and %G formats.
seq now uses long double internally rather than double.
sort now reports incompatible options (e.g., -i and -n) rather than
silently ignoring one of them.
stat's --format=FMT option now works the way it did before 5.3.0:
FMT is automatically newline terminated. The first stable release
containing this change was 5.92.
stat accepts the new option --printf=FMT, where FMT is *not*
automatically newline terminated.
stat: backslash escapes are interpreted in a format string specified
via --printf=FMT, but not one specified via --format=FMT. That includes
octal (\ooo, at most three octal digits), hexadecimal (\xhh, one or
two hex digits), and the standard sequences (\a, \b, \f, \n, \r, \t,
\v, \", \\).
With no operand, 'tail -f' now silently ignores the '-f' only if
standard input is a FIFO or pipe and POSIXLY_CORRECT is set.
Formerly, it ignored the '-f' when standard input was a FIFO, pipe,
or socket.
** Scheduled for removal
ptx's --copyright (-C) option is scheduled for removal in 2007, and
now evokes a warning. Use --version instead.
rm's --directory (-d) option is scheduled for removal in 2006. This
option has been silently ignored since coreutils 5.0. On systems
that support unlinking of directories, you can use the "unlink"
command to unlink a directory.
Similarly, we are considering the removal of ln's --directory (-d,
-F) option in 2006. Please write to <bug-coreutils@gnu.org> if this
would cause a problem for you. On systems that support hard links
to directories, you can use the "link" command to create one.
** New programs
base64: base64 encoding and decoding (RFC 3548) functionality.
sha224sum: print or check a SHA224 (224-bit) checksum
sha256sum: print or check a SHA256 (256-bit) checksum
sha384sum: print or check a SHA384 (384-bit) checksum
sha512sum: print or check a SHA512 (512-bit) checksum
shuf: Shuffle lines of text.
** New features
chgrp now supports --preserve-root, --no-preserve-root (default),
as it was documented to do, and just as chmod, chown, and rm do.
New dd iflag= and oflag= flags:
'directory' causes dd to fail unless the file is a directory, on
hosts that support this (e.g., Linux kernels, version 2.1.126 and
later). This has limited utility but is present for completeness.
'noatime' causes dd to read a file without updating its access
time, on hosts that support this (e.g., Linux kernels, version
2.6.8 and later).
'nolinks' causes dd to fail if the file has multiple hard links,
on hosts that support this (e.g., Solaris 10 and later).
ls accepts the new option --group-directories-first, to make it
list directories before files.
rm now accepts the -I (--interactive=once) option. This new option
prompts once if rm is invoked recursively or if more than three
files are being deleted, which is less intrusive than -i prompting
for every file, but provides almost the same level of protection
against mistakes.
shred and sort now accept the --random-source option.
sort now accepts the --random-sort (-R) option and `R' ordering option.
sort now supports obsolete usages like "sort +1 -2" unless
POSIXLY_CORRECT is set. However, when conforming to POSIX
1003.1-2001 "sort +1" still sorts the file named "+1".
wc accepts a new option --files0-from=FILE, where FILE contains a
list of NUL-terminated file names.
** Bug fixes
cat with any of the options, -A -v -e -E -T, when applied to a
file in /proc or /sys (linux-specific), would truncate its output,
usually printing nothing.
cp -p would fail in a /proc-less chroot, on some systems
When `cp -RL' encounters the same directory more than once in the
hierarchy beneath a single command-line argument, it no longer confuses
them with hard-linked directories.
fts-using tools (chmod, chown, chgrp, du) no longer fail due to
a double-free bug -- it could be triggered by making a directory
inaccessible while e.g., du is traversing the hierarchy under it.
fts-using tools (chmod, chown, chgrp, du) no longer misinterpret
a very long symlink chain as a dangling symlink. Before, such a
misinterpretation would cause these tools not to diagnose an ELOOP error.
ls --indicator-style=file-type would sometimes stat a symlink
unnecessarily.
ls --file-type worked like --indicator-style=slash (-p),
rather than like --indicator-style=file-type.
mv: moving a symlink into the place of an existing non-directory is
now done atomically; before, mv would first unlink the destination.
mv -T DIR EMPTY_DIR no longer fails unconditionally. Also, mv can
now remove an empty destination directory: mkdir -p a b/a; mv a b
rm (on systems with openat) can no longer exit before processing
all command-line arguments.
rm is no longer susceptible to a few low-probability memory leaks.
rm -r no longer fails to remove an inaccessible and empty directory
rm -r's cycle detection code can no longer be tricked into reporting
a false positive (introduced in fileutils-4.1.9).
shred --remove FILE no longer segfaults on Gentoo systems
sort would fail for large inputs (~50MB) on systems with a buggy
mkstemp function. sort and tac now use the replacement mkstemp
function, and hence are no longer subject to limitations (of 26 or 32,
on the maximum number of files from a given template) on HP-UX 10.20,
SunOS 4.1.4, Solaris 2.5.1 and OSF1/Tru64 V4.0F&V5.1.
tail -f once again works on a file with the append-only
attribute (affects at least Linux ext2, ext3, xfs file systems)
-------------------------------------------------------------------
Tue Aug 8 15:29:32 CEST 2006 - schwab@suse.de
- Move sux to %{_bindir}.
-------------------------------------------------------------------
Mon Jun 26 13:20:23 CEST 2006 - schwab@suse.de
- Update to coreutils 5.97.
** Bug fixes
rebuild with better autoconf test for when the lstat replacement
function is needed -- required for Solaris 9
cat with any of the options, -A -v -e -E -T, when applied to a
file in /proc or /sys (linux-specific), would truncate its output,
usually printing nothing.
** Improved robustness
dircolors: a new autoconf run-test for AIX's buggy strndup function
prevents malfunction on that system; may also affect cut, expand,
and unexpand.
** New features
chgrp now supports --preserve-root, --no-preserve-root (default),
as it was documented to do, and just as chmod, chown, and rm do.
-------------------------------------------------------------------
Thu Jun 22 15:38:27 CEST 2006 - schwab@suse.de
- Fix conflict with <fcntl.h>.
-------------------------------------------------------------------
Mon May 22 13:34:26 CEST 2006 - schwab@suse.de
- Update to coreutils 5.96.
-------------------------------------------------------------------
Sat May 13 16:39:03 CEST 2006 - schwab@suse.de
- Update to coreutils 5.95.
-------------------------------------------------------------------
Fri Apr 7 16:34:42 CEST 2006 - cthiel@suse.de
- added Obsoletes: libselinux (hack for bug #156519)
-------------------------------------------------------------------
Mon Feb 13 01:31:31 CET 2006 - schwab@suse.de
- Fix spurious failure with cp -LR.
- Move check for /proc.
-------------------------------------------------------------------
Mon Jan 30 16:27:11 CET 2006 - schwab@suse.de
- Always print newline after format in stat [#145905].
- Barf if /proc is not mounted.
-------------------------------------------------------------------
Wed Jan 25 21:30:02 CET 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
-------------------------------------------------------------------
Thu Jan 19 16:43:57 CET 2006 - meissner@suse.de
- Do not strip /bin/su.
-------------------------------------------------------------------
Wed Jan 11 15:20:50 CET 2006 - schwab@suse.de
- Fix infloop when ignoring characters [#141756].
-------------------------------------------------------------------
Mon Dec 19 12:03:23 CET 2005 - kukuk@suse.de
- Add fallback if futimesat does not work
-------------------------------------------------------------------
Mon Dec 5 17:15:17 CET 2005 - ke@suse.de
- Fix typo in German translation file; reported by Olaf Hering
[#105863].
-------------------------------------------------------------------
Mon Dec 5 16:53:58 CET 2005 - schwab@suse.de
- Drop SELinux support.
-------------------------------------------------------------------
Tue Nov 15 16:47:44 CET 2005 - uli@suse.de
- some tests fail on ARM (QEMU problem?); ignore for now
-------------------------------------------------------------------
Sun Nov 6 17:42:27 CET 2005 - schwab@suse.de
- Update to coreutils 5.93.
-------------------------------------------------------------------
Wed Nov 2 14:55:10 CET 2005 - schwab@suse.de
- Update to coreutils 5.92.
- Fix invalid use of va_list.
- Add some fixes from cvs.
-------------------------------------------------------------------
Thu Oct 20 10:16:26 CEST 2005 - schwab@suse.de
- Reenable DEFAULT_POSIX2_VERSION.
-------------------------------------------------------------------
Wed Oct 19 19:04:17 CEST 2005 - agruen@suse.de
- Add acl and xattr patches.
-------------------------------------------------------------------
Mon Oct 17 15:45:25 CEST 2005 - schwab@suse.de
- Update to coreutils 5.91.
-------------------------------------------------------------------
Sat Oct 1 16:05:24 CEST 2005 - schwab@suse.de
- Update to coreutils 5.90.
- Disable acl patches for now.
-------------------------------------------------------------------
Sun Sep 25 21:33:05 CEST 2005 - schwab@suse.de
- Fix warning.
-------------------------------------------------------------------
Wed Aug 24 15:07:03 CEST 2005 - werner@suse.de
- Let `su' handle /sbin and /usr/sbin in path
-------------------------------------------------------------------
Mon Aug 1 16:48:44 CEST 2005 - kukuk@suse.de
- And yet another uninitialized variable fix.
-------------------------------------------------------------------
Fri Jul 29 16:01:07 CEST 2005 - schwab@suse.de
- Fix another uninitialized variable.
-------------------------------------------------------------------
Wed Jul 6 18:33:56 CEST 2005 - schwab@suse.de
- Fix uninitialized variable.
-------------------------------------------------------------------
Mon Jul 4 11:00:33 CEST 2005 - schwab@suse.de
- Update i18n patch.
-------------------------------------------------------------------
Mon Jun 20 23:11:53 CEST 2005 - schwab@suse.de
- Fix last change.
-------------------------------------------------------------------
Wed Jun 15 17:34:06 CEST 2005 - kukuk@suse.de
- Compile/link su with -fpie/-pie
-------------------------------------------------------------------
Sat May 21 16:46:32 CEST 2005 - kukuk@suse.de
- Add support for /etc/default/su
-------------------------------------------------------------------
Mon May 2 11:32:05 CEST 2005 - kukuk@suse.de
- Don't overwrite PATH if su is called with "-" option.
-------------------------------------------------------------------
Wed Mar 2 14:29:21 CET 2005 - schwab@suse.de
- Fix merge error [#67103].
-------------------------------------------------------------------
Mon Feb 28 16:18:57 CET 2005 - schwab@suse.de
- Call pam_getenvlist before pam_end.
-------------------------------------------------------------------
Mon Feb 28 13:16:14 CET 2005 - schwab@suse.de
- Link su to sux [#66830].
-------------------------------------------------------------------
Wed Feb 2 19:48:49 CET 2005 - schwab@suse.de
- Handle xfs and jfs in stat [#50415].
-------------------------------------------------------------------
Wed Feb 2 02:02:28 CET 2005 - schwab@suse.de
- Handle subfs like autofs.
-------------------------------------------------------------------
Tue Jan 25 13:52:57 CET 2005 - schwab@suse.de
- Fix path_concat.
-------------------------------------------------------------------
Thu Jan 20 17:26:10 CET 2005 - schwab@suse.de
- Use pam_xauth [#42238].
-------------------------------------------------------------------
Fri Jan 14 22:04:46 CET 2005 - schwab@suse.de
- Fix merge error [#49853].
-------------------------------------------------------------------
Tue Jan 11 18:39:44 CET 2005 - schwab@suse.de
- Update to coreutils 5.3.0.
-------------------------------------------------------------------
Mon Nov 8 17:15:39 CET 2004 - kukuk@suse.de
- Use common-* PAM config files for su PAM configuration
-------------------------------------------------------------------
Mon Oct 25 15:01:04 CEST 2004 - schwab@suse.de
- Fix last change.
- Fix selinux patch.
-------------------------------------------------------------------
Wed Oct 20 01:55:31 CEST 2004 - ro@suse.de
- remove no language support (nb is already there)
-------------------------------------------------------------------
Sat Oct 2 03:08:31 CEST 2004 - agruen@suse.de
- #46609: Fix chown and chgrp utilities for uid == (uid_t) -1 and
gid == (gid_t) -1 case.
- Add missing #include to have NULL defined in lib/acl.c
-------------------------------------------------------------------
Fri Sep 10 00:13:28 CEST 2004 - schwab@suse.de
- Fix uninitialized variable [#44929].
- Fix selinux patch.
-------------------------------------------------------------------
Wed Aug 25 13:32:20 CEST 2004 - schwab@suse.de
- Fix hardlink accounting patch.
-------------------------------------------------------------------
Mon May 24 18:07:35 CEST 2004 - schwab@suse.de
- Update testsuite for change in chown.
-------------------------------------------------------------------
Mon May 24 16:34:33 CEST 2004 - schwab@suse.de
- Precompute length in caller of ismbblank to avoid quadratic behaviour
[#40741].
-------------------------------------------------------------------
Mon May 17 15:33:12 CEST 2004 - schwab@suse.de
- Fix handling of symlinks in chown [#40691].
-------------------------------------------------------------------
Sat Apr 17 20:09:11 CEST 2004 - schwab@suse.de
- Pacify autobuild.
-------------------------------------------------------------------
Fri Apr 2 14:48:24 CEST 2004 - schwab@suse.de
- Add support for IUTF8 in stty.
-------------------------------------------------------------------
Tue Mar 30 18:39:10 CEST 2004 - schwab@suse.de
- Fix merge error in selinux patch [#37431].
-------------------------------------------------------------------
Mon Mar 29 14:51:59 CEST 2004 - schwab@suse.de
- Fix hardlink accounting in du.
-------------------------------------------------------------------
Mon Mar 22 14:19:59 CET 2004 - schwab@suse.de
- Fix race in the testsuite.
-------------------------------------------------------------------
Mon Mar 15 16:21:20 CET 2004 - kukuk@suse.de
- Update SELinux patch to new libselinux interface
-------------------------------------------------------------------
Mon Mar 15 11:25:54 CET 2004 - schwab@suse.de
- Fix date parsing.
-------------------------------------------------------------------
Sat Mar 13 18:21:40 CET 2004 - schwab@suse.de
- Update to coreutils 5.2.1.
* Includes mv fix.
* Fix sparse handling in cp.
* Fix descriptor leak in nohup.
* Fix POSIX issues in expr.
* Always allow user.group in chown.
-------------------------------------------------------------------
Fri Mar 12 18:18:33 CET 2004 - schwab@suse.de
- Fix sysinfo patch [#35337].
-------------------------------------------------------------------
Fri Mar 12 16:57:21 CET 2004 - schwab@suse.de
- Fix preserving links in mv.
-------------------------------------------------------------------
Wed Mar 3 15:28:06 CET 2004 - schwab@suse.de
- Fix help output from mkdir.
-------------------------------------------------------------------
Fri Feb 20 01:06:39 CET 2004 - schwab@suse.de
- Update to coreutils 5.2.0.
-------------------------------------------------------------------
Mon Feb 9 18:03:45 CET 2004 - schwab@suse.de
- Update to coreutils 5.1.3.
-------------------------------------------------------------------
Mon Feb 2 17:20:11 CET 2004 - agruen@suse.de
- Update acl and xattr patches, and add some Changelog text.
-------------------------------------------------------------------
Mon Jan 26 14:34:12 CET 2004 - schwab@suse.de
- Update to coreutils 5.1.2.
-------------------------------------------------------------------
Fri Jan 23 17:16:32 CET 2004 - schwab@suse.de
- Don't link [ to test.
-------------------------------------------------------------------
Mon Jan 19 13:26:00 CET 2004 - schwab@suse.de
- Update to coreutils 5.1.1.
- Default to POSIX.2-1992.
-------------------------------------------------------------------
Fri Jan 16 12:26:48 CET 2004 - kukuk@suse.de
- Add pam-devel to neededforbuild
-------------------------------------------------------------------
Fri Jan 9 13:51:53 CET 2004 - schwab@suse.de
- Fix spurious test failure.
-------------------------------------------------------------------
Thu Jan 8 16:48:32 CET 2004 - schwab@suse.de
- Update to coreutils 5.1.0.
-------------------------------------------------------------------
Fri Dec 12 23:08:27 CET 2003 - schwab@suse.de
- Fix use of AC_SEARCH_LIBS.
-------------------------------------------------------------------
Tue Dec 9 17:31:09 CET 2003 - schwab@suse.de
- Cleanup SELinux patch.
-------------------------------------------------------------------
Tue Dec 9 16:07:28 CET 2003 - kukuk@suse.de
- Add SELinux patch.
-------------------------------------------------------------------
Wed Nov 26 11:59:34 CET 2003 - schwab@suse.de
- Fix sorting of months in multibyte case [#33299].
-------------------------------------------------------------------
Wed Oct 22 15:33:21 CEST 2003 - schwab@suse.de
- Fix building without extended attributes.
-------------------------------------------------------------------
Wed Oct 15 15:17:11 CEST 2003 - schwab@suse.de
- Cleanup sysinfo patch.
-------------------------------------------------------------------
Fri Sep 19 11:09:36 CEST 2003 - kukuk@suse.de
- Add missing textutil to Provides
-------------------------------------------------------------------
Mon Aug 25 17:42:23 CEST 2003 - agruen@suse.de
- Fix uname command to report reasonable processor and platform
information (coreutils-sysinfo.diff: based on similar RedHat
patch).
-------------------------------------------------------------------
Mon Jul 21 15:23:56 CEST 2003 - schwab@suse.de
- Fix typo in i18n patch for join.
-------------------------------------------------------------------
Fri Jul 18 12:05:56 CEST 2003 - schwab@suse.de
- Avoid abort in sort on inconsistent locales [#26506].
-------------------------------------------------------------------
Tue Jul 15 15:16:37 CEST 2003 - okir@suse.de
- make su export variables declared via pam_putenv
-------------------------------------------------------------------
Wed May 28 10:15:39 CEST 2003 - kukuk@suse.de
- PAM fixes for su:
- Move pam_open_session call before dropping privilegs, session
management needs max. possible credentials and needs to be done
before we change into the home directory of the user.
- Don't set PAM_TTY and PAM_RUSER to fake names.
- Use conversion function from libpam_misc.
-------------------------------------------------------------------
Fri May 16 11:11:44 CEST 2003 - schwab@suse.de
- Fix exit status from su.
-------------------------------------------------------------------
Thu Apr 24 11:43:14 CEST 2003 - ro@suse.de
- fix head calling syntax
-------------------------------------------------------------------
Mon Apr 7 13:11:19 CEST 2003 - schwab@suse.de
- Only delete info entries when removing last version.
-------------------------------------------------------------------
Fri Apr 4 17:58:20 CEST 2003 - schwab@suse.de
- Update to coreutils 5.0.
-------------------------------------------------------------------
Mon Mar 31 12:53:29 CEST 2003 - schwab@suse.de
- Update to coreutils 4.5.12.
-------------------------------------------------------------------
Thu Mar 20 18:10:25 CET 2003 - schwab@suse.de
- Update to coreutils 4.5.11.
-------------------------------------------------------------------
Mon Mar 10 13:42:36 CET 2003 - schwab@suse.de
- Fix LFS bug in du [#24960].
-------------------------------------------------------------------
Thu Feb 27 15:39:06 CET 2003 - schwab@suse.de
- Readd textutils i18n patches.
-------------------------------------------------------------------
Thu Feb 27 14:53:19 CET 2003 - agruen@suse.de
- Per hint from Andreas Schwab, don't use awk in autoconf. (The
improved test is simpler, too.)
-------------------------------------------------------------------
Thu Feb 27 05:29:05 CET 2003 - agruen@suse.de
- Fix autoconf test for attr_copy_file that caused all binaries
to be linked needlessly against libattr.so.
-------------------------------------------------------------------
Tue Feb 25 15:18:39 CET 2003 - agruen@suse.de
- Extended attribute copying: Use the newly exported
attr_copy_check_permissions() callback exported by libattr.so,
so that the EA copying done by coreutils is consistent with
other apps [#24244].
-------------------------------------------------------------------
Mon Feb 24 16:27:21 CET 2003 - schwab@suse.de
- Update to coreutils 4.5.8.
* Fixes bugs in du.
-------------------------------------------------------------------
Mon Feb 17 15:00:04 CET 2003 - agruen@suse.de
- Add extended attribute copying patch: Affects cp, mv, install.
See the cp manual page for details on the changes in cp. The
mv utility always tries to copy extended attributes; install
never does.
-------------------------------------------------------------------
Mon Feb 10 13:16:58 CET 2003 - schwab@suse.de
- Update to coreutils 4.5.7.
-------------------------------------------------------------------
Fri Feb 7 13:47:58 CET 2003 - kukuk@suse.de
- Use pam_unix2.so instead of pam_unix.so, use same rules for
password changing as passwd.
-------------------------------------------------------------------
Thu Feb 6 17:48:08 CET 2003 - schwab@suse.de
- Use %install_info.
-------------------------------------------------------------------
Thu Feb 6 17:05:42 CET 2003 - schwab@suse.de
- Update to coreutils 4.5.6.
-------------------------------------------------------------------
Mon Feb 3 14:47:47 CET 2003 - schwab@suse.de
- Package created, combining textutils, sh-utils and fileutils.

738
coreutils.spec Normal file
View File

@ -0,0 +1,738 @@
#
# spec file for package coreutils (Version 6.7)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: coreutils
BuildRequires: help2man libacl-devel pam-devel
URL: http://www.gnu.org/software/coreutils/
License: GNU General Public License (GPL)
Group: System/Base
Provides: fileutil fileutils sh-utils sh_utils shellutl stat textutil textutils textutl txtutils
Obsoletes: fileutil fileutils sh-utils sh_utils stat textutil textutils
Obsoletes: libselinux <= 1.23.11-3 libselinux-32bit >= 9 libselinux-64bit = 9 libselinux-x86 = 9
Autoreqprov: on
PreReq: %{install_info_prereq}
Version: 6.7
Release: 3
Summary: GNU Core Utilities
Source: coreutils-%{version}.tar.bz2
Source1: su.pamd
Source2: su.default
Patch: coreutils-%{version}.diff
Patch1: coreutils-xattr.diff
Patch30: coreutils-changelog.diff
Patch4: coreutils-5.3.0-i18n-0.1.patch
Patch5: i18n-uninit.diff
Patch6: i18n-infloop.diff
Patch7: coreutils-5.0-pam-env.patch
Patch8: coreutils-sysinfo.diff
Patch9: acl-test.diff
Patch10: getcwd.diff
Patch16: invalid-ids.diff
Patch17: no-no.diff
Patch20: coreutils-5.3.0-pie.diff
Patch21: coreutils-5.3.0-sbin4su.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Basic file, shell, and text manipulation utilities. The package
contains the following programs:
basename cat chgrp chmod chown chroot cksum comm cp csplit cut date dd
df dir dircolors dirname du echo env expand expr factor false fmt fold
install groups head id join kill link ln logname ls md5sum mkdir mkfifo
mknod mv nice nl nohup od paste pathchk pinky pr printenv printf ptx
pwd readlink rm rmdir seq sha1sum shred sleep sort split stat stty su
sum sync tac tail tee test touch tr true tsort tty uname unexpand uniq
unlink uptime users vdir wc who whoami yes
Authors:
--------
Arnold Robbins <arnold@audiofax.com>
Colin Plumb <colin@nyx.net>
David M. Ihnat
David MacKenzie <djm@gnu.org>
François Pinard <pinard@iro.umontreal.ca>
H. Peter Anvin <hpa@transmeta.com>
Ian Lance Taylor <ian@airs.com>
Jay Lepreau <lepreau@cs.utah.edu>
Jim Kingdon
Jim Meyering <jim@meyering.net>
Joseph Arceneaux
Kaveh Ghazi
Kayvan Aghaiepour
Larry McVoy <lm@sgi.com>
Mark Kettenis <kettenis@phys.uva.nl>
Michael Meskes
Michael Stone <mstone@debian.org>
Mike Haertel
Mike Parker
Paul Eggert <eggert@twinsun.com>
Paul Rubin <phr@ocf.berkeley.edu>
Pete TerMaat
Randy Smith
Richard M. Stallman <rms@gnu.org>
Richard Mlynarik
Roland Huebner <ro-huebner@gmx.de>
Roland McGrath <roland@redhat.com>
Ross Paterson <rap@doc.ic.ac.uk>
Scott Bartram
Scott Miller
Stuart Kemp <skemp@peter.bmc.com>
Torbjorn Granlund <tege@nada.kth.se>
Ulrich Drepper <drepper@redhat.com>
%prep
%setup -q
%patch1 -p1
%patch4 -p1
%patch5
%patch6
%patch
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10
%patch16 -p1
%patch17
%patch20
%patch21
rm -f po/no.*
%build
AUTOPOINT=true autoreconf -fi
./configure CFLAGS="-DUSE_PAM $RPM_OPT_FLAGS -Wall" \
DEFAULT_POSIX2_VERSION=199209 \
--prefix=%{_prefix} --mandir=%{_mandir} \
--infodir=%{_infodir} --without-included-regex
make %{?jobs:-j%jobs} PAMLIBS="-lpam -ldl"
if test $EUID -eq 0; then
su nobody -c make check
make check-root VERBOSE=yes
else
%ifarch %arm
make -k check VERBOSE=yes || echo make check failed
%else
make check VERBOSE=yes
%endif
fi
%install
make DESTDIR="$RPM_BUILD_ROOT" install
test -f $RPM_BUILD_ROOT%{_bindir}/su || \
install src/su $RPM_BUILD_ROOT%{_bindir}/su
install -d $RPM_BUILD_ROOT/bin
for i in basename cat chgrp chmod chown cp date dd df echo false kill ln ls mkdir mknod mv pwd rm rmdir sleep sort stty su sync touch true uname
do
mv $RPM_BUILD_ROOT%{_bindir}/$i $RPM_BUILD_ROOT/bin/$i
test $i = su && echo -n '%%attr(4755,root,root) '
echo /bin/$i
done > bin.files
ln -sf ../../bin/basename ../../bin/sort ../../bin/touch $RPM_BUILD_ROOT%{_bindir}
install -d -m 755 $RPM_BUILD_ROOT/etc/pam.d
install -m 644 $RPM_SOURCE_DIR/su.pamd $RPM_BUILD_ROOT/etc/pam.d/su
install -d -m 755 $RPM_BUILD_ROOT/etc/default
install -m 644 $RPM_SOURCE_DIR/su.default $RPM_BUILD_ROOT/etc/default/su
ln -sf /bin/su $RPM_BUILD_ROOT%{_bindir}/sux
rm -f $RPM_BUILD_ROOT%{_bindir}/hostid
rm -f $RPM_BUILD_ROOT%{_bindir}/hostname
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/hostid.1
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/hostname.1
%find_lang %name
cat bin.files %name.lang > extra-files
%post
%install_info --info-dir=%{_infodir} %{_infodir}/coreutils.info.gz
%postun
%install_info_delete --info-dir=%{_infodir} %{_infodir}/coreutils.info.gz
%clean
rm -rf $RPM_BUILD_ROOT
%files -f extra-files
%defattr(-,root,root)
%doc README NEWS
%config /etc/pam.d/su
%config(noreplace) /etc/default/su
%{_bindir}/*
%doc %{_infodir}/coreutils.info*.gz
%doc %{_mandir}/man1/*.1.gz
%dir %{_prefix}/share/locale/*/LC_TIME
%changelog -n coreutils
* Wed Dec 13 2006 - schwab@suse.de
- Fix acl tests.
* Sat Dec 09 2006 - schwab@suse.de
- Update to coreutils 6.7.
** Bug fixes
When cp -p copied a file with special mode bits set, the same bits
were set on the copy even when ownership could not be preserved.
This could result in files that were setuid to the wrong user.
To fix this, special mode bits are now set in the copy only if its
ownership is successfully preserved. Similar problems were fixed
with mv when copying across file system boundaries. This problem
affects all versions of coreutils through 6.6.
cp --preserve=ownership would create output files that temporarily
had too-generous permissions in some cases. For example, when
copying a file with group A and mode 644 into a group-B sticky
directory, the output file was briefly readable by group B.
Fix similar problems with cp options like -p that imply
--preserve=ownership, with install -d when combined with either -o
or -g, and with mv when copying across file system boundaries.
This bug affects coreutils 6.0 through 6.6.
du --one-file-system (-x) would skip subdirectories of any directory
listed as second or subsequent command line argument. This bug affects
coreutils-6.4, 6.5 and 6.6.
* Wed Nov 22 2006 - schwab@suse.de
- Update to coreutils 6.6.
** Bug fixes
ls would segfault (dereference a NULL pointer) for a file with a
nameless group or owner. This bug was introduced in coreutils-6.5.
A bug in the latest official m4/gettext.m4 (from gettext-0.15)
made configure fail to detect gettext support, due to the unusual
way in which coreutils uses AM_GNU_GETTEXT.
** Improved robustness
Now, du (and the other fts clients: chmod, chgrp, chown) honor a
trailing slash in the name of a symlink-to-directory even on
Solaris 9, by working around its buggy fstatat implementation.
* Mon Nov 20 2006 - schwab@suse.de
- Update to coreutils 6.5.
** Bug fixes
du (and the other fts clients: chmod, chgrp, chown) would exit early
when encountering an inaccessible directory on a system with native
openat support (i.e., linux-2.6.16 or newer along with glibc-2.4
or newer). This bug was introduced with the switch to gnulib's
openat-based variant of fts, for coreutils-6.0.
"ln --backup f f" now produces a sensible diagnostic
** New features
rm accepts a new option: --one-file-system
* Mon Oct 23 2006 - schwab@suse.de
- Update to coreutils 6.4.
** Bug fixes
chgrp and chown would malfunction when invoked with both -R and -H and
with one or more of the following: --preserve-root, --verbose, --changes,
--from=o:g (chown only). This bug was introduced with the switch to
gnulib's openat-based variant of fts, for coreutils-6.0.
cp --backup dir1 dir2, would rename an existing dir2/dir1 to dir2/dir1~.
This bug was introduced in coreutils-6.0.
With --force (-f), rm no longer fails for ENOTDIR.
For example, "rm -f existing-non-directory/anything" now exits
successfully, ignoring the error about a nonexistent file.
* Mon Oct 09 2006 - schwab@suse.de
- Update to coreutils 6.3.
** Improved robustness
pinky no longer segfaults on Darwin 7.9.0 (MacOS X 10.3.9) due to a
buggy native getaddrinfo function.
rm works around a bug in Darwin 7.9.0 (MacOS X 10.3.9) that would
sometimes keep it from removing all entries in a directory on an HFS+
or NFS-mounted partition.
sort would fail to handle very large input (around 40GB) on systems with a
mkstemp function that returns a file descriptor limited to 32-bit offsets.
** Bug fixes
chmod would fail unnecessarily in an unusual case: when an initially-
inaccessible argument is rendered accessible by chmod's action on a
preceding command line argument. This bug also affects chgrp, but
it is harder to demonstrate. It does not affect chown. The bug was
introduced with the switch from explicit recursion to the use of fts
in coreutils-5.1.0 (2003-10-15).
cp -i and mv -i occasionally neglected to prompt when the copy or move
action was bound to fail. This bug dates back to before fileutils-4.0.
With --verbose (-v), cp and mv would sometimes generate no output,
or neglect to report file removal.
For the "groups" command:
"groups" no longer prefixes the output with "user :" unless more
than one user is specified; this is for compatibility with BSD.
"groups user" now exits nonzero when it gets a write error.
"groups" now processes options like --help more compatibly.
shuf would infloop, given 8KB or more of piped input
** Portability
Versions of chmod, chown, chgrp, du, and rm (tools that use openat etc.)
compiled for Solaris 8 now also work when run on Solaris 10.
* Thu Oct 05 2006 - agruen@suse.de
- cp: Replace the old --attributes=regex option with
--preserve=xattrs. Only copy extended attributes if this
option is given. Use libattr's new copy_attr_action() function
to check which attributes to copy in /etc/xattr.conf.
* Tue Sep 19 2006 - schwab@suse.de
- Disable broken autopoint.
* Mon Sep 18 2006 - schwab@suse.de
- Update to coreutils 6.2.
** Changes in behavior
mkdir -p and install -d (or -D) now use a method that forks a child
process if the working directory is unreadable and a later argument
uses a relative file name. This avoids some race conditions, but it
means you may need to kill two processes to stop these programs.
rm now rejects attempts to remove the root directory, e.g., `rm -fr /'
now fails without removing anything. Likewise for any file name with
a final `./' or `../' component.
tail now ignores the -f option if POSIXLY_CORRECT is set, no file
operand is given, and standard input is any FIFO; formerly it did
this only for pipes.
** Infrastructure changes
Coreutils now uses gnulib via the gnulib-tool script.
If you check the source out from CVS, then follow the instructions
in README-cvs. Although this represents a large change to the
infrastructure, it should cause no change in how the tools work.
** Bug fixes
cp --backup no longer fails when the last component of a source file
name is "." or "..".
"ls --color" would highlight other-writable and sticky directories
no differently than regular directories on a file system with
dirent.d_type support.
"mv -T --verbose --backup=t A B" now prints the " (backup: B.~1~)"
suffix when A and B are directories as well as when they are not.
mv and "cp -r" no longer fail when invoked with two arguments
where the first one names a directory and the second name ends in
a slash and doesn't exist. E.g., "mv dir B/", for nonexistent B,
now succeeds, once more. This bug was introduced in coreutils-5.3.0.
* Fri Sep 01 2006 - schwab@suse.de
- Fix sbin patch [#202632].
* Mon Aug 21 2006 - schwab@suse.de
- Update to coreutils 6.1.
** Changes in behavior
df now considers BSD "kernfs" file systems to be dummies
** Bug fixes
cp --sparse preserves sparseness at the end of a file, even when
the file's apparent size is not a multiple of its block size.
[introduced with the original design, in fileutils-4.0r, 2000-04-29]
df (with a command line argument) once again prints its header
[introduced in coreutils-6.0]
ls -CF would misalign columns in some cases involving non-stat'able files
[introduced in coreutils-6.0]
* Tue Aug 15 2006 - schwab@suse.de
- Update to coreutils 6.0.
** Improved robustness
df: if the file system claims to have more available than total blocks,
report the number of used blocks as being "total - available"
(a negative number) rather than as garbage.
dircolors: a new autoconf run-test for AIX's buggy strndup function
prevents malfunction on that system; may also affect cut, expand,
and unexpand.
fts no longer changes the current working directory, so its clients
(chmod, chown, chgrp, du) no longer malfunction under extreme conditions.
pwd and other programs using lib/getcwd.c work even on file systems
where dirent.d_ino values are inconsistent with those from stat.st_ino.
rm's core is now reentrant: rm --recursive (-r) now processes
hierarchies without changing the working directory at all.
** Changes in behavior
basename and dirname now treat // as different from / on platforms
where the two are distinct.
chmod, install, and mkdir now preserve a directory's set-user-ID and
set-group-ID bits unless you explicitly request otherwise. E.g.,
`chmod 755 DIR' and `chmod u=rwx,go=rx DIR' now preserve DIR's
set-user-ID and set-group-ID bits instead of clearing them, and
similarly for `mkdir -m 755 DIR' and `mkdir -m u=rwx,go=rx DIR'. To
clear the bits, mention them explicitly in a symbolic mode, e.g.,
`mkdir -m u=rwx,go=rx,-s DIR'. To set them, mention them explicitly
in either a symbolic or a numeric mode, e.g., `mkdir -m 2755 DIR',
`mkdir -m u=rwx,go=rx,g+s' DIR. This change is for convenience on
systems where these bits inherit from parents. Unfortunately other
operating systems are not consistent here, and portable scripts
cannot assume the bits are set, cleared, or preserved, even when the
bits are explicitly mentioned. For example, OpenBSD 3.9 `mkdir -m
777 D' preserves D's setgid bit but `chmod 777 D' clears it.
Conversely, Solaris 10 `mkdir -m 777 D', `mkdir -m g-s D', and
`chmod 0777 D' all preserve D's setgid bit, and you must use
something like `chmod g-s D' to clear it.
`cp --link --no-dereference' now works also on systems where the
link system call cannot create a hard link to a symbolic link.
This change has no effect on systems with a Linux-based kernel.
csplit and nl now use POSIX syntax for regular expressions, not
Emacs syntax. As a result, character classes like [[:print:]] and
interval expressions like A\{1,9\} now have their usual meaning,
. no longer matches the null character, and \ must precede the + and
? operators.
date: a command like date -d '2006-04-23 21 days ago' would print
the wrong date in some time zones. (see the test for an example)
df now considers "none" and "proc" file systems to be dummies and
therefore does not normally display them. Also, inaccessible file
systems (which can be caused by shadowed mount points or by chrooted
bind mounts) are now dummies, too.
expr no longer complains about leading ^ in a regular expression
(the anchor is ignored), or about regular expressions like A** (the
second "*" is ignored). expr now exits with status 2 (not 3) for
errors it detects in the expression's values; exit status 3 is now
used only for internal errors (such as integer overflow, which expr
now checks for).
install and mkdir now implement the X permission symbol correctly,
e.g., `mkdir -m a+X dir'; previously the X was ignored.
install now creates parent directories with mode u=rwx,go=rx (755)
instead of using the mode specified by the -m option; and it does
not change the owner or group of parent directories. This is for
compatibility with BSD and closes some race conditions.
ln now uses different (and we hope clearer) diagnostics when it fails.
ln -v now acts more like FreeBSD, so it generates output only when
successful and the output is easier to parse.
ls now defaults to --time-style='locale', not --time-style='posix-long-iso'.
However, the 'locale' time style now behaves like 'posix-long-iso'
if your locale settings appear to be messed up. This change
attempts to have the default be the best of both worlds.
mkfifo and mknod no longer set special mode bits (setuid, setgid,
and sticky) with the -m option.
nohup's usual diagnostic now more precisely specifies the I/O
redirections, e.g., "ignoring input and appending output to
nohup.out". Also, nohup now redirects stderr to nohup.out (or
$HOME/nohup.out) if stdout is closed and stderr is a tty; this is in
response to Open Group XCU ERN 71.
rm --interactive now takes an optional argument, although the
default of using no argument still acts like -i.
rm no longer fails to remove an empty, unreadable directory
seq changes:
seq defaults to a minimal fixed point format that does not lose
information if seq's operands are all fixed point decimal numbers.
You no longer need the `-f%%.f' in `seq -f%%.f 1048575 1024 1050623',
for example, since the default format now has the same effect.
seq now lets you use %%a, %%A, %%E, %%F, and %%G formats.
seq now uses long double internally rather than double.
sort now reports incompatible options (e.g., -i and -n) rather than
silently ignoring one of them.
stat's --format=FMT option now works the way it did before 5.3.0:
FMT is automatically newline terminated. The first stable release
containing this change was 5.92.
stat accepts the new option --printf=FMT, where FMT is *not*
automatically newline terminated.
stat: backslash escapes are interpreted in a format string specified
via --printf=FMT, but not one specified via --format=FMT. That includes
octal (\ooo, at most three octal digits), hexadecimal (\xhh, one or
two hex digits), and the standard sequences (\a, \b, \f, \n, \r, \t,
\v, \", \\).
With no operand, 'tail -f' now silently ignores the '-f' only if
standard input is a FIFO or pipe and POSIXLY_CORRECT is set.
Formerly, it ignored the '-f' when standard input was a FIFO, pipe,
or socket.
** Scheduled for removal
ptx's --copyright (-C) option is scheduled for removal in 2007, and
now evokes a warning. Use --version instead.
rm's --directory (-d) option is scheduled for removal in 2006. This
option has been silently ignored since coreutils 5.0. On systems
that support unlinking of directories, you can use the "unlink"
command to unlink a directory.
Similarly, we are considering the removal of ln's --directory (-d,
-F) option in 2006. Please write to <bug-coreutils@gnu.org> if this
would cause a problem for you. On systems that support hard links
to directories, you can use the "link" command to create one.
** New programs
base64: base64 encoding and decoding (RFC 3548) functionality.
sha224sum: print or check a SHA224 (224-bit) checksum
sha256sum: print or check a SHA256 (256-bit) checksum
sha384sum: print or check a SHA384 (384-bit) checksum
sha512sum: print or check a SHA512 (512-bit) checksum
shuf: Shuffle lines of text.
** New features
chgrp now supports --preserve-root, --no-preserve-root (default),
as it was documented to do, and just as chmod, chown, and rm do.
New dd iflag= and oflag= flags:
'directory' causes dd to fail unless the file is a directory, on
hosts that support this (e.g., Linux kernels, version 2.1.126 and
later). This has limited utility but is present for completeness.
'noatime' causes dd to read a file without updating its access
time, on hosts that support this (e.g., Linux kernels, version
2.6.8 and later).
'nolinks' causes dd to fail if the file has multiple hard links,
on hosts that support this (e.g., Solaris 10 and later).
ls accepts the new option --group-directories-first, to make it
list directories before files.
rm now accepts the -I (--interactive=once) option. This new option
prompts once if rm is invoked recursively or if more than three
files are being deleted, which is less intrusive than -i prompting
for every file, but provides almost the same level of protection
against mistakes.
shred and sort now accept the --random-source option.
sort now accepts the --random-sort (-R) option and `R' ordering option.
sort now supports obsolete usages like "sort +1 -2" unless
POSIXLY_CORRECT is set. However, when conforming to POSIX
1003.1-2001 "sort +1" still sorts the file named "+1".
wc accepts a new option --files0-from=FILE, where FILE contains a
list of NUL-terminated file names.
** Bug fixes
cat with any of the options, -A -v -e -E -T, when applied to a
file in /proc or /sys (linux-specific), would truncate its output,
usually printing nothing.
cp -p would fail in a /proc-less chroot, on some systems
When `cp -RL' encounters the same directory more than once in the
hierarchy beneath a single command-line argument, it no longer confuses
them with hard-linked directories.
fts-using tools (chmod, chown, chgrp, du) no longer fail due to
a double-free bug -- it could be triggered by making a directory
inaccessible while e.g., du is traversing the hierarchy under it.
fts-using tools (chmod, chown, chgrp, du) no longer misinterpret
a very long symlink chain as a dangling symlink. Before, such a
misinterpretation would cause these tools not to diagnose an ELOOP error.
ls --indicator-style=file-type would sometimes stat a symlink
unnecessarily.
ls --file-type worked like --indicator-style=slash (-p),
rather than like --indicator-style=file-type.
mv: moving a symlink into the place of an existing non-directory is
now done atomically; before, mv would first unlink the destination.
mv -T DIR EMPTY_DIR no longer fails unconditionally. Also, mv can
now remove an empty destination directory: mkdir -p a b/a; mv a b
rm (on systems with openat) can no longer exit before processing
all command-line arguments.
rm is no longer susceptible to a few low-probability memory leaks.
rm -r no longer fails to remove an inaccessible and empty directory
rm -r's cycle detection code can no longer be tricked into reporting
a false positive (introduced in fileutils-4.1.9).
shred --remove FILE no longer segfaults on Gentoo systems
sort would fail for large inputs (~50MB) on systems with a buggy
mkstemp function. sort and tac now use the replacement mkstemp
function, and hence are no longer subject to limitations (of 26 or 32,
on the maximum number of files from a given template) on HP-UX 10.20,
SunOS 4.1.4, Solaris 2.5.1 and OSF1/Tru64 V4.0F&V5.1.
tail -f once again works on a file with the append-only
attribute (affects at least Linux ext2, ext3, xfs file systems)
* Tue Aug 08 2006 - schwab@suse.de
- Move sux to %%{_bindir}.
* Mon Jun 26 2006 - schwab@suse.de
- Update to coreutils 5.97.
** Bug fixes
rebuild with better autoconf test for when the lstat replacement
function is needed -- required for Solaris 9
cat with any of the options, -A -v -e -E -T, when applied to a
file in /proc or /sys (linux-specific), would truncate its output,
usually printing nothing.
** Improved robustness
dircolors: a new autoconf run-test for AIX's buggy strndup function
prevents malfunction on that system; may also affect cut, expand,
and unexpand.
** New features
chgrp now supports --preserve-root, --no-preserve-root (default),
as it was documented to do, and just as chmod, chown, and rm do.
* Thu Jun 22 2006 - schwab@suse.de
- Fix conflict with <fcntl.h>.
* Mon May 22 2006 - schwab@suse.de
- Update to coreutils 5.96.
* Sat May 13 2006 - schwab@suse.de
- Update to coreutils 5.95.
* Fri Apr 07 2006 - cthiel@suse.de
- added Obsoletes: libselinux (hack for bug #156519)
* Mon Feb 13 2006 - schwab@suse.de
- Fix spurious failure with cp -LR.
- Move check for /proc.
* Mon Jan 30 2006 - schwab@suse.de
- Always print newline after format in stat [#145905].
- Barf if /proc is not mounted.
* Wed Jan 25 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
* Thu Jan 19 2006 - meissner@suse.de
- Do not strip /bin/su.
* Wed Jan 11 2006 - schwab@suse.de
- Fix infloop when ignoring characters [#141756].
* Mon Dec 19 2005 - kukuk@suse.de
- Add fallback if futimesat does not work
* Mon Dec 05 2005 - ke@suse.de
- Fix typo in German translation file; reported by Olaf Hering
[#105863].
* Mon Dec 05 2005 - schwab@suse.de
- Drop SELinux support.
* Tue Nov 15 2005 - uli@suse.de
- some tests fail on ARM (QEMU problem?); ignore for now
* Sun Nov 06 2005 - schwab@suse.de
- Update to coreutils 5.93.
* Wed Nov 02 2005 - schwab@suse.de
- Update to coreutils 5.92.
- Fix invalid use of va_list.
- Add some fixes from cvs.
* Thu Oct 20 2005 - schwab@suse.de
- Reenable DEFAULT_POSIX2_VERSION.
* Wed Oct 19 2005 - agruen@suse.de
- Add acl and xattr patches.
* Mon Oct 17 2005 - schwab@suse.de
- Update to coreutils 5.91.
* Sat Oct 01 2005 - schwab@suse.de
- Update to coreutils 5.90.
- Disable acl patches for now.
* Sun Sep 25 2005 - schwab@suse.de
- Fix warning.
* Wed Aug 24 2005 - werner@suse.de
- Let `su' handle /sbin and /usr/sbin in path
* Mon Aug 01 2005 - kukuk@suse.de
- And yet another uninitialized variable fix.
* Fri Jul 29 2005 - schwab@suse.de
- Fix another uninitialized variable.
* Wed Jul 06 2005 - schwab@suse.de
- Fix uninitialized variable.
* Mon Jul 04 2005 - schwab@suse.de
- Update i18n patch.
* Mon Jun 20 2005 - schwab@suse.de
- Fix last change.
* Wed Jun 15 2005 - kukuk@suse.de
- Compile/link su with -fpie/-pie
* Sat May 21 2005 - kukuk@suse.de
- Add support for /etc/default/su
* Mon May 02 2005 - kukuk@suse.de
- Don't overwrite PATH if su is called with "-" option.
* Wed Mar 02 2005 - schwab@suse.de
- Fix merge error [#67103].
* Mon Feb 28 2005 - schwab@suse.de
- Call pam_getenvlist before pam_end.
* Mon Feb 28 2005 - schwab@suse.de
- Link su to sux [#66830].
* Wed Feb 02 2005 - schwab@suse.de
- Handle xfs and jfs in stat [#50415].
* Wed Feb 02 2005 - schwab@suse.de
- Handle subfs like autofs.
* Tue Jan 25 2005 - schwab@suse.de
- Fix path_concat.
* Thu Jan 20 2005 - schwab@suse.de
- Use pam_xauth [#42238].
* Fri Jan 14 2005 - schwab@suse.de
- Fix merge error [#49853].
* Tue Jan 11 2005 - schwab@suse.de
- Update to coreutils 5.3.0.
* Mon Nov 08 2004 - kukuk@suse.de
- Use common-* PAM config files for su PAM configuration
* Mon Oct 25 2004 - schwab@suse.de
- Fix last change.
- Fix selinux patch.
* Wed Oct 20 2004 - ro@suse.de
- remove no language support (nb is already there)
* Sat Oct 02 2004 - agruen@suse.de
- #46609: Fix chown and chgrp utilities for uid == (uid_t) -1 and
gid == (gid_t) -1 case.
- Add missing #include to have NULL defined in lib/acl.c
* Fri Sep 10 2004 - schwab@suse.de
- Fix uninitialized variable [#44929].
- Fix selinux patch.
* Wed Aug 25 2004 - schwab@suse.de
- Fix hardlink accounting patch.
* Mon May 24 2004 - schwab@suse.de
- Update testsuite for change in chown.
* Mon May 24 2004 - schwab@suse.de
- Precompute length in caller of ismbblank to avoid quadratic behaviour
[#40741].
* Mon May 17 2004 - schwab@suse.de
- Fix handling of symlinks in chown [#40691].
* Sat Apr 17 2004 - schwab@suse.de
- Pacify autobuild.
* Fri Apr 02 2004 - schwab@suse.de
- Add support for IUTF8 in stty.
* Tue Mar 30 2004 - schwab@suse.de
- Fix merge error in selinux patch [#37431].
* Mon Mar 29 2004 - schwab@suse.de
- Fix hardlink accounting in du.
* Mon Mar 22 2004 - schwab@suse.de
- Fix race in the testsuite.
* Mon Mar 15 2004 - kukuk@suse.de
- Update SELinux patch to new libselinux interface
* Mon Mar 15 2004 - schwab@suse.de
- Fix date parsing.
* Sat Mar 13 2004 - schwab@suse.de
- Update to coreutils 5.2.1.
* Includes mv fix.
* Fix sparse handling in cp.
* Fix descriptor leak in nohup.
* Fix POSIX issues in expr.
* Always allow user.group in chown.
* Fri Mar 12 2004 - schwab@suse.de
- Fix sysinfo patch [#35337].
* Fri Mar 12 2004 - schwab@suse.de
- Fix preserving links in mv.
* Wed Mar 03 2004 - schwab@suse.de
- Fix help output from mkdir.
* Fri Feb 20 2004 - schwab@suse.de
- Update to coreutils 5.2.0.
* Mon Feb 09 2004 - schwab@suse.de
- Update to coreutils 5.1.3.
* Mon Feb 02 2004 - agruen@suse.de
- Update acl and xattr patches, and add some Changelog text.
* Mon Jan 26 2004 - schwab@suse.de
- Update to coreutils 5.1.2.
* Fri Jan 23 2004 - schwab@suse.de
- Don't link [ to test.
* Mon Jan 19 2004 - schwab@suse.de
- Update to coreutils 5.1.1.
- Default to POSIX.2-1992.
* Fri Jan 16 2004 - kukuk@suse.de
- Add pam-devel to neededforbuild
* Fri Jan 09 2004 - schwab@suse.de
- Fix spurious test failure.
* Thu Jan 08 2004 - schwab@suse.de
- Update to coreutils 5.1.0.
* Fri Dec 12 2003 - schwab@suse.de
- Fix use of AC_SEARCH_LIBS.
* Tue Dec 09 2003 - schwab@suse.de
- Cleanup SELinux patch.
* Tue Dec 09 2003 - kukuk@suse.de
- Add SELinux patch.
* Wed Nov 26 2003 - schwab@suse.de
- Fix sorting of months in multibyte case [#33299].
* Wed Oct 22 2003 - schwab@suse.de
- Fix building without extended attributes.
* Wed Oct 15 2003 - schwab@suse.de
- Cleanup sysinfo patch.
* Fri Sep 19 2003 - kukuk@suse.de
- Add missing textutil to Provides
* Mon Aug 25 2003 - agruen@suse.de
- Fix uname command to report reasonable processor and platform
information (coreutils-sysinfo.diff: based on similar RedHat
patch).
* Mon Jul 21 2003 - schwab@suse.de
- Fix typo in i18n patch for join.
* Fri Jul 18 2003 - schwab@suse.de
- Avoid abort in sort on inconsistent locales [#26506].
* Tue Jul 15 2003 - okir@suse.de
- make su export variables declared via pam_putenv
* Wed May 28 2003 - kukuk@suse.de
- PAM fixes for su:
- Move pam_open_session call before dropping privilegs, session
management needs max. possible credentials and needs to be done
before we change into the home directory of the user.
- Don't set PAM_TTY and PAM_RUSER to fake names.
- Use conversion function from libpam_misc.
* Fri May 16 2003 - schwab@suse.de
- Fix exit status from su.
* Thu Apr 24 2003 - ro@suse.de
- fix head calling syntax
* Mon Apr 07 2003 - schwab@suse.de
- Only delete info entries when removing last version.
* Fri Apr 04 2003 - schwab@suse.de
- Update to coreutils 5.0.
* Mon Mar 31 2003 - schwab@suse.de
- Update to coreutils 4.5.12.
* Thu Mar 20 2003 - schwab@suse.de
- Update to coreutils 4.5.11.
* Mon Mar 10 2003 - schwab@suse.de
- Fix LFS bug in du [#24960].
* Thu Feb 27 2003 - schwab@suse.de
- Readd textutils i18n patches.
* Thu Feb 27 2003 - agruen@suse.de
- Per hint from Andreas Schwab, don't use awk in autoconf. (The
improved test is simpler, too.)
* Thu Feb 27 2003 - agruen@suse.de
- Fix autoconf test for attr_copy_file that caused all binaries
to be linked needlessly against libattr.so.
* Tue Feb 25 2003 - agruen@suse.de
- Extended attribute copying: Use the newly exported
attr_copy_check_permissions() callback exported by libattr.so,
so that the EA copying done by coreutils is consistent with
other apps [#24244].
* Mon Feb 24 2003 - schwab@suse.de
- Update to coreutils 4.5.8.
* Fixes bugs in du.
* Mon Feb 17 2003 - agruen@suse.de
- Add extended attribute copying patch: Affects cp, mv, install.
See the cp manual page for details on the changes in cp. The
mv utility always tries to copy extended attributes; install
never does.
* Mon Feb 10 2003 - schwab@suse.de
- Update to coreutils 4.5.7.
* Fri Feb 07 2003 - kukuk@suse.de
- Use pam_unix2.so instead of pam_unix.so, use same rules for
password changing as passwd.
* Thu Feb 06 2003 - schwab@suse.de
- Use %%install_info.
* Thu Feb 06 2003 - schwab@suse.de
- Update to coreutils 4.5.6.
* Mon Feb 03 2003 - schwab@suse.de
- Package created, combining textutils, sh-utils and fileutils.

11
getcwd.diff Normal file
View File

@ -0,0 +1,11 @@
--- lib/getcwd.c
+++ lib/getcwd.c
@@ -137,7 +137,7 @@
size_t allocated = size;
size_t used;
-#if HAVE_PARTLY_WORKING_GETCWD && !defined AT_FDCWD
+#if HAVE_PARTLY_WORKING_GETCWD
/* The system getcwd works, except it sometimes fails when it
shouldn't, setting errno to ERANGE, ENAMETOOLONG, or ENOENT. If
AT_FDCWD is not defined, the algorithm below is O(N**2) and this

12
i18n-infloop.diff Normal file
View File

@ -0,0 +1,12 @@
--- src/sort.c
+++ src/sort.c
@@ -1838,7 +1838,8 @@
if (MBLENGTH == (size_t)-2 || MBLENGTH == (size_t)-1) \
STATE = state_bak; \
if (!ignore) \
- COPY[NEW_LEN++] = TEXT[i++]; \
+ COPY[NEW_LEN++] = TEXT[i]; \
+ i++; \
continue; \
} \
\

25
i18n-uninit.diff Normal file
View File

@ -0,0 +1,25 @@
--- src/cut.c
+++ src/cut.c
@@ -869,7 +869,10 @@
c = getc (stream);
empty_input = (c == EOF);
if (c != EOF)
- ungetc (c, stream);
+ {
+ ungetc (c, stream);
+ wc = 0;
+ }
else
wc = WEOF;
--- src/expand.c
+++ src/expand.c
@@ -414,7 +414,7 @@
for (;;)
{
/* Input character, or EOF. */
- wint_t wc;
+ wint_t wc = 0;
/* If true, perform translations. */
bool convert = true;

47
invalid-ids.diff Normal file
View File

@ -0,0 +1,47 @@
While uid_t and gid_t are both unsigned, the values (uid_t) -1 and
(gid_t) -1 are reserved. A uid or gid argument of -1 to the chown(2)
system call means to leave the uid/gid unchanged. Catch this case
so that trying to set a uid or gid to -1 will result in an error.
Test cases:
chown 4294967295 file
chown :4294967295 file
chgrp 4294967295 file
Andreas Gruenbacher <agruen@suse.de>
Index: coreutils-5.2.1/lib/userspec.c
================================================================================
--- coreutils-5.3.0/lib/userspec.c
+++ coreutils-5.3.0/lib/userspec.c
@@ -184,7 +184,7 @@
{
unsigned long int tmp;
if (xstrtoul (u, NULL, 10, &tmp, "") == LONGINT_OK
- && tmp <= MAXUID)
+ && tmp <= MAXUID && tmp != (uid_t) -1)
unum = tmp;
else
error_msg = E_invalid_user;
@@ -214,7 +214,8 @@
if (grp == NULL)
{
unsigned long int tmp;
- if (xstrtoul (g, NULL, 10, &tmp, "") == LONGINT_OK && tmp <= MAXGID)
+ if (xstrtoul (g, NULL, 10, &tmp, "") == LONGINT_OK && tmp <= MAXGID
+ && tmp != (gid_t) -1)
gnum = tmp;
else
error_msg = E_invalid_group;
--- coreutils-5.3.0/src/chgrp.c
+++ coreutils-5.3.0/src/chgrp.c
@@ -91,7 +91,7 @@
{
unsigned long int tmp;
if (! (xstrtoul (name, NULL, 10, &tmp, "") == LONGINT_OK
- && tmp <= GID_T_MAX))
+ && tmp <= GID_T_MAX && tmp != (gid_t) -1))
error (EXIT_FAILURE, 0, _("invalid group %s"), quote (name));
gid = tmp;
}

10
no-no.diff Normal file
View File

@ -0,0 +1,10 @@
--- po/LINGUAS
+++ po/LINGUAS
@@ -19,7 +19,6 @@
ms
nb
nl
-no
pl
pt
pt_BR

0
ready Normal file
View File

11
su.default Normal file
View File

@ -0,0 +1,11 @@
# Per default, only "su -" will set a new PATH.
# If this variable is changed to "yes" (default is "no"),
# every su call will overwrite the PATH variable.
ALWAYS_SET_PATH=no
# Default path.
PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
# Default path for a user invoking su to root.
SUPATH=/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin

7
su.pamd Normal file
View File

@ -0,0 +1,7 @@
#%PAM-1.0
auth sufficient pam_rootok.so
auth include common-auth
account include common-account
password include common-password
session include common-session
session optional pam_xauth.so