* misc/syslog.c: Change to allow user the interpretation of the
	outcome even with syslog having no return value.

1998-02-05 20:41  Wolfram Gloger  <wmglo@dent.med.uni-muenchen.de>

	* elf/dl-addr.c: Fix search algorithms in dladdr(); don't assume
	that the number of program headers is >0 (which is wrong for the
	loader itself).

1998-02-27  Ulrich Drepper  <drepper@cygnus.com>
This commit is contained in:
Ulrich Drepper 1998-02-27 18:32:03 +00:00
parent 227d9931ef
commit f024c19647
3 changed files with 25 additions and 8 deletions

View File

@ -1,3 +1,14 @@
1998-02-27 Ulrich Drepper <drepper@cygnus.com>
* misc/syslog.c: Change to allow user the interpretation of the
outcome even with syslog having no return value.
1998-02-05 20:41 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>
* elf/dl-addr.c: Fix search algorithms in dladdr(); don't assume
that the number of program headers is >0 (which is wrong for the
loader itself).
1998-02-27 Ulrich Drepper <drepper@cygnus.com> 1998-02-27 Ulrich Drepper <drepper@cygnus.com>
* Makefile (distribute): Add README.libm. * Makefile (distribute): Add README.libm.

View File

@ -1,5 +1,5 @@
/* Locate the shared object symbol nearest a given address. /* Locate the shared object symbol nearest a given address.
Copyright (C) 1996, 1997 Free Software Foundation, Inc. Copyright (C) 1996, 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
@ -41,13 +41,16 @@ _dl_addr (const void *address, Dl_info *info)
/* We know ADDRESS lies within MATCH if in any shared object. /* We know ADDRESS lies within MATCH if in any shared object.
Make sure it isn't past the end of MATCH's segments. */ Make sure it isn't past the end of MATCH's segments. */
size_t n = match->l_phnum; size_t n = match->l_phnum;
do if (n > 0)
--n; {
while (match->l_phdr[n].p_type != PT_LOAD); do
if (addr >= (match->l_addr + --n;
match->l_phdr[n].p_vaddr + match->l_phdr[n].p_memsz)) while (match->l_phdr[n].p_type != PT_LOAD);
/* Off the end of the highest-addressed shared object. */ if (addr >= (match->l_addr +
return 0; match->l_phdr[n].p_vaddr + match->l_phdr[n].p_memsz))
/* Off the end of the highest-addressed shared object. */
return 0;
}
} }
else else
return 0; return 0;

View File

@ -252,6 +252,8 @@ openlog_internal(const char *ident, int logstat, int logfac)
} }
} }
if (LogFile != -1 && !connected) if (LogFile != -1 && !connected)
{
int old_errno = errno;
if (__connect(LogFile, &SyslogAddr, sizeof(SyslogAddr)) if (__connect(LogFile, &SyslogAddr, sizeof(SyslogAddr))
== -1) == -1)
{ {
@ -263,6 +265,7 @@ openlog_internal(const char *ident, int logstat, int logfac)
{ {
/* retry with next SOCK_STREAM: */ /* retry with next SOCK_STREAM: */
LogType = SOCK_STREAM; LogType = SOCK_STREAM;
__set_errno (old_errno);
continue; continue;
} }
} else } else