forked from pool/coreutils
This commit is contained in:
parent
36c46a63ea
commit
06a642b9ff
@ -1,4 +0,0 @@
|
|||||||
<multibuild>
|
|
||||||
<flavor>single</flavor>
|
|
||||||
<flavor>testsuite</flavor>
|
|
||||||
</multibuild>
|
|
89
acl-test.diff
Normal file
89
acl-test.diff
Normal 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])])
|
@ -1,3 +0,0 @@
|
|||||||
targettype x86 package coreutils
|
|
||||||
+^/bin/uname$
|
|
||||||
prereq -glibc-x86
|
|
38
coreutils-5.0-pam-env.patch
Normal file
38
coreutils-5.0-pam-env.patch
Normal 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);
|
||||||
|
|
3998
coreutils-5.3.0-i18n-0.1.patch
Normal file
3998
coreutils-5.3.0-i18n-0.1.patch
Normal file
File diff suppressed because it is too large
Load Diff
21
coreutils-5.3.0-pie.diff
Normal file
21
coreutils-5.3.0-pie.diff
Normal 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)
|
143
coreutils-5.3.0-sbin4su.diff
Normal file
143
coreutils-5.3.0-sbin4su.diff
Normal 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
764
coreutils-6.7.diff
Normal 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
3
coreutils-6.7.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:4d7027cc803682decdadf850095dce7e22cc08eba2b1283e16d0fb7a675ac1f0
|
||||||
|
size 5315342
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:4458d8de7849df44ccab15e16b1548b285224dbba5f08fac070c1c0e0bcc4cfa
|
|
||||||
size 5547836
|
|
@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCAAdFiEEbDfcEhIaUAa8HbgE32/ZcTBgN9kFAl5hC5MACgkQ32/ZcTBg
|
|
||||||
N9n92Q//Td2GE1f8AZKkxCNI76Q/TqbxAwhjbkR+KdzvsyMePmgHcMgHG6sO2MNF
|
|
||||||
g6DIBmHpO3vWGzvUxUZRRhuW5QBOnMxHb/WXZ0p/g45d5MQdn4i0dA0wUJgByOqn
|
|
||||||
/WVfygNg9mrWFx/uTeCdhrwL11m71C7j/eQVu7Wr5DIb20VJ8+nVC2IWW33ZvxRj
|
|
||||||
Goa0wwDpeeD9qYe/Y+E5ZyhDYHJGRmNAlS03SXLO3+RfsbZFwdQEtzvr+v1VN6/S
|
|
||||||
9OsoI/GLdRjY1tByppaoZ63ZybB6iF5zZfJiWDF7Nw4MduJpjZQDSywiNleJ9vOi
|
|
||||||
fwR1180PjMV6aTXvPwqbqQxZjDl7nqvO36ghlTvErJbqdJVIYxmUGNjeJyjqI85l
|
|
||||||
Lhckh0GWos9K/kl13Ry9KWsxNQgfjNhtgjXGh+W47ojrho2kCiK5BTwDFeVU0jtU
|
|
||||||
H/1EePSGAIUF/Sfjz3rmGgLaaBwPiRiyzEIuZMyd4NCJWwfOTqgOshOYw15GCWYq
|
|
||||||
wGesN/4LWzEja7Au5lHP7imXjP0bp4qE/sYrOb4WzVVLCn+z2hu6SEIzjJzSm+D+
|
|
||||||
8Wv3Ia1/ypVpR+Z7gUt7VtEvI8zAwlySd/6Jw5U7TL0rzvZsTVWmCvEjPp+o3jCB
|
|
||||||
Fy/4ybao1gowBFtT1AtPMmxmiJ41KWCxLFrTuGJpFYCGvBH2y8s=
|
|
||||||
=yHV6
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@ -1,39 +0,0 @@
|
|||||||
From d1a49cccf99373293a88f5bce74857d5bb813e46 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Bernhard Voelker <mail@bernhard-voelker.de>
|
|
||||||
Date: Thu, 10 Jan 2013 09:21:22 +0200
|
|
||||||
Subject: build timeout as PIE
|
|
||||||
|
|
||||||
The OBS requires /usr/bin/timeout to be built as an position
|
|
||||||
independent executable (PIE). This is enforced via RPMLINT.
|
|
||||||
|
|
||||||
* src/local.mk (AM_CFLAGS): Add -fpie option.
|
|
||||||
(timeout_CFLAGS): Likewise.
|
|
||||||
(timeout_LDFLAGS): Add -pie option.
|
|
||||||
|
|
||||||
---
|
|
||||||
src/local.mk | 5 ++++-
|
|
||||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: src/local.mk
|
|
||||||
===================================================================
|
|
||||||
--- src/local.mk.orig
|
|
||||||
+++ src/local.mk
|
|
||||||
@@ -17,7 +17,7 @@
|
|
||||||
## along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
# FIXME: once lib/ and gnulib-tests/ are also converted, hoist to Makefile.am
|
|
||||||
-AM_CFLAGS = $(WERROR_CFLAGS)
|
|
||||||
+AM_CFLAGS = $(WERROR_CFLAGS) -fpie
|
|
||||||
|
|
||||||
# The list of all programs (separated in different variables to express
|
|
||||||
# the how and when they should be installed) is defined in this makefile
|
|
||||||
@@ -280,6 +280,9 @@ src_factor_LDADD += $(LIB_GMP)
|
|
||||||
# for getloadavg
|
|
||||||
src_uptime_LDADD += $(GETLOADAVG_LIBS)
|
|
||||||
|
|
||||||
+src_timeout_CFLAGS = -fpie
|
|
||||||
+src_timeout_LDFLAGS = -pie
|
|
||||||
+
|
|
||||||
# for various ACL functions
|
|
||||||
copy_ldadd += $(LIB_ACL)
|
|
||||||
src_ls_LDADD += $(LIB_HAS_ACL)
|
|
44
coreutils-changelog.diff
Normal file
44
coreutils-changelog.diff
Normal 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.
|
||||||
|
|
@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
gnulib-tests/gnulib.mk | 8 ++++----
|
|
||||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
Index: gnulib-tests/gnulib.mk
|
|
||||||
===================================================================
|
|
||||||
--- gnulib-tests/gnulib.mk.orig
|
|
||||||
+++ gnulib-tests/gnulib.mk
|
|
||||||
@@ -951,10 +951,10 @@ EXTRA_DIST += test-getloadavg.c signatur
|
|
||||||
|
|
||||||
## begin gnulib module getlogin-tests
|
|
||||||
|
|
||||||
-TESTS += test-getlogin
|
|
||||||
-check_PROGRAMS += test-getlogin
|
|
||||||
-test_getlogin_LDADD = $(LDADD) $(LIB_GETLOGIN)
|
|
||||||
-EXTRA_DIST += test-getlogin.c test-getlogin.h signature.h macros.h
|
|
||||||
+#TESTS += test-getlogin
|
|
||||||
+#check_PROGRAMS += test-getlogin
|
|
||||||
+#test_getlogin_LDADD = $(LDADD) $(LIB_GETLOGIN)
|
|
||||||
+#EXTRA_DIST += test-getlogin.c test-getlogin.h signature.h macros.h
|
|
||||||
|
|
||||||
## end gnulib module getlogin-tests
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
gnulib-tests/test-getaddrinfo.c | 6 +-----
|
|
||||||
1 file changed, 1 insertion(+), 5 deletions(-)
|
|
||||||
|
|
||||||
Index: gnulib-tests/test-getaddrinfo.c
|
|
||||||
===================================================================
|
|
||||||
--- gnulib-tests/test-getaddrinfo.c.orig
|
|
||||||
+++ gnulib-tests/test-getaddrinfo.c
|
|
||||||
@@ -93,11 +93,7 @@ simple (char const *host, char const *se
|
|
||||||
the test merely because someone is down the country on their
|
|
||||||
in-law's farm. */
|
|
||||||
if (res == EAI_AGAIN)
|
|
||||||
- {
|
|
||||||
- skip++;
|
|
||||||
- fprintf (stderr, "skipping getaddrinfo test: no network?\n");
|
|
||||||
- return 77;
|
|
||||||
- }
|
|
||||||
+ return 0;
|
|
||||||
/* IRIX reports EAI_NONAME for "https". Don't fail the test
|
|
||||||
merely because of this. */
|
|
||||||
if (res == EAI_NONAME)
|
|
@ -1,25 +0,0 @@
|
|||||||
Disable gnulib test 'test-float' temporarily as it fails on ppc and ppc64le.
|
|
||||||
|
|
||||||
* gnulib-tests/gnulib.mk: Comment lines related to 'test-float'.
|
|
||||||
---
|
|
||||||
gnulib-tests/gnulib.mk | 7 ++++---
|
|
||||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
Index: gnulib-tests/gnulib.mk
|
|
||||||
===================================================================
|
|
||||||
--- gnulib-tests/gnulib.mk.orig
|
|
||||||
+++ gnulib-tests/gnulib.mk
|
|
||||||
@@ -635,9 +635,10 @@ EXTRA_DIST += test-filevercmp.c macros.h
|
|
||||||
|
|
||||||
## begin gnulib module float-tests
|
|
||||||
|
|
||||||
-TESTS += test-float
|
|
||||||
-check_PROGRAMS += test-float
|
|
||||||
-EXTRA_DIST += test-float.c macros.h
|
|
||||||
+# Test fails with GCC-10 on ppc and ppc64le.
|
|
||||||
+#TESTS += test-float
|
|
||||||
+#check_PROGRAMS += test-float
|
|
||||||
+#EXTRA_DIST += test-float.c macros.h
|
|
||||||
|
|
||||||
## end gnulib module float-tests
|
|
||||||
|
|
5332
coreutils-i18n.patch
5332
coreutils-i18n.patch
File diff suppressed because it is too large
Load Diff
@ -1,30 +0,0 @@
|
|||||||
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>
|
|
||||||
|
|
||||||
---
|
|
||||||
src/chgrp.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: src/chgrp.c
|
|
||||||
===================================================================
|
|
||||||
--- src/chgrp.c.orig
|
|
||||||
+++ src/chgrp.c
|
|
||||||
@@ -89,7 +89,7 @@ parse_group (const char *name)
|
|
||||||
{
|
|
||||||
uintmax_t tmp;
|
|
||||||
if (! (xstrtoumax (name, NULL, 10, &tmp, "") == LONGINT_OK
|
|
||||||
- && tmp <= GID_T_MAX))
|
|
||||||
+ && tmp <= GID_T_MAX && (gid_t) tmp != (gid_t) -1))
|
|
||||||
die (EXIT_FAILURE, 0, _("invalid group: %s"),
|
|
||||||
quote (name));
|
|
||||||
gid = tmp;
|
|
@ -1,156 +0,0 @@
|
|||||||
Upstream commits (squashed) after the release of coreutils-8.32:
|
|
||||||
[PATCH 1/2] ls: restore 8.31 behavior on removed directories
|
|
||||||
[PATCH 2/2] ls: improve removed-directory test
|
|
||||||
Remove this patch with the next coreutils release.
|
|
||||||
|
|
||||||
Discussed at:
|
|
||||||
https://lists.gnu.org/archive/html/bug-coreutils/2020-03/msg00008.html
|
|
||||||
|
|
||||||
Upstream commits:
|
|
||||||
https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=10fcb97
|
|
||||||
https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=672819c
|
|
||||||
|
|
||||||
commit 672819c73f2e94e61386dc0584bddf9da860cc26 (HEAD -> master, origin/master, origin/HEAD)
|
|
||||||
Author: Paul Eggert <eggert@cs.ucla.edu>
|
|
||||||
Date: Sat Mar 7 10:29:51 2020 -0800
|
|
||||||
|
|
||||||
ls: improve removed-directory test
|
|
||||||
|
|
||||||
* tests/ls/removed-directory.sh: Remove host_triplet test.
|
|
||||||
Skip this test if one cannot remove the working directory.
|
|
||||||
From a suggestion by Bernhard Voelker (Bug#39929).
|
|
||||||
|
|
||||||
commit 10fcb97bd728f09d4a027eddf8ad2900f0819b0a
|
|
||||||
Author: Paul Eggert <eggert@cs.ucla.edu>
|
|
||||||
Date: Thu Mar 5 17:25:29 2020 -0800
|
|
||||||
|
|
||||||
ls: restore 8.31 behavior on removed directories
|
|
||||||
|
|
||||||
* NEWS: Mention this.
|
|
||||||
* src/ls.c: Do not include <sys/sycall.h>
|
|
||||||
(print_dir): Don't worry about whether the directory is removed.
|
|
||||||
* tests/ls/removed-directory.sh: Adjust to match new (i.e., old)
|
|
||||||
behavior.
|
|
||||||
---
|
|
||||||
NEWS | 9 +++++++++
|
|
||||||
src/ls.c | 22 ----------------------
|
|
||||||
tests/ls/removed-directory.sh | 23 ++++++-----------------
|
|
||||||
3 files changed, 15 insertions(+), 39 deletions(-)
|
|
||||||
|
|
||||||
Index: NEWS
|
|
||||||
===================================================================
|
|
||||||
--- NEWS.orig
|
|
||||||
+++ NEWS
|
|
||||||
@@ -1,5 +1,14 @@
|
|
||||||
GNU coreutils NEWS -*- outline -*-
|
|
||||||
|
|
||||||
+* Noteworthy downstream changes (on top of upstream coreutils-8.32)
|
|
||||||
+
|
|
||||||
+** Changes in behavior
|
|
||||||
+
|
|
||||||
+ On GNU/Linux systems, ls no longer issues an error message on
|
|
||||||
+ directory merely because it was removed. This reverts a change
|
|
||||||
+ that was made in release 8.32.
|
|
||||||
+
|
|
||||||
+
|
|
||||||
* Noteworthy changes in release 8.32 (2020-03-05) [stable]
|
|
||||||
|
|
||||||
** Bug fixes
|
|
||||||
Index: src/ls.c
|
|
||||||
===================================================================
|
|
||||||
--- src/ls.c.orig
|
|
||||||
+++ src/ls.c
|
|
||||||
@@ -49,10 +49,6 @@
|
|
||||||
# include <sys/ptem.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-#ifdef __linux__
|
|
||||||
-# include <sys/syscall.h>
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#include <setjmp.h>
|
|
||||||
@@ -2896,7 +2892,6 @@ print_dir (char const *name, char const
|
|
||||||
struct dirent *next;
|
|
||||||
uintmax_t total_blocks = 0;
|
|
||||||
static bool first = true;
|
|
||||||
- bool found_any_entries = false;
|
|
||||||
|
|
||||||
errno = 0;
|
|
||||||
dirp = opendir (name);
|
|
||||||
@@ -2972,7 +2967,6 @@ print_dir (char const *name, char const
|
|
||||||
next = readdir (dirp);
|
|
||||||
if (next)
|
|
||||||
{
|
|
||||||
- found_any_entries = true;
|
|
||||||
if (! file_ignored (next->d_name))
|
|
||||||
{
|
|
||||||
enum filetype type = unknown;
|
|
||||||
@@ -3018,22 +3012,6 @@ print_dir (char const *name, char const
|
|
||||||
if (errno != EOVERFLOW)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
-#ifdef __linux__
|
|
||||||
- else if (! found_any_entries)
|
|
||||||
- {
|
|
||||||
- /* If readdir finds no directory entries at all, not even "." or
|
|
||||||
- "..", then double check that the directory exists. */
|
|
||||||
- if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1
|
|
||||||
- && errno != EINVAL)
|
|
||||||
- {
|
|
||||||
- /* We exclude EINVAL as that pertains to buffer handling,
|
|
||||||
- and we've passed NULL as the buffer for simplicity.
|
|
||||||
- ENOENT is returned if appropriate before buffer handling. */
|
|
||||||
- file_failure (command_line_arg, _("reading directory %s"), name);
|
|
||||||
- }
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
-#endif
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
|
|
||||||
Index: tests/ls/removed-directory.sh
|
|
||||||
===================================================================
|
|
||||||
--- tests/ls/removed-directory.sh.orig
|
|
||||||
+++ tests/ls/removed-directory.sh
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
#!/bin/sh
|
|
||||||
-# If ls is asked to list a removed directory (e.g. the parent process's
|
|
||||||
-# current working directory that has been removed by another process), it
|
|
||||||
-# emits an error message.
|
|
||||||
+# If ls is asked to list a removed directory (e.g., the parent process's
|
|
||||||
+# current working directory has been removed by another process), it
|
|
||||||
+# should not emit an error message merely because the directory is removed.
|
|
||||||
|
|
||||||
# Copyright (C) 2020 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
@@ -21,25 +21,14 @@
|
|
||||||
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
|
|
||||||
print_ver_ ls
|
|
||||||
|
|
||||||
-case $host_triplet in
|
|
||||||
- *linux*) ;;
|
|
||||||
- *) skip_ 'non linux kernel' ;;
|
|
||||||
-esac
|
|
||||||
-
|
|
||||||
-LS_FAILURE=2
|
|
||||||
-
|
|
||||||
-cat <<\EOF >exp-err || framework_failure_
|
|
||||||
-ls: reading directory '.': No such file or directory
|
|
||||||
-EOF
|
|
||||||
-
|
|
||||||
cwd=$(pwd)
|
|
||||||
mkdir d || framework_failure_
|
|
||||||
cd d || framework_failure_
|
|
||||||
-rmdir ../d || framework_failure_
|
|
||||||
+rmdir ../d || skip_ "can't remove working directory on this platform"
|
|
||||||
|
|
||||||
-returns_ $LS_FAILURE ls >../out 2>../err || fail=1
|
|
||||||
+ls >../out 2>../err || fail=1
|
|
||||||
cd "$cwd" || framework_failure_
|
|
||||||
compare /dev/null out || fail=1
|
|
||||||
-compare exp-err err || fail=1
|
|
||||||
+compare /dev/null err || fail=1
|
|
||||||
|
|
||||||
Exit $fail
|
|
@ -1,61 +0,0 @@
|
|||||||
---
|
|
||||||
gnulib-tests/test-isnanl.h | 5 +++--
|
|
||||||
tests/misc/help-version.sh | 1 +
|
|
||||||
tests/other-fs-tmpdir | 3 +++
|
|
||||||
3 files changed, 7 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
Index: gnulib-tests/test-isnanl.h
|
|
||||||
===================================================================
|
|
||||||
--- gnulib-tests/test-isnanl.h.orig
|
|
||||||
+++ gnulib-tests/test-isnanl.h
|
|
||||||
@@ -47,7 +47,7 @@ main ()
|
|
||||||
/* Quiet NaN. */
|
|
||||||
ASSERT (isnanl (NaNl ()));
|
|
||||||
|
|
||||||
-#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT
|
|
||||||
+#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT && 0
|
|
||||||
/* A bit pattern that is different from a Quiet NaN. With a bit of luck,
|
|
||||||
it's a Signalling NaN. */
|
|
||||||
{
|
|
||||||
@@ -98,6 +98,7 @@ main ()
|
|
||||||
{ LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
|
|
||||||
ASSERT (isnanl (x.value));
|
|
||||||
}
|
|
||||||
+#if 0
|
|
||||||
/* isnanl should return something for noncanonical values. */
|
|
||||||
{ /* Pseudo-NaN. */
|
|
||||||
static memory_long_double x =
|
|
||||||
@@ -125,6 +126,6 @@ main ()
|
|
||||||
ASSERT (isnanl (x.value) || !isnanl (x.value));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
-
|
|
||||||
+#endif
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
Index: tests/misc/help-version.sh
|
|
||||||
===================================================================
|
|
||||||
--- tests/misc/help-version.sh.orig
|
|
||||||
+++ tests/misc/help-version.sh
|
|
||||||
@@ -239,6 +239,7 @@ parted_setup () { args="-s $tmp_in mklab
|
|
||||||
for i in $built_programs; do
|
|
||||||
# Skip these.
|
|
||||||
case $i in chroot|stty|tty|false|chcon|runcon|coreutils) continue;; esac
|
|
||||||
+ case $i in df) continue;; esac
|
|
||||||
|
|
||||||
rm -rf $tmp_in $tmp_in2 $tmp_dir $tmp_out $bigZ_in $zin $zin2
|
|
||||||
echo z |gzip > $zin
|
|
||||||
Index: tests/other-fs-tmpdir
|
|
||||||
===================================================================
|
|
||||||
--- tests/other-fs-tmpdir.orig
|
|
||||||
+++ tests/other-fs-tmpdir
|
|
||||||
@@ -43,6 +43,9 @@ for d in $CANDIDATE_TMP_DIRS; do
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
+# Autobuild hack
|
|
||||||
+test -f /bin/uname.bin && other_partition_tmpdir=
|
|
||||||
+
|
|
||||||
if test -z "$other_partition_tmpdir"; then
|
|
||||||
skip_ \
|
|
||||||
"requires a writable directory on a different disk partition,
|
|
@ -1,92 +0,0 @@
|
|||||||
---
|
|
||||||
doc/coreutils.texi | 42 +-----------------------------------------
|
|
||||||
1 file changed, 1 insertion(+), 41 deletions(-)
|
|
||||||
|
|
||||||
Index: doc/coreutils.texi
|
|
||||||
===================================================================
|
|
||||||
--- doc/coreutils.texi.orig
|
|
||||||
+++ doc/coreutils.texi
|
|
||||||
@@ -71,7 +71,6 @@
|
|
||||||
* 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 files and set attributes.
|
|
||||||
* join: (coreutils)join invocation. Join lines on a common field.
|
|
||||||
@@ -203,7 +202,7 @@ Free Documentation License''.
|
|
||||||
* File name manipulation:: dirname basename pathchk mktemp realpath
|
|
||||||
* Working context:: pwd stty printenv tty
|
|
||||||
* User information:: id logname whoami groups users who
|
|
||||||
-* System context:: date arch nproc uname hostname hostid uptime
|
|
||||||
+* System context:: date arch nproc uname hostid uptime
|
|
||||||
* SELinux context:: chcon runcon
|
|
||||||
* Modified command invocation:: chroot env nice nohup stdbuf timeout
|
|
||||||
* Process control:: kill
|
|
||||||
@@ -426,7 +425,6 @@ System context
|
|
||||||
* date invocation:: Print or set system date and time
|
|
||||||
* nproc invocation:: Print the number of processors
|
|
||||||
* uname invocation:: Print system information
|
|
||||||
-* hostname invocation:: Print or set system name
|
|
||||||
* hostid invocation:: Print numeric host identifier
|
|
||||||
* uptime invocation:: Print system uptime and load
|
|
||||||
|
|
||||||
@@ -15761,7 +15759,6 @@ information.
|
|
||||||
* arch invocation:: Print machine hardware name.
|
|
||||||
* nproc invocation:: Print the number of processors.
|
|
||||||
* uname invocation:: Print system information.
|
|
||||||
-* hostname invocation:: Print or set system name.
|
|
||||||
* hostid invocation:: Print numeric host identifier.
|
|
||||||
* uptime invocation:: Print system uptime and load.
|
|
||||||
@end menu
|
|
||||||
@@ -16623,15 +16620,6 @@ Note this is non-portable (even across G
|
|
||||||
Print the machine hardware name (sometimes called the hardware class
|
|
||||||
or hardware type).
|
|
||||||
|
|
||||||
-@item -n
|
|
||||||
-@itemx --nodename
|
|
||||||
-@opindex -n
|
|
||||||
-@opindex --nodename
|
|
||||||
-@cindex hostname
|
|
||||||
-@cindex node name
|
|
||||||
-@cindex network node name
|
|
||||||
-Print the network node hostname.
|
|
||||||
-
|
|
||||||
@item -p
|
|
||||||
@itemx --processor
|
|
||||||
@opindex -p
|
|
||||||
@@ -16685,34 +16673,6 @@ Print the kernel version.
|
|
||||||
|
|
||||||
@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}.
|
|
||||||
-
|
|
||||||
-@command{hostname} is not installed by default, and other packages
|
|
||||||
-also supply a @command{hostname} command, so portable scripts should
|
|
||||||
-not rely on its existence or on the exact behavior documented above.
|
|
||||||
-
|
|
||||||
-@exitstatus
|
|
||||||
-
|
|
||||||
|
|
||||||
@node hostid invocation
|
|
||||||
@section @command{hostid}: Print numeric host identifier
|
|
@ -1,126 +0,0 @@
|
|||||||
---
|
|
||||||
doc/coreutils.texi | 90 -----------------------------------------------------
|
|
||||||
1 file changed, 90 deletions(-)
|
|
||||||
|
|
||||||
Index: doc/coreutils.texi
|
|
||||||
===================================================================
|
|
||||||
--- doc/coreutils.texi.orig
|
|
||||||
+++ doc/coreutils.texi
|
|
||||||
@@ -74,7 +74,6 @@
|
|
||||||
* id: (coreutils)id invocation. Print user identity.
|
|
||||||
* install: (coreutils)install invocation. Copy files and set attributes.
|
|
||||||
* join: (coreutils)join invocation. Join lines on a common field.
|
|
||||||
-* kill: (coreutils)kill invocation. Send a signal to processes.
|
|
||||||
* link: (coreutils)link invocation. Make hard links between files.
|
|
||||||
* ln: (coreutils)ln invocation. Make links between files.
|
|
||||||
* logname: (coreutils)logname invocation. Print current login name.
|
|
||||||
@@ -205,7 +204,6 @@ Free Documentation License''.
|
|
||||||
* System context:: date arch nproc uname hostid uptime
|
|
||||||
* SELinux context:: chcon runcon
|
|
||||||
* Modified command invocation:: chroot env nice nohup stdbuf timeout
|
|
||||||
-* Process control:: kill
|
|
||||||
* Delaying:: sleep
|
|
||||||
* Numeric operations:: factor numfmt seq
|
|
||||||
* File permissions:: Access modes
|
|
||||||
@@ -453,10 +451,6 @@ Modified command invocation
|
|
||||||
* stdbuf invocation:: Run a command with modified I/O buffering
|
|
||||||
* timeout invocation:: Run a command with a time limit
|
|
||||||
|
|
||||||
-Process control
|
|
||||||
-
|
|
||||||
-* kill invocation:: Sending a signal to processes.
|
|
||||||
-
|
|
||||||
Delaying
|
|
||||||
|
|
||||||
* sleep invocation:: Delay for a specified time
|
|
||||||
@@ -18089,90 +18083,6 @@ the exit status of @var{command} otherwi
|
|
||||||
@end display
|
|
||||||
|
|
||||||
|
|
||||||
-@node Process control
|
|
||||||
-@chapter Process control
|
|
||||||
-
|
|
||||||
-@cindex processes, commands for controlling
|
|
||||||
-@cindex commands for controlling processes
|
|
||||||
-
|
|
||||||
-@menu
|
|
||||||
-* kill invocation:: Sending a signal to processes.
|
|
||||||
-@end menu
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-@node kill invocation
|
|
||||||
-@section @command{kill}: Send a signal to processes
|
|
||||||
-
|
|
||||||
-@pindex kill
|
|
||||||
-@cindex send a signal to processes
|
|
||||||
-
|
|
||||||
-The @command{kill} command sends a signal to processes, causing them
|
|
||||||
-to terminate or otherwise act upon receiving the signal in some way.
|
|
||||||
-Alternatively, it lists information about signals. Synopses:
|
|
||||||
-
|
|
||||||
-@example
|
|
||||||
-kill [-s @var{signal} | --signal @var{signal} | -@var{signal}] @var{pid}@dots{}
|
|
||||||
-kill [-l | --list | -t | --table] [@var{signal}]@dots{}
|
|
||||||
-@end example
|
|
||||||
-
|
|
||||||
-@mayConflictWithShellBuiltIn{kill}
|
|
||||||
-
|
|
||||||
-The first form of the @command{kill} command sends a signal to all
|
|
||||||
-@var{pid} arguments. The default signal to send if none is specified
|
|
||||||
-is @samp{TERM}@. The special signal number @samp{0} does not denote a
|
|
||||||
-valid signal, but can be used to test whether the @var{pid} arguments
|
|
||||||
-specify processes to which a signal could be sent.
|
|
||||||
-
|
|
||||||
-If @var{pid} is positive, the signal is sent to the process with the
|
|
||||||
-process ID @var{pid}. If @var{pid} is zero, the signal is sent to all
|
|
||||||
-processes in the process group of the current process. If @var{pid}
|
|
||||||
-is @minus{}1, the signal is sent to all processes for which the user has
|
|
||||||
-permission to send a signal. If @var{pid} is less than @minus{}1, the signal
|
|
||||||
-is sent to all processes in the process group that equals the absolute
|
|
||||||
-value of @var{pid}.
|
|
||||||
-
|
|
||||||
-If @var{pid} is not positive, a system-dependent set of system
|
|
||||||
-processes is excluded from the list of processes to which the signal
|
|
||||||
-is sent.
|
|
||||||
-
|
|
||||||
-If a negative @var{pid} argument is desired as the first one, it
|
|
||||||
-should be preceded by @option{--}. However, as a common extension to
|
|
||||||
-POSIX, @option{--} is not required with @samp{kill
|
|
||||||
--@var{signal} -@var{pid}}. The following commands are equivalent:
|
|
||||||
-
|
|
||||||
-@example
|
|
||||||
-kill -15 -1
|
|
||||||
-kill -TERM -1
|
|
||||||
-kill -s TERM -- -1
|
|
||||||
-kill -- -1
|
|
||||||
-@end example
|
|
||||||
-
|
|
||||||
-The first form of the @command{kill} command succeeds if every @var{pid}
|
|
||||||
-argument specifies at least one process that the signal was sent to.
|
|
||||||
-
|
|
||||||
-The second form of the @command{kill} command lists signal information.
|
|
||||||
-Either the @option{-l} or @option{--list} option, or the @option{-t}
|
|
||||||
-or @option{--table} option must be specified. Without any
|
|
||||||
-@var{signal} argument, all supported signals are listed. The output
|
|
||||||
-of @option{-l} or @option{--list} is a list of the signal names, one
|
|
||||||
-per line; if @var{signal} is already a name, the signal number is
|
|
||||||
-printed instead. The output of @option{-t} or @option{--table} is a
|
|
||||||
-table of signal numbers, names, and descriptions. This form of the
|
|
||||||
-@command{kill} command succeeds if all @var{signal} arguments are valid
|
|
||||||
-and if there is no output error.
|
|
||||||
-
|
|
||||||
-The @command{kill} command also supports the @option{--help} and
|
|
||||||
-@option{--version} options. @xref{Common options}.
|
|
||||||
-
|
|
||||||
-A @var{signal} may be a signal name like @samp{HUP}, or a signal
|
|
||||||
-number like @samp{1}, or an exit status of a process terminated by the
|
|
||||||
-signal. A signal name can be given in canonical form or prefixed by
|
|
||||||
-@samp{SIG}@. The case of the letters is ignored, except for the
|
|
||||||
-@option{-@var{signal}} option which must use upper case to avoid
|
|
||||||
-ambiguity with lower case option letters.
|
|
||||||
-@xref{Signal specifications}, for a list of supported
|
|
||||||
-signal names and numbers.
|
|
||||||
-
|
|
||||||
@node Delaying
|
|
||||||
@chapter Delaying
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
|||||||
Subject: Skip the gnulib test 'test-tls' on some platforms
|
|
||||||
|
|
||||||
On i586, x86_64, ppc and ppc64, this test is known to sometimes fail
|
|
||||||
with a diagnostic like:
|
|
||||||
|
|
||||||
Starting test_tls ...*** Error in `./test-tls': free(): invalid pointer: 0x00007f21500008c0 ***
|
|
||||||
======= Backtrace: =========
|
|
||||||
/lib64/libc.so.6(+0x7406f)[0x7f215845006f]
|
|
||||||
/lib64/libc.so.6(+0x7989e)[0x7f215845589e]
|
|
||||||
/lib64/libpthread.so.0(+0x7ee2)[0x7f215878fee2]
|
|
||||||
/lib64/libpthread.so.0(+0x813e)[0x7f215879013e]
|
|
||||||
/lib64/libc.so.6(clone+0x6d)[0x7f21584c3d6d]
|
|
||||||
|
|
||||||
* gnulib-tests/gnulib.mk (test-tls): Comment to skip for now.
|
|
||||||
|
|
||||||
---
|
|
||||||
gnulib-tests/gnulib.mk | 7 ++++---
|
|
||||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
Index: gnulib-tests/gnulib.mk
|
|
||||||
===================================================================
|
|
||||||
--- gnulib-tests/gnulib.mk.orig
|
|
||||||
+++ gnulib-tests/gnulib.mk
|
|
||||||
@@ -2485,9 +2485,10 @@ EXTRA_DIST += test-timespec.c macros.h
|
|
||||||
|
|
||||||
## begin gnulib module tls-tests
|
|
||||||
|
|
||||||
-TESTS += test-tls
|
|
||||||
-check_PROGRAMS += test-tls
|
|
||||||
-test_tls_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@
|
|
||||||
+# Fails on i586 and x86_64.
|
|
||||||
+#TESTS += test-tls
|
|
||||||
+#check_PROGRAMS += test-tls
|
|
||||||
+#test_tls_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@
|
|
||||||
|
|
||||||
EXTRA_DIST += test-tls.c
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
|||||||
Subject: tests: skip some valgrind-ed tests of sort on ppc/ppc64
|
|
||||||
|
|
||||||
Valgrind diagnoses problems in 'mkstemp64' deep down in glibc on PowerPC:
|
|
||||||
|
|
||||||
Conditional jump or move depends on uninitialised value(s)
|
|
||||||
at 0xFDB37DC: __udivmoddi4 (in /lib/libc-2.18.90.so)
|
|
||||||
by 0xFDB3DD7: __umoddi3@GLIBC_2.0 (in /lib/libc-2.18.90.so)
|
|
||||||
by 0xFDFDF9F: __gen_tempname (in /lib/libc-2.18.90.so)
|
|
||||||
by 0xFE77563: mkstemp64 (in /lib/libc-2.18.90.so)
|
|
||||||
by 0x100135D3: mkstemp_safer (mkstemp-safer.c:33)
|
|
||||||
by 0x10006ECF: create_temp_file (sort.c:942)
|
|
||||||
by 0x1000A427: maybe_create_temp (sort.c:1176)
|
|
||||||
by 0x100031BF: main (sort.c:1223)
|
|
||||||
|
|
||||||
* tests/misc/sort-stale-thread-mem.sh: Skip on ppc/ppc64.
|
|
||||||
* tests/misc/sort-u-FMR.sh: Likewise.
|
|
||||||
|
|
||||||
---
|
|
||||||
tests/misc/sort-stale-thread-mem.sh | 4 ++++
|
|
||||||
tests/misc/sort-u-FMR.sh | 4 ++++
|
|
||||||
2 files changed, 8 insertions(+)
|
|
||||||
|
|
||||||
Index: tests/misc/sort-stale-thread-mem.sh
|
|
||||||
===================================================================
|
|
||||||
--- tests/misc/sort-stale-thread-mem.sh.orig
|
|
||||||
+++ tests/misc/sort-stale-thread-mem.sh
|
|
||||||
@@ -27,6 +27,10 @@ require_valgrind_
|
|
||||||
grep '^#define HAVE_PTHREAD_T 1' "$CONFIG_HEADER" > /dev/null ||
|
|
||||||
skip_ 'requires pthreads'
|
|
||||||
|
|
||||||
+case "$( uname -m )" in
|
|
||||||
+ ppc | ppc64) skip_ "SUSE: disabled for now on ppc/ppc64";;
|
|
||||||
+esac
|
|
||||||
+
|
|
||||||
# gensort output seems to trigger the failure more often,
|
|
||||||
# so prefer gensort if it is available.
|
|
||||||
(gensort -a 10000 in) 2>/dev/null ||
|
|
||||||
Index: tests/misc/sort-u-FMR.sh
|
|
||||||
===================================================================
|
|
||||||
--- tests/misc/sort-u-FMR.sh.orig
|
|
||||||
+++ tests/misc/sort-u-FMR.sh
|
|
||||||
@@ -20,6 +20,10 @@
|
|
||||||
print_ver_ sort
|
|
||||||
require_valgrind_
|
|
||||||
|
|
||||||
+case "$( uname -m )" in
|
|
||||||
+ ppc | ppc64) skip_ "SUSE: disabled for now on ppc/ppc64";;
|
|
||||||
+esac
|
|
||||||
+
|
|
||||||
{ echo 0; printf '%0900d\n' 1; } > in || framework_failure_
|
|
||||||
|
|
||||||
valgrind --error-exitcode=1 sort --p=1 -S32b -u in > out || fail=1
|
|
@ -1,14 +1,8 @@
|
|||||||
---
|
--- coreutils-5.90/src/uname.c
|
||||||
src/uname.c | 42 ++++++++++++++++++++++++++++++++++++++++++
|
+++ coreutils-5.90/src/uname.c
|
||||||
1 file changed, 42 insertions(+)
|
@@ -287,6 +287,36 @@
|
||||||
|
|
||||||
Index: src/uname.c
|
|
||||||
===================================================================
|
|
||||||
--- src/uname.c.orig
|
|
||||||
+++ src/uname.c
|
|
||||||
@@ -338,6 +338,36 @@ main (int argc, char **argv)
|
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
+ if (element == unknown)
|
+ if (element == unknown)
|
||||||
+ {
|
+ {
|
||||||
@ -41,11 +35,11 @@ Index: src/uname.c
|
|||||||
+#endif
|
+#endif
|
||||||
+ }
|
+ }
|
||||||
if (! (toprint == UINT_MAX && element == unknown))
|
if (! (toprint == UINT_MAX && element == unknown))
|
||||||
print_element (element);
|
print_element (element);
|
||||||
}
|
}
|
||||||
@@ -363,6 +393,18 @@ main (int argc, char **argv)
|
@@ -312,6 +342,18 @@
|
||||||
element = hardware_platform;
|
element = hardware_platform;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
+ if (element == unknown)
|
+ if (element == unknown)
|
||||||
+ {
|
+ {
|
||||||
@ -60,5 +54,5 @@ Index: src/uname.c
|
|||||||
+ element = hardware_platform;
|
+ element = hardware_platform;
|
||||||
+ }
|
+ }
|
||||||
if (! (toprint == UINT_MAX && element == unknown))
|
if (! (toprint == UINT_MAX && element == unknown))
|
||||||
print_element (element);
|
print_element (element);
|
||||||
}
|
}
|
@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
tests/misc/shuf-reservoir.sh | 3 +--
|
|
||||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
||||||
|
|
||||||
Index: tests/misc/shuf-reservoir.sh
|
|
||||||
===================================================================
|
|
||||||
--- tests/misc/shuf-reservoir.sh.orig
|
|
||||||
+++ tests/misc/shuf-reservoir.sh
|
|
||||||
@@ -37,8 +37,7 @@ run_shuf_n()
|
|
||||||
|
|
||||||
# Critical memory-related bugs will cause a segfault here
|
|
||||||
# (with varying numbers of input/output lines)
|
|
||||||
- seq "$INPUT_LINES" | valgrind --leak-check=$leaklevel --error-exitcode=1 \
|
|
||||||
- shuf -n "$OUTPUT_LINES" -o "out_${INPUT_LINES}_${OUTPUT_LINES}" || return 1
|
|
||||||
+ seq "$INPUT_LINES" | shuf -n "$OUTPUT_LINES" -o "out_${INPUT_LINES}_${OUTPUT_LINES}" || return 1
|
|
||||||
|
|
||||||
EXPECTED_LINES="$OUTPUT_LINES"
|
|
||||||
test "$INPUT_LINES" -lt "$OUTPUT_LINES" && EXPECTED_LINES="$INPUT_LINES"
|
|
@ -1,46 +0,0 @@
|
|||||||
Upstream patch to avoid FP in testsuite.
|
|
||||||
Remove with coreutils version > 8.32.
|
|
||||||
|
|
||||||
Discussed at:
|
|
||||||
https://lists.gnu.org/r/coreutils/2021-04/msg00050.html
|
|
||||||
Upstream patch:
|
|
||||||
https://git.sv.gnu.org/cgit/coreutils.git/commit/?id=b7091093bb
|
|
||||||
|
|
||||||
From b7091093bb6505c33279f9bc940b2e94763a6e5d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Bernhard Voelker <mail@bernhard-voelker.de>
|
|
||||||
Date: Wed, 21 Apr 2021 00:12:00 +0200
|
|
||||||
Subject: [PATCH] tests: fix FP in ls/stat-free-color.sh
|
|
||||||
|
|
||||||
On newer systems like Fedora 34 and openSUSE Tumbleweed, ls(1) calls
|
|
||||||
newfstatat(STDOUT_FILENO, ...), but only when there is something to
|
|
||||||
output.
|
|
||||||
|
|
||||||
* tests/ls/stat-free-color.sh: Add -a option to the reference invocation
|
|
||||||
of ls, thus enforcing something gets output.
|
|
||||||
---
|
|
||||||
tests/ls/stat-free-color.sh | 10 ++++++----
|
|
||||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
Index: tests/ls/stat-free-color.sh
|
|
||||||
===================================================================
|
|
||||||
--- tests/ls/stat-free-color.sh.orig
|
|
||||||
+++ tests/ls/stat-free-color.sh
|
|
||||||
@@ -56,12 +56,14 @@ eval $(dircolors -b color-without-stat)
|
|
||||||
# The system may perform additional stat-like calls before main.
|
|
||||||
# Furthermore, underlying library functions may also implicitly
|
|
||||||
# add an extra stat call, e.g. opendir since glibc-2.21-360-g46f894d.
|
|
||||||
-# To avoid counting those, first get a baseline count for running
|
|
||||||
-# ls with one empty directory argument. Then, compare that with the
|
|
||||||
-# invocation under test.
|
|
||||||
+# Finally, ls(1) makes a stat call for stdout, but only in the case
|
|
||||||
+# when there is something to output.
|
|
||||||
+# To get the comparison right, first get a baseline count for running
|
|
||||||
+# 'ls -a' with one empty directory argument. Then, compare that with
|
|
||||||
+# the invocation under test.
|
|
||||||
mkdir d || framework_failure_
|
|
||||||
|
|
||||||
-strace -q -o log1 -e $stats ls --color=always d || fail=1
|
|
||||||
+strace -q -o log1 -e $stats ls -a --color=always d || fail=1
|
|
||||||
n_stat1=$(grep -vF '+++' log1 | wc -l) || framework_failure_
|
|
||||||
|
|
||||||
test $n_stat1 = 0 \
|
|
@ -1,36 +0,0 @@
|
|||||||
From d3b433bd41c8978c31fee085cc7e6b0554a4c03e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Bernhard Voelker <mail@bernhard-voelker.de>
|
|
||||||
Date: Wed, 8 Jan 2014 01:15:58 +0100
|
|
||||||
Subject: [PATCH] tests: shorten extreme-expensive factor tests
|
|
||||||
|
|
||||||
The extended factor tests alone can take several hours on e.g. i586
|
|
||||||
or arm6l. Strip the tests down from 37 to 3.
|
|
||||||
|
|
||||||
* tests/local.mk (factor_tests): From the sequence of the tests
|
|
||||||
00..36, remove all but t00, t05 and t36.
|
|
||||||
---
|
|
||||||
tests/local.mk | 11 +++--------
|
|
||||||
1 file changed, 3 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
Index: tests/local.mk
|
|
||||||
===================================================================
|
|
||||||
--- tests/local.mk.orig
|
|
||||||
+++ tests/local.mk
|
|
||||||
@@ -723,14 +723,9 @@ all_tests = \
|
|
||||||
# See tests/factor/create-test.sh.
|
|
||||||
tf = tests/factor
|
|
||||||
factor_tests = \
|
|
||||||
- $(tf)/t00.sh $(tf)/t01.sh $(tf)/t02.sh $(tf)/t03.sh $(tf)/t04.sh \
|
|
||||||
- $(tf)/t05.sh $(tf)/t06.sh $(tf)/t07.sh $(tf)/t08.sh $(tf)/t09.sh \
|
|
||||||
- $(tf)/t10.sh $(tf)/t11.sh $(tf)/t12.sh $(tf)/t13.sh $(tf)/t14.sh \
|
|
||||||
- $(tf)/t15.sh $(tf)/t16.sh $(tf)/t17.sh $(tf)/t18.sh $(tf)/t19.sh \
|
|
||||||
- $(tf)/t20.sh $(tf)/t21.sh $(tf)/t22.sh $(tf)/t23.sh $(tf)/t24.sh \
|
|
||||||
- $(tf)/t25.sh $(tf)/t26.sh $(tf)/t27.sh $(tf)/t28.sh $(tf)/t29.sh \
|
|
||||||
- $(tf)/t30.sh $(tf)/t31.sh $(tf)/t32.sh $(tf)/t33.sh $(tf)/t34.sh \
|
|
||||||
- $(tf)/t35.sh $(tf)/t36.sh
|
|
||||||
+ $(tf)/t00.sh \
|
|
||||||
+ $(tf)/t05.sh \
|
|
||||||
+ $(tf)/t36.sh
|
|
||||||
|
|
||||||
$(factor_tests): $(tf)/run.sh $(tf)/create-test.sh
|
|
||||||
$(AM_V_GEN)$(MKDIR_P) $(tf)
|
|
@ -1,24 +0,0 @@
|
|||||||
--- tests/du/move-dir-while-traversing.sh
|
|
||||||
+++ tests/du/move-dir-while-traversing.sh
|
|
||||||
@@ -20,9 +20,9 @@
|
|
||||||
print_ver_ du
|
|
||||||
require_trap_signame_
|
|
||||||
|
|
||||||
-# We use a python-inotify script, so...
|
|
||||||
-python -m pyinotify -h > /dev/null \
|
|
||||||
- || skip_ 'python inotify package not installed'
|
|
||||||
+# We use a python3-inotify script, so...
|
|
||||||
+python3 -m pyinotify -h > /dev/null \
|
|
||||||
+ || skip_ 'python3 inotify package not installed'
|
|
||||||
|
|
||||||
# Move a directory "up" while du is processing its sub-directories.
|
|
||||||
# While du is processing a hierarchy .../B/C/D/... this script
|
|
||||||
@@ -33,7 +33,7 @@
|
|
||||||
# rename syscall before du finishes processing the subtree under D/.
|
|
||||||
|
|
||||||
cat <<'EOF' > inotify-watch-for-dir-access.py
|
|
||||||
-#!/usr/bin/env python
|
|
||||||
+#!/usr/bin/env python3
|
|
||||||
import pyinotify as pn
|
|
||||||
import os,sys
|
|
||||||
|
|
321
coreutils-xattr.diff
Normal file
321
coreutils-xattr.diff
Normal 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, ©_xattr_ctx.ctx);
|
||||||
|
+ else
|
||||||
|
+ ret = attr_copy_file (src_path, dst_path,
|
||||||
|
+ copy_xattr_filter, ©_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.
|
3324
coreutils.changes
3324
coreutils.changes
File diff suppressed because it is too large
Load Diff
@ -1,312 +0,0 @@
|
|||||||
Release GPG keyring of coreutils group.
|
|
||||||
|
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
||||||
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
|
|
||||||
0rQiUMOhZHJhaWcgQnJhZHkgPHBicmFkeUByZWRoYXQuY29tPokCHwQwAQIACQUC
|
|
||||||
Vp+cpgIdIAAKCRDfb9lxMGA32UftD/9jYqsCfNAzb0vhDOaU1AchzaQa1pIKEjoL
|
|
||||||
6d4AMeXFSBpMi4nYJpN+rmM8DAzcbenBcSoIqecdfENp3mY+hI8mYdnMiVpldsro
|
|
||||||
EAl/SDxY6//pPd0Dnmoe6sNodBB2uwHxhQi9ubz72iWX5WiKP8+OUAj91cLMl9nK
|
|
||||||
IYfcHy3iinSRqT02JP33DGDwsHCoAMmp59g6AHnf0sjCtZEtK79MtKiKTkUdMazP
|
|
||||||
VGs81x1jCO2kvvmy0fDZxkGuyso0inae2hsaMSqqoga5lC0jQanFIXSEkLZgJglj
|
|
||||||
LmiWPO0IGHPFth/e//51atGUmpdd2ufQ/QVoxSnQKRFQ98eO/SQ75bO5vbE8dGv8
|
|
||||||
oX9S3M9NjKOY9VnXC/JDyMXt2aMDs9tqSo22lJuT2Wq20wM5hlszxKI7c9QphnuH
|
|
||||||
yPNtszzXo1+5/UEuCNIQoe59MoscGmx7GN5WvlENaixGg7tzpZ+wdftN7BUcpJfC
|
|
||||||
gsEQurHzPEIomlszp3xraX0G84plClas13Ie8CIVM7UPbF0Cwx6XwhryjaDTkq3f
|
|
||||||
+mjQXtNJQk487q8cc9dxplslXiDqBYVngV+oDKOjrqc5PXSQm2M8EYRn9SXuFnT8
|
|
||||||
iF5SkuFYtgOEj3KNZ04ZB1I7AQebylS2LGwWan8yWJSAs22eR9urWBVpmre6GUGZ
|
|
||||||
fo7YBdOvbLQiUMOhZHJhaWcgQnJhZHkgPHBpeGVsYmVhdEBnbnUub3JnPokCOAQT
|
|
||||||
AQIAIgUCTnyAtAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ32/ZcTBg
|
|
||||||
N9moHg/+Mjq/O1RnNg7kdUjRK1wOflym7itgE8kq4G55EJvLSxo6wIgd7ZKUj+cv
|
|
||||||
X+iXQpGRc3bicpNTsKcW6EjDtyg+VCSWD7qJ3EtwxVf9mN3bIqWSVwP0k8kc1N+t
|
|
||||||
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
|
|
||||||
ELphkzjc6eM3CaOZ73u4GVXotheeUabUHQ==
|
|
||||||
=drvb
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
1003
coreutils.spec
1003
coreutils.spec
File diff suppressed because it is too large
Load Diff
11
getcwd.diff
Normal file
11
getcwd.diff
Normal 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
|
@ -1,101 +0,0 @@
|
|||||||
Avoid false-positive error in gnulib tests 'test-perror2' and 'test-strerror_r'.
|
|
||||||
|
|
||||||
On openSUSE OBS, the above gnulib tests fail on armv7l.
|
|
||||||
|
|
||||||
Corresponding report on the gnulib mailing list:
|
|
||||||
|
|
||||||
https://lists.gnu.org/r/bug-gnulib/2020-08/msg00220.html
|
|
||||||
|
|
||||||
From: Florian Weimer
|
|
||||||
Date: Thu, 27 Aug 2020 09:41:34 +0200
|
|
||||||
Subject: Use-after-free in test-perror2, test-strerror_r
|
|
||||||
|
|
||||||
The problem is visible with glibc 2.32 under valgrind:
|
|
||||||
|
|
||||||
==20== Invalid read of size 1
|
|
||||||
==20== at 0x483DAB4: strcmp (vg_replace_strmem.c:847)
|
|
||||||
==20== by 0x109414: main (test-perror2.c:84)
|
|
||||||
==20== Address 0x4a1a3d0 is 0 bytes inside a block of size 17 free'd
|
|
||||||
==20== at 0x483A9F5: free (vg_replace_malloc.c:538)
|
|
||||||
==20== by 0x48E2134: strerror_l (in /usr/lib64/libc-2.32.so)
|
|
||||||
==20== by 0x109328: main (test-perror2.c:72)
|
|
||||||
==20== Block was alloc'd at
|
|
||||||
==20== at 0x4839809: malloc (vg_replace_malloc.c:307)
|
|
||||||
==20== by 0x48CA03F: __vasprintf_internal (in /usr/lib64/libc-2.32.so)
|
|
||||||
==20== by 0x48A46F9: asprintf (in /usr/lib64/libc-2.32.so)
|
|
||||||
==20== by 0x48E2184: strerror_l (in /usr/lib64/libc-2.32.so)
|
|
||||||
==20== by 0x1092E2: main (test-perror2.c:67)
|
|
||||||
==20==
|
|
||||||
==20== Invalid read of size 1
|
|
||||||
==20== at 0x483DAC8: strcmp (vg_replace_strmem.c:847)
|
|
||||||
==20== by 0x109414: main (test-perror2.c:84)
|
|
||||||
==20== Address 0x4a1a3d1 is 1 bytes inside a block of size 17 free'd
|
|
||||||
==20== at 0x483A9F5: free (vg_replace_malloc.c:538)
|
|
||||||
==20== by 0x48E2134: strerror_l (in /usr/lib64/libc-2.32.so)
|
|
||||||
==20== by 0x109328: main (test-perror2.c:72)
|
|
||||||
==20== Block was alloc'd at
|
|
||||||
==20== at 0x4839809: malloc (vg_replace_malloc.c:307)
|
|
||||||
==20== by 0x48CA03F: __vasprintf_internal (in /usr/lib64/libc-2.32.so)
|
|
||||||
==20== by 0x48A46F9: asprintf (in /usr/lib64/libc-2.32.so)
|
|
||||||
==20== by 0x48E2184: strerror_l (in /usr/lib64/libc-2.32.so)
|
|
||||||
==20== by 0x1092E2: main (test-perror2.c:67)
|
|
||||||
|
|
||||||
I think it's the test that's invalid.
|
|
||||||
|
|
||||||
This was reported as an actual grep test failure (without valgrind) on
|
|
||||||
32-bit Arm, where glibc malloc happens to return a different buffer
|
|
||||||
address for the internal allocation (so that msg3 != msg4).
|
|
||||||
|
|
||||||
test-strerror_r has the same issue.
|
|
||||||
|
|
||||||
Thanks,
|
|
||||||
Florian
|
|
||||||
|
|
||||||
Upstream patch:
|
|
||||||
|
|
||||||
https://git.sv.gnu.org/cgit/gnulib.git/commit/?id=175e0bc72808
|
|
||||||
|
|
||||||
From 175e0bc72808d564074c4adcc72aeadb74adfcc6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
|
||||||
Date: Thu, 27 Aug 2020 17:52:58 -0700
|
|
||||||
Subject: [PATCH] perror, strerror_r: remove unportable tests
|
|
||||||
|
|
||||||
Problem reported by Florian Weimer in:
|
|
||||||
https://lists.gnu.org/r/bug-gnulib/2020-08/msg00220.html
|
|
||||||
* tests/test-perror2.c (main):
|
|
||||||
* tests/test-strerror_r.c (main): Omit unportable tests.
|
|
||||||
|
|
||||||
This downstream patch is identical to upstream one modulo the ChangeLog entry.
|
|
||||||
---
|
|
||||||
gnulib-tests/test-perror2.c | 3 ---
|
|
||||||
gnulib-tests/test-strerror_r.c | 3 ---
|
|
||||||
2 files changed, 6 deletions(-)
|
|
||||||
|
|
||||||
Index: gnulib-tests/test-perror2.c
|
|
||||||
===================================================================
|
|
||||||
--- gnulib-tests/test-perror2.c.orig
|
|
||||||
+++ gnulib-tests/test-perror2.c
|
|
||||||
@@ -79,9 +79,6 @@ main (void)
|
|
||||||
errno = -5;
|
|
||||||
perror ("");
|
|
||||||
ASSERT (!ferror (stderr));
|
|
||||||
- ASSERT (msg1 == msg2 || msg1 == msg4 || STREQ (msg1, str1));
|
|
||||||
- ASSERT (msg2 == msg4 || STREQ (msg2, str2));
|
|
||||||
- ASSERT (msg3 == msg4 || STREQ (msg3, str3));
|
|
||||||
ASSERT (STREQ (msg4, str4));
|
|
||||||
|
|
||||||
free (str1);
|
|
||||||
Index: gnulib-tests/test-strerror_r.c
|
|
||||||
===================================================================
|
|
||||||
--- gnulib-tests/test-strerror_r.c.orig
|
|
||||||
+++ gnulib-tests/test-strerror_r.c
|
|
||||||
@@ -165,9 +165,6 @@ main (void)
|
|
||||||
|
|
||||||
strerror_r (EACCES, buf, sizeof buf);
|
|
||||||
strerror_r (-5, buf, sizeof buf);
|
|
||||||
- ASSERT (msg1 == msg2 || msg1 == msg4 || STREQ (msg1, str1));
|
|
||||||
- ASSERT (msg2 == msg4 || STREQ (msg2, str2));
|
|
||||||
- ASSERT (msg3 == msg4 || STREQ (msg3, str3));
|
|
||||||
ASSERT (STREQ (msg4, str4));
|
|
||||||
|
|
||||||
free (str1);
|
|
12
i18n-infloop.diff
Normal file
12
i18n-infloop.diff
Normal 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
25
i18n-uninit.diff
Normal 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
47
invalid-ids.diff
Normal 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
10
no-no.diff
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
--- po/LINGUAS
|
||||||
|
+++ po/LINGUAS
|
||||||
|
@@ -19,7 +19,6 @@
|
||||||
|
ms
|
||||||
|
nb
|
||||||
|
nl
|
||||||
|
-no
|
||||||
|
pl
|
||||||
|
pt
|
||||||
|
pt_BR
|
11
su.default
Normal file
11
su.default
Normal 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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user