diff options
author | Alexey Neyman <stilor@att.net> | 2017-03-11 13:04:01 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-11 13:04:01 -0800 |
commit | af2c6c601bd8c9e29cda2eb068f59d69937c742c (patch) | |
tree | f33d667d25289b5b01192981ed76cb131df17fe8 /patches/glibc/2.13/106-dl-open-array-bounds.patch | |
parent | 6a63f5ca7d5b1387462228926fc823ad165df257 (diff) | |
parent | 30e8549e3db9a74b651cbfe1872148975329dd06 (diff) | |
download | crosstool-ng-af2c6c601bd8c9e29cda2eb068f59d69937c742c.tar.gz crosstool-ng-af2c6c601bd8c9e29cda2eb068f59d69937c742c.tar.bz2 crosstool-ng-af2c6c601bd8c9e29cda2eb068f59d69937c742c.zip |
Merge pull request #641 from stilor/arm-glibc-2.13
Add ARM patches for 2.12.2/2.13
Diffstat (limited to 'patches/glibc/2.13/106-dl-open-array-bounds.patch')
-rw-r--r-- | patches/glibc/2.13/106-dl-open-array-bounds.patch | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/patches/glibc/2.13/106-dl-open-array-bounds.patch b/patches/glibc/2.13/106-dl-open-array-bounds.patch new file mode 100644 index 00000000..bdb5c19f --- /dev/null +++ b/patches/glibc/2.13/106-dl-open-array-bounds.patch @@ -0,0 +1,27 @@ +commit 328c44c3670ebf6c1bd790acddce65a12998cd6c +Author: Roland McGrath <roland@hack.frob.com> +Date: Fri Apr 17 12:11:58 2015 -0700 + + Fuller check for invalid NSID in _dl_open. + +diff --git a/elf/dl-open.c b/elf/dl-open.c +index 0dbe07f..2d0e082 100644 +--- a/elf/dl-open.c ++++ b/elf/dl-open.c +@@ -619,8 +619,14 @@ no more namespaces available for dlmopen()")); + /* Never allow loading a DSO in a namespace which is empty. Such + direct placements is only causing problems. Also don't allow + loading into a namespace used for auditing. */ +- else if (__builtin_expect (nsid != LM_ID_BASE && nsid != __LM_ID_CALLER, 0) +- && (GL(dl_ns)[nsid]._ns_nloaded == 0 ++ else if ((nsid != LM_ID_BASE && nsid != __LM_ID_CALLER) ++ && ((nsid < 0 || nsid >= GL(dl_nns)) ++ /* This prevents the [NSID] index expressions from being ++ evaluated, so the compiler won't think that we are ++ accessing an invalid index here in the !SHARED case where ++ DL_NNS is 1 and so any NSID != 0 is invalid. */ ++ || DL_NNS == 1 ++ || GL(dl_ns)[nsid]._ns_nloaded == 0 + || GL(dl_ns)[nsid]._ns_loaded->l_auditing)) + _dl_signal_error (EINVAL, file, NULL, + N_("invalid target namespace in dlmopen()")); |