This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.20-141-gd6f373d


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  d6f373d21b19565838cb9848c15b8070f2fe1305 (commit)
      from  67c379871ed04c4494f3fb01b012504d6cf63f6e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=d6f373d21b19565838cb9848c15b8070f2fe1305

commit d6f373d21b19565838cb9848c15b8070f2fe1305
Author: Matthew Fortune <matthew.fortune@imgtec.com>
Date:   Wed Oct 1 17:08:51 2014 +0100

    Add a hook to enable load-time inspection of program headers
    
    This hook can be used to perform additional compatibility checks
    between shared libraries by inspecting custom program header
    information.
    
    	* elf/dl-machine-reject-phdr.h: New file.
    	* elf/dl-load.c: #include that.
    	(open_verify): Call elf_machine_reject_phdr_p and ignore the file
    	if that returned true.

diff --git a/ChangeLog b/ChangeLog
index 2f7e6f6..fac4138 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-10-31  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+	* elf/dl-machine-reject-phdr.h: New file.
+	* elf/dl-load.c: #include that.
+	(open_verify): Call elf_machine_reject_phdr_p and ignore the file
+	if that returned true.
+
 2014-10-31  Roland McGrath  <roland@hack.frob.com>
 
 	[BZ #17496]
diff --git a/elf/dl-load.c b/elf/dl-load.c
index ce5b626..7a03ccf 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -41,6 +41,7 @@
 #include <dl-load.h>
 #include <dl-map-segments.h>
 #include <dl-unmap-segments.h>
+#include <dl-machine-reject-phdr.h>
 
 
 #include <endian.h>
@@ -1683,6 +1684,11 @@ open_verify (const char *name, struct filebuf *fbp, struct link_map *loader,
 	    }
 	}
 
+      if (__glibc_unlikely (elf_machine_reject_phdr_p
+			    (phdr, ehdr->e_phnum, fbp->buf, fbp->len,
+			     loader, fd)))
+	goto close_and_out;
+
       /* Check .note.ABI-tag if present.  */
       for (ph = phdr; ph < &phdr[ehdr->e_phnum]; ++ph)
 	if (ph->p_type == PT_NOTE && ph->p_filesz >= 32 && ph->p_align >= 4)
diff --git a/elf/dl-machine-reject-phdr.h b/elf/dl-machine-reject-phdr.h
new file mode 100644
index 0000000..d110a32
--- /dev/null
+++ b/elf/dl-machine-reject-phdr.h
@@ -0,0 +1,34 @@
+/* Machine-dependent program header inspection for the ELF loader.
+   Copyright (C) 2014 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _DL_MACHINE_REJECT_PHDR_H
+#define _DL_MACHINE_REJECT_PHDR_H 1
+
+#include <stdbool.h>
+
+/* Return true iff ELF program headers are incompatible with the running
+   host.  */
+static inline bool
+elf_machine_reject_phdr_p (const ElfW(Phdr) *phdr, uint_fast16_t phnum,
+			   const char *buf, size_t len, struct link_map *map,
+			   int fd)
+{
+  return false;
+}
+
+#endif /* dl-machine-reject-phdr.h */

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |    7 ++++++
 elf/dl-load.c                                      |    6 +++++
 .../fips-private.h => elf/dl-machine-reject-phdr.h |   22 +++++++++----------
 3 files changed, 23 insertions(+), 12 deletions(-)
 copy sysdeps/generic/fips-private.h => elf/dl-machine-reject-phdr.h (63%)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]