mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 08:11:08 +00:00
Update.
2004-10-27 Jakub Jelinek <jakub@redhat.com> * include/resolv.h (_res_opcodes): New extern. Add libresolv_hidden_proto. * resolv/res_debug.c (_res_opcodes): Remove. (__p_class_syms, __p_type_syms): Add libresolv_hidden_proto and libresolv_hidden_data_def. Remove attribute_hidden. * resolv/res_mkquery (_res_opcodes): Remove. * resolv/res_data.c (_res_opcodes): Remove attribute_hidden. Add libresolv_hidden_data_def. * elf/dl-open.c (_dl_open): Don't allow explicitly opening a DSO into an empty namespace.
This commit is contained in:
parent
b1f6875087
commit
32738a2270
14
ChangeLog
14
ChangeLog
@ -1,5 +1,19 @@
|
||||
2004-10-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* include/resolv.h (_res_opcodes): New extern.
|
||||
Add libresolv_hidden_proto.
|
||||
* resolv/res_debug.c (_res_opcodes): Remove.
|
||||
(__p_class_syms, __p_type_syms): Add libresolv_hidden_proto
|
||||
and libresolv_hidden_data_def. Remove attribute_hidden.
|
||||
* resolv/res_mkquery (_res_opcodes): Remove.
|
||||
* resolv/res_data.c (_res_opcodes): Remove attribute_hidden.
|
||||
Add libresolv_hidden_data_def.
|
||||
|
||||
2004-10-27 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* elf/dl-open.c (_dl_open): Don't allow explicitly opening a DSO
|
||||
into an empty namespace.
|
||||
|
||||
* elf/dl-fini.c (_dl_fini): Fix search for map in maps array.
|
||||
Reverse order of namespaces.
|
||||
* elf/Makefile: Add rules to build and run tst-dlmopen3.
|
||||
|
@ -570,6 +570,12 @@ _dl_open (const char *file, int mode, const void *caller_dlopen, Lmid_t nsid)
|
||||
no more namespaces available for dlmopen()"));
|
||||
}
|
||||
}
|
||||
/* Never allow loading a DSO in a namespace which is empty. Such
|
||||
direct placements is only causing problems. */
|
||||
else if (nsid != LM_ID_BASE && nsid != __LM_ID_CALLER
|
||||
&& GL(dl_ns)[nsid]._ns_nloaded == 0)
|
||||
GLRO(dl_signal_error) (EINVAL, file, NULL,
|
||||
N_("invalid target namespace in dlmopen()"));
|
||||
|
||||
args.file = file;
|
||||
args.mode = mode;
|
||||
|
23
elf/tst-dlmopen3.c
Normal file
23
elf/tst-dlmopen3.c
Normal file
@ -0,0 +1,23 @@
|
||||
#include <dlfcn.h>
|
||||
#include <stdio.h>
|
||||
#include <gnu/lib-names.h>
|
||||
|
||||
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
void *h = dlmopen (LM_ID_NEWLM, "$ORIGIN/tst-dlmopen1mod.so", RTLD_LAZY);
|
||||
if (h == NULL)
|
||||
{
|
||||
printf ("cannot get handle for %s: %s\n",
|
||||
"tst-dlmopen1mod.so", dlerror ());
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Do not unload. */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define TEST_FUNCTION do_test ()
|
||||
#include "../test-skeleton.c"
|
@ -98,6 +98,9 @@ libresolv_hidden_proto (__ns_name_unpack)
|
||||
libresolv_hidden_proto (__ns_get16)
|
||||
libresolv_hidden_proto (__ns_get32)
|
||||
|
||||
extern const char *_res_opcodes[];
|
||||
libresolv_hidden_proto (_res_opcodes)
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -39,7 +39,7 @@ static const char rcsid[] = "$BINDId: res_data.c,v 8.17 1999/10/13 17:11:31 vixi
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
const char *_res_opcodes[] attribute_hidden = {
|
||||
const char *_res_opcodes[] = {
|
||||
"QUERY",
|
||||
"IQUERY",
|
||||
"CQUERYM",
|
||||
@ -57,6 +57,7 @@ const char *_res_opcodes[] attribute_hidden = {
|
||||
"ZONEINIT",
|
||||
"ZONEREF",
|
||||
};
|
||||
libresolv_hidden_data_def (_res_opcodes)
|
||||
|
||||
#ifdef BIND_UPDATE
|
||||
const char *_res_sectioncodes[] attribute_hidden = {
|
||||
|
@ -118,7 +118,6 @@ static const char rcsid[] = "$BINDId: res_debug.c,v 8.34 2000/02/29 05:30:55 vix
|
||||
# define SPRINTF(x) sprintf x
|
||||
#endif
|
||||
|
||||
extern const char *_res_opcodes[] attribute_hidden;
|
||||
extern const char *_res_sectioncodes[] attribute_hidden;
|
||||
|
||||
/*
|
||||
@ -349,7 +348,9 @@ p_fqname(const u_char *cp, const u_char *msg, FILE *file) {
|
||||
* that C_ANY is a qclass but not a class. (You can ask for records of class
|
||||
* C_ANY, but you can't have any records of that class in the database.)
|
||||
*/
|
||||
const struct res_sym __p_class_syms[] attribute_hidden = {
|
||||
extern const struct res_sym __p_class_syms[];
|
||||
libresolv_hidden_proto (__p_class_syms)
|
||||
const struct res_sym __p_class_syms[] = {
|
||||
{C_IN, "IN"},
|
||||
{C_CHAOS, "CHAOS"},
|
||||
{C_HS, "HS"},
|
||||
@ -358,6 +359,7 @@ const struct res_sym __p_class_syms[] attribute_hidden = {
|
||||
{C_NONE, "NONE"},
|
||||
{C_IN, (char *)0}
|
||||
};
|
||||
libresolv_hidden_data_def (__p_class_syms)
|
||||
|
||||
/*
|
||||
* Names of message sections.
|
||||
@ -401,7 +403,9 @@ const struct res_sym __p_cert_syms[] attribute_hidden = {
|
||||
* that T_ANY is a qtype but not a type. (You can ask for records of type
|
||||
* T_ANY, but you can't have any records of that type in the database.)
|
||||
*/
|
||||
const struct res_sym __p_type_syms[] attribute_hidden = {
|
||||
extern const struct res_sym __p_type_syms[];
|
||||
libresolv_hidden_proto (__p_type_syms)
|
||||
const struct res_sym __p_type_syms[] = {
|
||||
{ns_t_a, "A", "address"},
|
||||
{ns_t_ns, "NS", "name server"},
|
||||
{ns_t_md, "MD", "mail destination (deprecated)"},
|
||||
@ -448,6 +452,7 @@ const struct res_sym __p_type_syms[] attribute_hidden = {
|
||||
{ns_t_any, "ANY", "\"any\""},
|
||||
{0, NULL, NULL}
|
||||
};
|
||||
libresolv_hidden_data_def (__p_type_syms)
|
||||
|
||||
/*
|
||||
* Names of DNS rcodes.
|
||||
|
@ -88,8 +88,6 @@ static const char rcsid[] = "$BINDId: res_mkquery.c,v 8.12 1999/10/13 16:39:40 v
|
||||
# endif
|
||||
#endif
|
||||
|
||||
extern const char *_res_opcodes[];
|
||||
|
||||
/*
|
||||
* Form all types of queries.
|
||||
* Returns the size of the result or -1.
|
||||
|
Loading…
Reference in New Issue
Block a user