1998-03-29 16:50  Ulrich Drepper  <drepper@cygnus.com>

	* config.make.in (ldd-rewrite-script): New variable.
	* configure.in: Substitute ldd-rewrite-script.
	* elf/Makefile: Rewrite rules to generate ldd script.
	* elf/ldd.bash.in: Allow handling of non-ELF binaries.
	* elf/ldd.sh.in: Likewise.
	* sysdeps/unix/sysv/linux/Makefile: Remove rule to install lddlibc4.
	* sysdeps/unix/sysv/linux/configure.in: Define ldd_rewrite_script to
	point to sed script for libc4 handling insertion for ix86, m68, SPARC.
	* sysdeps/unix/sysv/linux/i386/Makefile: Add rule to install lddlibc4.

1998-03-26 15:20  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* inet/rcmd.c (iruserok): Remain setuid to the local user
	while .rhosts is actually read, to make .rhosts-over-NFS work
	(PR libc/524).  Use iruserfopen() for security checks on both
	hosts.equiv and .rhosts.  General cleanup.
	(iruserfopen): New function, performs careful checking on
	hosts.equiv/.rhosts files.  Disallows all the old forbidden
	stuff plus hard links to files.

1998-03-29 09:26  Ulrich Drepper  <drepper@cygnus.com>

	* setjmp/tst-setjmp.c: Don't test __setjmp, test _setjmp instead.

1998-03-29 02:02  H.J. Lu  <hjl@gnu.org>

	* sysdeps/i386/i486/bits/string.h: Fix typos.

	* nss/nsswitch.c (__nss_lookup): Fix the bogus checking for
	"adjusted for next function".

1998-03-28 00:13  H.J. Lu  <hjl@gnu.org>

	* sysdeps/unix/sysv/linux/alpha/readdir.c (__readdir64): New
	strong alias.

	* sysdeps/unix/sysv/linux/alpha/syscalls.list (socket): Added.

	* libc.map (__ieee_get_fp_control, __ieee_set_fp_control):
	Added.  Used by libm.so on alpha.

1998-03-28  Thorsten Kukuk  <kukuk@vt.uni-paderborn.de>

	* intl/bindtextdom.c [_LIBC]: Define strdup only if not yet
	defined.

1998-03-27 07:29  H.J. Lu  <hjl@gnu.org>

	* Makerules (object-suffixes-for-rules): Add .oS only for
	building shared library.
	Add ranlib rule for nonshared library.
	(rmobjs): Fix typo.

	* Makeconfig (libtype.oS, CFLAGS-.oS, CPPFLAGS-.oS): Moved
	into for shared library only.
	(CPPFLAGS-.oS): Add -DPIC.
	(libtypes): Use $(object-suffixes-for-rules) instead of
	$(object-suffixes).

1998-03-28  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/Makefile (inhibit-stdio_lim): Compile
	and install lddlibc4.

1998-03-28 09:13  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* iconvdata/gap.pl: Gobble rest of line with a scalar, not a
	hash.
	* iconvdata/gaptab.pl: Likewise.
This commit is contained in:
Ulrich Drepper 1998-03-29 17:03:23 +00:00
parent a44d23932d
commit cb34385453
21 changed files with 292 additions and 110 deletions

View File

@ -1,3 +1,75 @@
1998-03-29 16:50 Ulrich Drepper <drepper@cygnus.com>
* config.make.in (ldd-rewrite-script): New variable.
* configure.in: Substitute ldd-rewrite-script.
* elf/Makefile: Rewrite rules to generate ldd script.
* elf/ldd.bash.in: Allow handling of non-ELF binaries.
* elf/ldd.sh.in: Likewise.
* sysdeps/unix/sysv/linux/Makefile: Remove rule to install lddlibc4.
* sysdeps/unix/sysv/linux/configure.in: Define ldd_rewrite_script to
point to sed script for libc4 handling insertion for ix86, m68, SPARC.
* sysdeps/unix/sysv/linux/i386/Makefile: Add rule to install lddlibc4.
1998-03-26 15:20 Zack Weinberg <zack@rabi.phys.columbia.edu>
* inet/rcmd.c (iruserok): Remain setuid to the local user
while .rhosts is actually read, to make .rhosts-over-NFS work
(PR libc/524). Use iruserfopen() for security checks on both
hosts.equiv and .rhosts. General cleanup.
(iruserfopen): New function, performs careful checking on
hosts.equiv/.rhosts files. Disallows all the old forbidden
stuff plus hard links to files.
1998-03-29 09:26 Ulrich Drepper <drepper@cygnus.com>
* setjmp/tst-setjmp.c: Don't test __setjmp, test _setjmp instead.
1998-03-29 02:02 H.J. Lu <hjl@gnu.org>
* sysdeps/i386/i486/bits/string.h: Fix typos.
* nss/nsswitch.c (__nss_lookup): Fix the bogus checking for
"adjusted for next function".
1998-03-28 00:13 H.J. Lu <hjl@gnu.org>
* sysdeps/unix/sysv/linux/alpha/readdir.c (__readdir64): New
strong alias.
* sysdeps/unix/sysv/linux/alpha/syscalls.list (socket): Added.
* libc.map (__ieee_get_fp_control, __ieee_set_fp_control):
Added. Used by libm.so on alpha.
1998-03-28 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* intl/bindtextdom.c [_LIBC]: Define strdup only if not yet
defined.
1998-03-27 07:29 H.J. Lu <hjl@gnu.org>
* Makerules (object-suffixes-for-rules): Add .oS only for
building shared library.
Add ranlib rule for nonshared library.
(rmobjs): Fix typo.
* Makeconfig (libtype.oS, CFLAGS-.oS, CPPFLAGS-.oS): Moved
into for shared library only.
(CPPFLAGS-.oS): Add -DPIC.
(libtypes): Use $(object-suffixes-for-rules) instead of
$(object-suffixes).
1998-03-28 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/Makefile (inhibit-stdio_lim): Compile
and install lddlibc4.
1998-03-28 09:13 Zack Weinberg <zack@rabi.phys.columbia.edu>
* iconvdata/gap.pl: Gobble rest of line with a scalar, not a
hash.
* iconvdata/gaptab.pl: Likewise.
1998-03-27 22:46 Ulrich Drepper <drepper@cygnus.com> 1998-03-27 22:46 Ulrich Drepper <drepper@cygnus.com>
* Rules: Allow Makefiles to specify test-static for tests which * Rules: Allow Makefiles to specify test-static for tests which

View File

@ -571,7 +571,7 @@ endif
# Various things use $(object-suffixes) to know what all to make. # Various things use $(object-suffixes) to know what all to make.
# The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX})
# to pass different flags for each flavor. # to pass different flags for each flavor.
libtypes = $(foreach o,$(object-suffixes),$(libtype$o)) libtypes = $(foreach o,$(object-suffixes-for-rules),$(libtype$o))
all-object-suffixes := .o .os .op .og .ob .oS all-object-suffixes := .o .os .op .og .ob .oS
object-suffixes := object-suffixes :=
ifeq (yes,$(build-static)) ifeq (yes,$(build-static))
@ -589,6 +589,13 @@ CFLAGS-.os = $(filter %frame-pointer,$(+cflags)) $(pic-ccflag)
libtype.os := lib%_pic.a libtype.os := lib%_pic.a
# This can be changed by a sysdep makefile # This can be changed by a sysdep makefile
pic-ccflag = -fPIC pic-ccflag = -fPIC
# Special library that contains the static-only routines for libc.
libtype.oS = lib%_nonshared.a
# Must build the routines as PIC, though, because they can end up in (users')
# shared objects. We don't want to use CFLAGS-os because users may, for
# example, make that processor-specific.
CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag)
CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC
endif endif
ifeq (yes,$(build-profile)) ifeq (yes,$(build-profile))
# Under --enable-profile, we will build a static library of profiled objects. # Under --enable-profile, we will build a static library of profiled objects.
@ -618,14 +625,6 @@ CFLAGS-.ob = -g -fbounded-pointers
libtype.ob = lib%_b.a libtype.ob = lib%_b.a
endif endif
# Special library that contains the static-only routines for libc.
libtype.oS = lib%_nonshared.a
# Must build the routines as PIC, though, because they can end up in (users')
# shared objects. We don't want to use CFLAGS-os because users may, for
# example, make that processor-specific.
CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag)
CPPFLAGS-.oS = $(CPPFLAGS-.o)
+gnu-stabs = $(shell echo>&2 '*** BARF ON ME') +gnu-stabs = $(shell echo>&2 '*** BARF ON ME')
ifndef BUILD_CC ifndef BUILD_CC

View File

@ -172,7 +172,11 @@ endef
$(common-objpfx)dummy.d: $(common-objpfx)dummy.d:
echo '# .s files cannot contain includes, so they need no deps.' > $@ echo '# .s files cannot contain includes, so they need no deps.' > $@
object-suffixes-for-rules = $(object-suffixes) .oS object-suffixes-for-rules := $(object-suffixes)
ifeq (yes,$(build-shared))
object-suffixes-for-rules += .oS
endif
# It matters that this set of rules, for compiling from sources in # It matters that this set of rules, for compiling from sources in
# the current directory (the $srcdir/$subdir) come before the # the current directory (the $srcdir/$subdir) come before the
@ -571,6 +575,15 @@ $(subdirs-stamps): subdir_lib;
endif endif
object-suffixes-left = $(object-suffixes) object-suffixes-left = $(object-suffixes)
include $(o-iterator) include $(o-iterator)
ifeq (yes,$(build-shared))
$(common-objpfx)$(patsubst %,$(libtype.oS),c)($(ar-symtab-name)): \
$(common-objpfx)$(patsubst %,$(libtype.oS),c)(\
$(patsubst %,%.oS,$(static-only-routines))) \
$(wildcard $(foreach d,$(subdirs),$(common-objpfx)$d/stamp.oS))
$(SHELL) $(..)./autolock.sh \
$(common-objpfx)$(patsubst %,$(libtype.oS),c).lck \
$(RANLIB) $(common-objpfx)$(patsubst %,$(libtype.oS),c)
endif
# This makes all the object files. # This makes all the object files.
@ -914,7 +927,7 @@ common-mostlyclean:
define rmobjs define rmobjs
$(foreach o,$(object-suffixes), $(foreach o,$(object-suffixes),
-rm -f $(objpfx)stamp$o $(o-objects)) -rm -f $(objpfx)stamp$o $(o-objects))
-rm -f $(objpfx)stamp.oS $(patsubst %,$(static-only-routines),$(objpfx)%.oS) -rm -f $(objpfx)stamp.oS $(patsubst %,$(objpfx)%.oS,$(static-only-routines))
endef endef
# Also remove the dependencies and generated source files. # Also remove the dependencies and generated source files.

View File

@ -15,6 +15,9 @@ rootsbindir = @libc_cv_rootsbindir@
# in GNU libc. # in GNU libc.
has-ldconfig = @has_ldconfig@ has-ldconfig = @has_ldconfig@
# Maybe the `ldd' script must be rewritten.
ldd-rewrite-script = @ldd_rewrite_script@
# System configuration. # System configuration.
config-machine = @host_cpu@ config-machine = @host_cpu@
base-machine = @base_machine@ base-machine = @base_machine@

15
configure vendored
View File

@ -2512,6 +2512,9 @@ esac
libc_link_dests= libc_link_dests=
libc_link_sources= libc_link_sources=
# They also can set these variables.
ldd_rewrite_script=no
# Iterate over all the sysdep directories we will use, running their # Iterate over all the sysdep directories we will use, running their
# configure fragments, and looking for a uname implementation. # configure fragments, and looking for a uname implementation.
uname= uname=
@ -2547,7 +2550,7 @@ if test "$uname" = "sysdeps/generic"; then
fi fi
echo $ac_n "checking OS release for uname""... $ac_c" 1>&6 echo $ac_n "checking OS release for uname""... $ac_c" 1>&6
echo "configure:2551: checking OS release for uname" >&5 echo "configure:2554: checking OS release for uname" >&5
if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2569,7 +2572,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
uname_release="$libc_cv_uname_release" uname_release="$libc_cv_uname_release"
echo $ac_n "checking OS version for uname""... $ac_c" 1>&6 echo $ac_n "checking OS version for uname""... $ac_c" 1>&6
echo "configure:2573: checking OS version for uname" >&5 echo "configure:2576: checking OS version for uname" >&5
if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2591,7 +2594,7 @@ else
fi fi
echo $ac_n "checking stdio selection""... $ac_c" 1>&6 echo $ac_n "checking stdio selection""... $ac_c" 1>&6
echo "configure:2595: checking stdio selection" >&5 echo "configure:2598: checking stdio selection" >&5
case $stdio in case $stdio in
libio) cat >> confdefs.h <<\EOF libio) cat >> confdefs.h <<\EOF
@ -2603,7 +2606,7 @@ esac
echo "$ac_t""$stdio" 1>&6 echo "$ac_t""$stdio" 1>&6
echo $ac_n "checking ldap selection""... $ac_c" 1>&6 echo $ac_n "checking ldap selection""... $ac_c" 1>&6
echo "configure:2607: checking ldap selection" >&5 echo "configure:2610: checking ldap selection" >&5
case $add_ons in case $add_ons in
*ldap*) *ldap*)
@ -2621,6 +2624,7 @@ echo "$ac_t""$ldap" 1>&6
if test $gnu_ld = yes; then if test $gnu_ld = yes; then
cat >> confdefs.h <<\EOF cat >> confdefs.h <<\EOF
#define HAVE_GNU_LD 1 #define HAVE_GNU_LD 1
@ -2665,7 +2669,7 @@ if test $static = no && test $shared = yes; then
fi fi
echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6 echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6
echo "configure:2669: checking whether -fPIC is default" >&5 echo "configure:2673: checking whether -fPIC is default" >&5
if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2892,6 +2896,7 @@ s%@libc_cv_slibdir@%$libc_cv_slibdir%g
s%@libc_cv_sysconfdir@%$libc_cv_sysconfdir%g s%@libc_cv_sysconfdir@%$libc_cv_sysconfdir%g
s%@libc_cv_rootsbindir@%$libc_cv_rootsbindir%g s%@libc_cv_rootsbindir@%$libc_cv_rootsbindir%g
s%@has_ldconfig@%$has_ldconfig%g s%@has_ldconfig@%$has_ldconfig%g
s%@ldd_rewrite_script@%$ldd_rewrite_script%g
s%@gnu_ld@%$gnu_ld%g s%@gnu_ld@%$gnu_ld%g
s%@gnu_as@%$gnu_as%g s%@gnu_as@%$gnu_as%g
s%@elf@%$elf%g s%@elf@%$elf%g

View File

@ -1000,6 +1000,9 @@ esac
libc_link_dests= libc_link_dests=
libc_link_sources= libc_link_sources=
# They also can set these variables.
ldd_rewrite_script=no
# Iterate over all the sysdep directories we will use, running their # Iterate over all the sysdep directories we will use, running their
# configure fragments, and looking for a uname implementation. # configure fragments, and looking for a uname implementation.
uname= uname=
@ -1108,6 +1111,7 @@ AC_SUBST(libc_cv_sysconfdir)
AC_SUBST(libc_cv_rootsbindir) AC_SUBST(libc_cv_rootsbindir)
AC_SUBST(has_ldconfig) AC_SUBST(has_ldconfig)
AC_SUBST(ldd_rewrite_script)
AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf)
if test $gnu_ld = yes; then if test $gnu_ld = yes; then

View File

@ -164,23 +164,34 @@ $(inst_slibdir)/$(rtld-installed-name): \
.PHONY: ldso_install .PHONY: ldso_install
ldso_install: $(inst_slibdir)/$(rtld-installed-name) ldso_install: $(inst_slibdir)/$(rtld-installed-name)
sh-ldd-rewrite = -e 's%@RTLD@%$(slibdir)/$(rtld-installed-name)%g' \
-e 's%@VERSION@%$(version)%g'
bash-ldd-rewrite = $(sh-ldd-rewrite) -e 's%@BASH@%$(BASH)%g' \
-e 's%@TEXTDOMAINDIR@%$(localedir)%g'
ifneq ($(have-bash2),yes) ifneq ($(have-bash2),yes)
$(objpfx)ldd: ldd.sh.in $(common-objpfx)version.mk \ ldd-shell = bash
$(common-objpfx)soversions.mk $(common-objpfx)config.make
sed -e 's%@RTLD@%$(slibdir)/$(rtld-installed-name)%g' \
-e 's%@VERSION@%$(version)%g' < $< > $@.new
chmod 555 $@.new
mv -f $@.new $@
else else
$(objpfx)ldd: ldd.bash.in $(common-objpfx)version.mk \ ldd-shell = sh
endif
ifeq ($(ldd-rewrite-script),no)
define gen-ldd
sed $($(ldd-shell)-ldd-rewrite) < $< > $@.new
endef
else
define gen-ldd
sed $($(ldd-shell)-ldd-rewrite) < $< | sed -f $(ldd-rewrite-script) > $@.new
endef
endif
$(objpfx)ldd: ldd.$(ldd-shell).in $(common-objpfx)version.mk \
$(common-objpfx)soversions.mk $(common-objpfx)config.make $(common-objpfx)soversions.mk $(common-objpfx)config.make
sed -e 's%@BASH@%$(BASH)%g' \ $(gen-ldd)
-e 's%@RTLD@%$(slibdir)/$(rtld-installed-name)%g' \
-e 's%@VERSION@%$(version)%g' \
-e 's%@TEXTDOMAINDIR@%$(localedir)%g' < $< > $@.new
chmod 555 $@.new chmod 555 $@.new
mv -f $@.new $@ mv -f $@.new $@
endif
ifeq ($(build-shared),yes) ifeq ($(build-shared),yes)
$(objpfx)sprof: $(objpfx)libdl.so$(libdl.so-version) $(objpfx)sprof: $(objpfx)libdl.so$(libdl.so-version)

View File

@ -87,6 +87,12 @@ Report bugs using the \`glibcbug' script to <bugs@gnu.org>."
esac esac
done done
nonelf ()
{
# Maybe extra code for non-ELF binaries.
return 1;
}
add_env="LD_TRACE_LOADED_OBJECTS=1 LD_WARN=$warn LD_BIND_NOW=$bind_now" add_env="LD_TRACE_LOADED_OBJECTS=1 LD_WARN=$warn LD_BIND_NOW=$bind_now"
add_env="$add_env LD_VERBOSE=$verbose" add_env="$add_env LD_VERBOSE=$verbose"
case $# in case $# in
@ -115,6 +121,8 @@ case $# in
eval $add_env exec '"$file"' || exit 1 eval $add_env exec '"$file"' || exit 1
;; ;;
1) 1)
# This can be a non-ELF binary or no binary at all.
nonelf $file ||
echo $" not a dynamic executable" echo $" not a dynamic executable"
exit 1 exit 1
;; ;;
@ -154,8 +162,11 @@ warning: you do not have execution permission for" "\`$file'"
eval $add_env '"$file"' || result=1 eval $add_env '"$file"' || result=1
;; ;;
1) 1)
echo $" not a dynamic executable" # This can be a non-ELF binary or no binary at all.
result=1 nonelf $file || {
echo $" not a dynamic executable"
result=1
}
;; ;;
2) 2)
eval $add_env ${RTLD} '"$file"' || result=1 eval $add_env ${RTLD} '"$file"' || result=1

View File

@ -83,6 +83,12 @@ Try \`ldd --help' for more information."
esac esac
done done
nonelf ()
{
# Maybe extra code for non-ELF binaries.
return 1;
}
add_env="LD_TRACE_LOADED_OBJECTS=1 LD_WARN=$warn LD_BIND_NOW=$bind_now" add_env="LD_TRACE_LOADED_OBJECTS=1 LD_WARN=$warn LD_BIND_NOW=$bind_now"
add_env="$add_env LD_VERBOSE=$verbose" add_env="$add_env LD_VERBOSE=$verbose"
case $# in case $# in
@ -113,6 +119,7 @@ Try \`ldd --help' for more information."
eval $add_env exec '"$file"' || exit 1 eval $add_env exec '"$file"' || exit 1
;; ;;
1) 1)
nonelf $file ||
echo ' not a dynamic executable' echo ' not a dynamic executable'
exit 1 exit 1
;; ;;
@ -155,6 +162,7 @@ ldd: warning: you do not have execution permission for \`$file'"
eval $add_env '"$file"' || result=1 eval $add_env '"$file"' || result=1
;; ;;
1) 1)
nonelf $file ||
echo ' not a dynamic executable' echo ' not a dynamic executable'
result=1 result=1
;; ;;

View File

@ -1,6 +1,6 @@
$first=$last=$idx=0; $first=$last=$idx=0;
while (<>) { while (<>) {
local($ucs,%rest) = split; local($ucs,$rest) = split;
local($u)=hex($ucs); local($u)=hex($ucs);
if ($u - $last > 6) { if ($u - $last > 6) {
if ($last != 0) { if ($last != 0) {

View File

@ -6,7 +6,7 @@ sub fmt {
printf (" '\\x%02x',", $val); printf (" '\\x%02x',", $val);
} }
while (<>) { while (<>) {
local($ucs,$char,%rest) = split; local($ucs,$char,$rest) = split;
local($u)=hex($ucs); local($u)=hex($ucs);
local($c)=hex($char); local($c)=hex($char);
if ($u - $last > 6) { if ($u - $last > 6) {

View File

@ -287,6 +287,49 @@ ruserok(rhost, superuser, ruser, luser)
return -1; return -1;
} }
/* Extremely paranoid file open function. */
static FILE *
iruserfopen (char *file, uid_t okuser)
{
struct stat st;
char *cp = NULL;
FILE *res = NULL;
/* If not a regular file, if owned by someone other than user or
root, if writeable by anyone but the owner, or if hardlinked
anywhere, quit. */
cp = NULL;
if (__lxstat (_STAT_VER, file, &st))
cp = _("lstat failed");
else if (!S_ISREG (st.st_mode))
cp = _("not regular file");
else
{
res = fopen (file, "r");
if (!res)
cp = _("cannot open");
else if (__fxstat (_STAT_VER, fileno (res), &st) < 0)
cp = _("fstat failed");
else if (st.st_uid && st.st_uid != okuser)
cp = _("bad owner");
else if (st.st_mode & (S_IWGRP|S_IWOTH))
cp = _("writeable by other than owner");
else if (st.st_nlink > 1)
cp = _("hard linked somewhere");
}
/* If there were any problems, quit. */
if (cp != NULL)
{
__rcmd_errstr = cp;
if (res)
fclose (res);
return NULL;
}
return res;
}
/* /*
* New .rhosts strategy: We are passed an ip address. We spin through * New .rhosts strategy: We are passed an ip address. We spin through
* hosts.equiv and .rhosts looking for a match. When the .rhosts only * hosts.equiv and .rhosts looking for a match. When the .rhosts only
@ -297,83 +340,60 @@ ruserok(rhost, superuser, ruser, luser)
* Returns 0 if ok, -1 if not ok. * Returns 0 if ok, -1 if not ok.
*/ */
int int
iruserok(raddr, superuser, ruser, luser) iruserok (raddr, superuser, ruser, luser)
u_int32_t raddr; u_int32_t raddr;
int superuser; int superuser;
const char *ruser, *luser; const char *ruser, *luser;
{ {
register char *cp; FILE *hostf;
struct stat sbuf; int isbad;
struct passwd pwdbuf, *pwd;
FILE *hostf;
int first;
first = 1; if (!superuser)
hostf = superuser ? NULL : fopen(_PATH_HEQUIV, "r"); hostf = iruserfopen (_PATH_HEQUIV, 0);
again:
if (hostf) {
if (__ivaliduser(hostf, raddr, luser, ruser) == 0) {
(void)fclose(hostf);
return 0;
}
(void)fclose(hostf);
}
if (first == 1 && (__check_rhosts_file || superuser)) {
char *pbuf;
size_t dirlen;
size_t buflen = __sysconf (_SC_GETPW_R_SIZE_MAX);
char *buffer = __alloca (buflen);
first = 0; if (hostf)
if (__getpwnam_r (luser, &pwdbuf, buffer, buflen, &pwd) < 0) {
return -1; isbad = __ivaliduser (hostf, raddr, luser, ruser);
fclose (hostf);
dirlen = strlen (pwd->pw_dir); if (!isbad)
pbuf = alloca (dirlen + sizeof "/.rhosts"); return 0;
__mempcpy (__mempcpy (pbuf, pwd->pw_dir, dirlen), }
"/.rhosts", sizeof "/.rhosts");
/* if (__check_rhosts_file || superuser)
* Change effective uid while opening .rhosts. If root and {
* reading an NFS mounted file system, can't read files that char *pbuf;
* are protected read/write owner only. struct passwd pwdbuf, *pwd;
*/ size_t dirlen;
if (__access (pbuf, R_OK) != 0) size_t buflen = __sysconf (_SC_GETPW_R_SIZE_MAX);
hostf = NULL; char *buffer = __alloca (buflen);
else uid_t uid;
{
uid_t uid = geteuid ();
seteuid (pwd->pw_uid);
hostf = fopen (pbuf, "r");
seteuid (uid);
}
if (hostf == NULL) if (__getpwnam_r (luser, &pwdbuf, buffer, buflen, &pwd))
return -1;
/*
* If not a regular file, or is owned by someone other than
* user or root or if writeable by anyone but the owner, quit.
*/
cp = NULL;
if (lstat(pbuf, &sbuf) < 0)
cp = _(".rhosts lstat failed");
else if (!S_ISREG(sbuf.st_mode))
cp = _(".rhosts not regular file");
else if (fstat(fileno(hostf), &sbuf) < 0)
cp = _(".rhosts fstat failed");
else if (sbuf.st_uid && sbuf.st_uid != pwd->pw_uid)
cp = _("bad .rhosts owner");
else if (sbuf.st_mode & (S_IWGRP|S_IWOTH))
cp = _(".rhosts writeable by other than owner");
/* If there were any problems, quit. */
if (cp) {
__rcmd_errstr = cp;
(void)fclose(hostf);
return -1;
}
goto again;
}
return -1; return -1;
dirlen = strlen (pwd->pw_dir);
pbuf = alloca (dirlen + sizeof "/.rhosts");
__mempcpy (__mempcpy (pbuf, pwd->pw_dir, dirlen),
"/.rhosts", sizeof "/.rhosts");
/* Change effective uid while reading .rhosts. If root and
reading an NFS mounted file system, can't read files that
are protected read/write owner only. */
uid = geteuid ();
seteuid (pwd->pw_uid);
hostf = iruserfopen (pbuf, pwd->pw_uid);
if (hostf != NULL)
{
isbad = __ivaliduser (hostf, raddr, luser, ruser);
fclose (hostf);
}
seteuid (uid);
return isbad;
}
return -1;
} }
/* /*

View File

@ -1,5 +1,5 @@
/* Implementation of the bindtextdomain(3) function /* Implementation of the bindtextdomain(3) function
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. the C library, however.
@ -65,7 +65,9 @@ extern struct binding *_nl_domain_bindings;
prefix. So we have to make a difference here. */ prefix. So we have to make a difference here. */
#ifdef _LIBC #ifdef _LIBC
# define BINDTEXTDOMAIN __bindtextdomain # define BINDTEXTDOMAIN __bindtextdomain
# define strdup(str) __strdup (str) # ifndef strdup
# define strdup(str) __strdup (str)
# endif
#else #else
# define BINDTEXTDOMAIN bindtextdomain__ # define BINDTEXTDOMAIN bindtextdomain__
#endif #endif

View File

@ -104,6 +104,7 @@ GLIBC_2.0 {
_dl_debug_message; _dl_debug_message;
__ffs; __ffs;
__close; __connect; __fcntl; __lseek; __open; __read; __send; __wait; __close; __connect; __fcntl; __lseek; __open; __read; __send; __wait;
__ieee_get_fp_control; __ieee_set_fp_control;
# Exception handling support functions from libgcc # Exception handling support functions from libgcc
__register_frame; __register_frame_table; __deregister_frame; __register_frame; __register_frame_table; __deregister_frame;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1992, 1997 Free Software Foundation, Inc. /* Copyright (C) 1991, 1992, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -83,13 +83,14 @@ main (void)
if (!lose && value == 10) if (!lose && value == 10)
{ {
/* And again for the `__setjmp' function. */ /* And again for the `_setjmp' function. */
extern int __setjmp (jmp_buf); #ifndef _setjmp
extern int _setjmp (jmp_buf);
#endif
last_value = -1; last_value = -1;
lose = 0; lose = 0;
value = __setjmp (env); value = _setjmp (env);
if (value != last_value + 1) if (value != last_value + 1)
{ {
fputs("Shouldn't have ", stdout); fputs("Shouldn't have ", stdout);

View File

@ -235,7 +235,7 @@ __memset_cc_by2 (void *__s, int __c, size_t __n)
"jnz 1b\n" "jnz 1b\n"
"2:\n\t" "2:\n\t"
"movw %w2,(%0)" "movw %w2,(%0)"
: "=&r" (__tmp), "=&r" (__dummy) : "=&r" (__tmp), "=&r" (__d0)
: "q" (0x01010101UL * (unsigned char) __c), "0" (__tmp), "1" (__n / 2) : "q" (0x01010101UL * (unsigned char) __c), "0" (__tmp), "1" (__n / 2)
: "memory", "cc"); : "memory", "cc");
return __s; return __s;
@ -1516,6 +1516,7 @@ __strstr_g (__const char *__haystack, __const char *__needle)
__STRING_INLINE char * __STRING_INLINE char *
__strstr_g (__const char *__haystack, __const char *__needle) __strstr_g (__const char *__haystack, __const char *__needle)
{ {
register unsigned long int __d0, __d1, __d2, __d3;
register char *__res; register char *__res;
__asm__ __volatile__ __asm__ __volatile__
("cld\n\t" ("cld\n\t"

View File

@ -1,4 +1,7 @@
#define readdir64 __no_readdir64_decl #define readdir64 __no_readdir64_decl
#define __readdir64 __no___readdir64_decl
#include <sysdeps/unix/readdir.c> #include <sysdeps/unix/readdir.c>
#undef __readdir64
strong_alias (__readdir, __readdir64)
#undef readdir64 #undef readdir64
weak_alias (__readdir, readdir64) weak_alias (__readdir, readdir64)

View File

@ -51,6 +51,7 @@ sendmsg - sendmsg 3 __libc_sendmsg __sendmsg sendmsg
sendto - sendto 6 __libc_sendto __sendto sendto sendto - sendto 6 __libc_sendto __sendto sendto
setsockopt - setsockopt 5 __setsockopt setsockopt setsockopt - setsockopt 5 __setsockopt setsockopt
shutdown - shutdown 2 __shutdown shutdown shutdown - shutdown 2 __shutdown shutdown
socket - socket 3 __socket socket
socketpair - socketpair 4 __socketpair socketpair socketpair - socketpair 4 __socketpair socketpair
sysctl - _sysctl 6 sysctl sysctl - _sysctl 6 sysctl

View File

@ -98,3 +98,14 @@ fi
if test -f $srcdir/elf/ldconfig.c; then if test -f $srcdir/elf/ldconfig.c; then
has_ldconfig=yes has_ldconfig=yes
fi fi
# We need some extensions to the `ldd' script.
case "$machine" in
i[3456]86* | m68k | sparc/sparc32)
ldd_rewrite_script=../sysdeps/unix/sysv/linux/ldd-rewrite.sed
;;
*)
;;
esac

View File

@ -83,3 +83,14 @@ fi
if test -f $srcdir/elf/ldconfig.c; then if test -f $srcdir/elf/ldconfig.c; then
has_ldconfig=yes has_ldconfig=yes
fi fi
# We need some extensions to the `ldd' script.
changequote(,)
case "$machine" in
i[3456]86* | m68k | sparc/sparc32)
ldd_rewrite_script=../sysdeps/unix/sysv/linux/ldd-rewrite.sed
;;
*)
;;
esac
changequote([,])

View File

@ -2,3 +2,8 @@ ifeq ($(subdir),misc)
sysdep_routines += ioperm iopl vm86 sysdep_routines += ioperm iopl vm86
sysdep_headers += sys/perm.h sys/vm86.h sysdep_headers += sys/perm.h sys/vm86.h
endif endif
ifeq ($(subdir),elf)
others += lddlibc4
install-bin += lddlibc4
endif