diff options
Diffstat (limited to 'nscd')
39 files changed, 71 insertions, 54 deletions
diff --git a/nscd/Makefile b/nscd/Makefile index 0f8efcfb7c..7b36cc9820 100644 --- a/nscd/Makefile +++ b/nscd/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1998-2013 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or diff --git a/nscd/aicache.c b/nscd/aicache.c index a3de6368bd..23dcf80af6 100644 --- a/nscd/aicache.c +++ b/nscd/aicache.c @@ -1,5 +1,5 @@ /* Cache handling for host lookup. - Copyright (C) 2004-2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + Copyright (C) 2004-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. diff --git a/nscd/cache.c b/nscd/cache.c index 96ade53263..699447a853 100644 --- a/nscd/cache.c +++ b/nscd/cache.c @@ -1,4 +1,4 @@ -/* Copyright (c) 1998, 1999, 2003-2009, 2011 Free Software Foundation, Inc. +/* Copyright (c) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. diff --git a/nscd/connections.c b/nscd/connections.c index 77b9ac40a3..f6e2328637 100644 --- a/nscd/connections.c +++ b/nscd/connections.c @@ -1,5 +1,5 @@ /* Inner loops of cache daemon. - Copyright (C) 1998-2012 Free Software Foundation, Inc. + Copyright (C) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. diff --git a/nscd/dbg_log.c b/nscd/dbg_log.c index 1d1a440510..0ac8a11035 100644 --- a/nscd/dbg_log.c +++ b/nscd/dbg_log.c @@ -1,4 +1,4 @@ -/* Copyright (c) 1998, 2000, 2004, 2005, 2009 Free Software Foundation, Inc. +/* Copyright (c) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998. diff --git a/nscd/dbg_log.h b/nscd/dbg_log.h index 057fd4fc77..0c35a30f0a 100644 --- a/nscd/dbg_log.h +++ b/nscd/dbg_log.h @@ -1,4 +1,4 @@ -/* Copyright (c) 1998, 2000, 2004 Free Software Foundation, Inc. +/* Copyright (c) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998. diff --git a/nscd/gai.c b/nscd/gai.c index 0609332938..7db5aa9d2a 100644 --- a/nscd/gai.c +++ b/nscd/gai.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2012 Free Software Foundation, Inc. +/* Copyright (C) 2004-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 2004. diff --git a/nscd/getgrgid_r.c b/nscd/getgrgid_r.c index 5b433321b5..f6b8373a98 100644 --- a/nscd/getgrgid_r.c +++ b/nscd/getgrgid_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2012 Free Software Foundation, Inc. +/* Copyright (C) 1996-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. diff --git a/nscd/getgrnam_r.c b/nscd/getgrnam_r.c index aff6fcc532..f948ef22eb 100644 --- a/nscd/getgrnam_r.c +++ b/nscd/getgrnam_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2012 Free Software Foundation, Inc. +/* Copyright (C) 1996-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. diff --git a/nscd/gethstbyad_r.c b/nscd/gethstbyad_r.c index c0988b862d..60633e653f 100644 --- a/nscd/gethstbyad_r.c +++ b/nscd/gethstbyad_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2012 Free Software Foundation, Inc. +/* Copyright (C) 1996-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. diff --git a/nscd/gethstbynm3_r.c b/nscd/gethstbynm3_r.c index a7d25548a8..8143537d7e 100644 --- a/nscd/gethstbynm3_r.c +++ b/nscd/gethstbynm3_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2012 Free Software Foundation, Inc. +/* Copyright (C) 1996-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. diff --git a/nscd/getpwnam_r.c b/nscd/getpwnam_r.c index 06e57044bd..d22d35b315 100644 --- a/nscd/getpwnam_r.c +++ b/nscd/getpwnam_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2012 Free Software Foundation, Inc. +/* Copyright (C) 1996-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. diff --git a/nscd/getpwuid_r.c b/nscd/getpwuid_r.c index ce8e2dfefa..8be7853d3b 100644 --- a/nscd/getpwuid_r.c +++ b/nscd/getpwuid_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2012 Free Software Foundation, Inc. +/* Copyright (C) 1996-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. diff --git a/nscd/getsrvbynm_r.c b/nscd/getsrvbynm_r.c index a1c25c705f..29e0a2504c 100644 --- a/nscd/getsrvbynm_r.c +++ b/nscd/getsrvbynm_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2012 Free Software Foundation, Inc. +/* Copyright (C) 1996-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. diff --git a/nscd/getsrvbypt_r.c b/nscd/getsrvbypt_r.c index 3c05771f1f..5d6c6fb57b 100644 --- a/nscd/getsrvbypt_r.c +++ b/nscd/getsrvbypt_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2012 Free Software Foundation, Inc. +/* Copyright (C) 1996-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. diff --git a/nscd/grpcache.c b/nscd/grpcache.c index d09badfac6..d25d8e92f2 100644 --- a/nscd/grpcache.c +++ b/nscd/grpcache.c @@ -1,5 +1,5 @@ /* Cache handling for group lookup. - Copyright (C) 1998-2008, 2009, 2011, 2012 Free Software Foundation, Inc. + Copyright (C) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. @@ -177,7 +177,8 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, char *cp; const size_t key_len = strlen (key); const size_t buf_len = 3 * sizeof (grp->gr_gid) + key_len + 1; - char *buf = alloca (buf_len); + size_t alloca_used = 0; + char *buf = alloca_account (buf_len, alloca_used); ssize_t n; size_t cnt; @@ -189,7 +190,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, /* Determine the length of all members. */ while (grp->gr_mem[gr_mem_cnt]) ++gr_mem_cnt; - gr_mem_len = (uint32_t *) alloca (gr_mem_cnt * sizeof (uint32_t)); + gr_mem_len = alloca_account (gr_mem_cnt * sizeof (uint32_t), alloca_used); for (gr_mem_cnt = 0; grp->gr_mem[gr_mem_cnt]; ++gr_mem_cnt) { gr_mem_len[gr_mem_cnt] = strlen (grp->gr_mem[gr_mem_cnt]) + 1; @@ -204,7 +205,8 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, change. Allocate memory on the cache since it is likely discarded anyway. If it turns out to be necessary to have a new record we can still allocate real memory. */ - bool alloca_used = false; + bool dataset_temporary = false; + bool dataset_malloced = false; dataset = NULL; if (he == NULL) @@ -215,10 +217,20 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, /* We cannot permanently add the result in the moment. But we can provide the result as is. Store the data in some temporary memory. */ - dataset = (struct dataset *) alloca (total + n); + if (! __libc_use_alloca (alloca_used + total + n)) + { + dataset = malloc (total + n); + /* Perhaps we should log a message that we were unable + to allocate memory for a large request. */ + if (dataset == NULL) + goto out; + dataset_malloced = true; + } + else + dataset = alloca_account (total + n, alloca_used); /* We cannot add this record to the permanent database. */ - alloca_used = true; + dataset_temporary = true; } dataset->head.allocsize = total + n; @@ -272,6 +284,11 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, allocated on the stack and need not be freed. */ dh->timeout = dataset->head.timeout; ++dh->nreloads; + + /* If the new record was allocated via malloc, then we must free + it here. */ + if (dataset_malloced) + free (dataset); } else { @@ -287,7 +304,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, key_copy = (char *) newp + (key_copy - (char *) dataset); dataset = memcpy (newp, dataset, total + n); - alloca_used = false; + dataset_temporary = false; } /* Mark the old record as obsolete. */ @@ -302,7 +319,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, assert (fd != -1); #ifdef HAVE_SENDFILE - if (__builtin_expect (db->mmap_used, 1) && !alloca_used) + if (__builtin_expect (db->mmap_used, 1) && ! dataset_temporary) { assert (db->wr_fd != -1); assert ((char *) &dataset->resp > (char *) db->data); @@ -329,7 +346,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, /* Add the record to the database. But only if it has not been stored on the stack. */ - if (! alloca_used) + if (! dataset_temporary) { /* If necessary, we also propagate the data to disk. */ if (db->persistent) diff --git a/nscd/hstcache.c b/nscd/hstcache.c index a7ecdc7e9f..ca2145212d 100644 --- a/nscd/hstcache.c +++ b/nscd/hstcache.c @@ -1,5 +1,5 @@ /* Cache handling for host lookup. - Copyright (C) 1998-2008, 2009, 2011, 2012 Free Software Foundation, Inc. + Copyright (C) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c index 255b121ddc..196407c870 100644 --- a/nscd/initgrcache.c +++ b/nscd/initgrcache.c @@ -1,5 +1,5 @@ /* Cache handling for host lookup. - Copyright (C) 2004-2006, 2008, 2009, 2011, 2012 Free Software Foundation, Inc. + Copyright (C) 2004-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. diff --git a/nscd/mem.c b/nscd/mem.c index 3811b447b0..392fe5bbb4 100644 --- a/nscd/mem.c +++ b/nscd/mem.c @@ -1,5 +1,5 @@ /* Cache memory handling. - Copyright (C) 2004-2006, 2008, 2009, 2012 Free Software Foundation, Inc. + Copyright (C) 2004-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c index 70cf9c14b3..2d6c5aa459 100644 --- a/nscd/netgroupcache.c +++ b/nscd/netgroupcache.c @@ -1,5 +1,5 @@ /* Cache handling for netgroup lookup. - Copyright (C) 2011-2012 Free Software Foundation, Inc. + Copyright (C) 2011-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h index aef76e8fdd..11964f607d 100644 --- a/nscd/nscd-client.h +++ b/nscd/nscd-client.h @@ -1,4 +1,4 @@ -/* Copyright (c) 1998-2012 Free Software Foundation, Inc. +/* Copyright (c) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998. diff --git a/nscd/nscd.c b/nscd/nscd.c index bee9ed49ff..26cf3c2692 100644 --- a/nscd/nscd.c +++ b/nscd/nscd.c @@ -1,4 +1,4 @@ -/* Copyright (c) 1998-2012 Free Software Foundation, Inc. +/* Copyright (c) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998. @@ -451,13 +451,16 @@ parse_opt (int key, char *arg, struct argp_state *state) static char * more_help (int key, const char *text, void *input) { + char *tp = NULL; switch (key) { case ARGP_KEY_HELP_EXTRA: /* We print some extra information. */ - return strdup (gettext ("\ + if (asprintf (&tp, gettext ("\ For bug reporting instructions, please see:\n\ -<http://www.gnu.org/software/libc/bugs.html>.\n")); +%s.\n"), REPORT_BUGS_TO) < 0) + return NULL; + return tp; default: break; } @@ -468,12 +471,12 @@ For bug reporting instructions, please see:\n\ static void print_version (FILE *stream, struct argp_state *state) { - fprintf (stream, "nscd (GNU %s) %s\n", PACKAGE, VERSION); + fprintf (stream, "nscd %s%s\n", PKGVERSION, VERSION); fprintf (stream, gettext ("\ Copyright (C) %s Free Software Foundation, Inc.\n\ This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ -"), "2012"); +"), "2013"); fprintf (stream, gettext ("Written by %s.\n"), "Thorsten Kukuk and Ulrich Drepper"); } diff --git a/nscd/nscd.h b/nscd/nscd.h index 86ac27855a..46d0433286 100644 --- a/nscd/nscd.h +++ b/nscd/nscd.h @@ -1,4 +1,4 @@ -/* Copyright (c) 1998-2001, 2003-2009, 2011, 2012 Free Software Foundation, Inc. +/* Copyright (c) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998. diff --git a/nscd/nscd_conf.c b/nscd/nscd_conf.c index 07faf44a53..30cc403824 100644 --- a/nscd/nscd_conf.c +++ b/nscd/nscd_conf.c @@ -1,4 +1,4 @@ -/* Copyright (c) 1998, 2000, 2003-2008, 2011 Free Software Foundation, Inc. +/* Copyright (c) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998. diff --git a/nscd/nscd_getai.c b/nscd/nscd_getai.c index 40fe3d0ef6..236c939477 100644 --- a/nscd/nscd_getai.c +++ b/nscd/nscd_getai.c @@ -1,5 +1,4 @@ -/* Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. +/* Copyright (C) 2004-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. diff --git a/nscd/nscd_getgr_r.c b/nscd/nscd_getgr_r.c index 54372e4ef0..dbcaac934a 100644 --- a/nscd/nscd_getgr_r.c +++ b/nscd/nscd_getgr_r.c @@ -1,5 +1,4 @@ -/* Copyright (C) 1998-2000, 2002-2005, 2006, 2007, 2009 - Free Software Foundation, Inc. +/* Copyright (C) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@uni-paderborn.de>, 1998. diff --git a/nscd/nscd_gethst_r.c b/nscd/nscd_gethst_r.c index d64ad2e7b6..4ede24b194 100644 --- a/nscd/nscd_gethst_r.c +++ b/nscd/nscd_gethst_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2012 Free Software Foundation, Inc. +/* Copyright (C) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. diff --git a/nscd/nscd_getpw_r.c b/nscd/nscd_getpw_r.c index e405057d16..46a9108b9e 100644 --- a/nscd/nscd_getpw_r.c +++ b/nscd/nscd_getpw_r.c @@ -1,5 +1,4 @@ -/* Copyright (C) 1998, 1999, 2003, 2004, 2005, 2007, 2009 - Free Software Foundation, Inc. +/* Copyright (C) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@uni-paderborn.de>, 1998. diff --git a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c index acf7e22f82..f79bd42e1a 100644 --- a/nscd/nscd_getserv_r.c +++ b/nscd/nscd_getserv_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2007. diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c index 96fb93db76..ba58893560 100644 --- a/nscd/nscd_helper.c +++ b/nscd/nscd_helper.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2012 Free Software Foundation, Inc. +/* Copyright (C) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. diff --git a/nscd/nscd_initgroups.c b/nscd/nscd_initgroups.c index 921a795b49..19e3d79aa8 100644 --- a/nscd/nscd_initgroups.c +++ b/nscd/nscd_initgroups.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. +/* Copyright (C) 2004-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. diff --git a/nscd/nscd_netgroup.c b/nscd/nscd_netgroup.c index 8f6925eca1..cac4ebfcd3 100644 --- a/nscd/nscd_netgroup.c +++ b/nscd/nscd_netgroup.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2011 Free Software Foundation, Inc. +/* Copyright (C) 2011-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. diff --git a/nscd/nscd_proto.h b/nscd/nscd_proto.h index 25a69dac6d..d0c6584e4b 100644 --- a/nscd/nscd_proto.h +++ b/nscd/nscd_proto.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2000,2002,2004,2007,2011 Free Software Foundation, Inc. +/* Copyright (C) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998. diff --git a/nscd/nscd_setup_thread.c b/nscd/nscd_setup_thread.c index d4fd27bf60..037652edf6 100644 --- a/nscd/nscd_setup_thread.c +++ b/nscd/nscd_setup_thread.c @@ -1,5 +1,5 @@ /* Setup of nscd worker threads. Stub verison. - Copyright (C) 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2004-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. diff --git a/nscd/nscd_stat.c b/nscd/nscd_stat.c index cbc865d632..3df4273136 100644 --- a/nscd/nscd_stat.c +++ b/nscd/nscd_stat.c @@ -1,4 +1,4 @@ -/* Copyright (c) 1998, 2003, 2004, 2005, 2010 Free Software Foundation, Inc. +/* Copyright (c) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998. diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c index a8ea407aa0..ef492b58c1 100644 --- a/nscd/pwdcache.c +++ b/nscd/pwdcache.c @@ -1,5 +1,5 @@ /* Cache handling for passwd lookup. - Copyright (C) 1998-2008, 2009, 2011, 2012 Free Software Foundation, Inc. + Copyright (C) 1998-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. diff --git a/nscd/selinux.c b/nscd/selinux.c index 18b95730bd..0866c44953 100644 --- a/nscd/selinux.c +++ b/nscd/selinux.c @@ -1,5 +1,5 @@ /* SELinux access controls for nscd. - Copyright (C) 2004,2005,2006,2007,2009,2011 Free Software Foundation, Inc. + Copyright (C) 2004-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Matthew Rickard <mjricka@epoch.ncsc.mil>, 2004. diff --git a/nscd/selinux.h b/nscd/selinux.h index 596b954d2f..baf249d6af 100644 --- a/nscd/selinux.h +++ b/nscd/selinux.h @@ -1,5 +1,5 @@ /* Header for nscd SELinux access controls. - Copyright (C) 2004, 2006, 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2004-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Matthew Rickard <mjricka@epoch.ncsc.mil>, 2004. diff --git a/nscd/servicescache.c b/nscd/servicescache.c index 0e7520de24..d29cde7d63 100644 --- a/nscd/servicescache.c +++ b/nscd/servicescache.c @@ -1,5 +1,5 @@ /* Cache handling for services lookup. - Copyright (C) 2007, 2008, 2009, 2011, 2012 Free Software Foundation, Inc. + Copyright (C) 2007-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@drepper.com>, 2007. |