1. 02 8月, 2013 8 次提交
  2. 01 8月, 2013 5 次提交
    • R
      in pthread_getattr_np, use mremap rather than madvise to measure stack · 5db951ef
      Rich Felker 提交于
      the original motivation for this patch was that qemu (and possibly
      other syscall emulators) nop out madvise, resulting in an infinite
      loop. however, there is another benefit to this change: madvise may
      actually undo an explicit madvise the application intended for its
      stack, whereas the mremap operation is a true nop. the logic here is
      that mremap must fail if it cannot resize the mapping in-place, and
      the caller knows that it cannot resize in-place because it knows the
      next page of virtual memory is already occupied.
      5db951ef
    • R
      fix theoretical out-of-bound access in dynamic linker · 27593d3a
      Rich Felker 提交于
      one of the arguments to memcmp may be shorter than the length l-3, and
      memcmp is under no obligation not to access past the first byte that
      differs. instead use strncmp which conveys the correct semantics. the
      performance difference is negligible here and since the code is only
      use for shared libc, both functions are already linked anyway.
      27593d3a
    • R
      prevent passing PT_INTERP name to dlopen from double-loading libc · f8c376da
      Rich Felker 提交于
      the dev/inode for the main app and the dynamic linker ("interpreter")
      are not available, so the subsequent checks don't work. in general we
      don't want to make exact string matches to existing libraries prevent
      loading new ones, since this breaks loading upgraded modules in
      module-loading systems. so instead, special-case it.
      
      the motivation for this fix is that calling dlopen on the names
      returned by dl_iterate_phdr or walking the link map (obtained by
      dlinfo) seem to be the only methods available to an application to
      actually get a list of open dso handles.
      f8c376da
    • R
      add some sanity checks in dynamic loader code · 339516ad
      Rich Felker 提交于
      reject elf files which are not ET_EXEC/ET_DYN type as bad exec format,
      and reject ET_EXEC files when they cannot be loaded at the correct
      address, since they are not relocatable at runtime. the main practical
      benefit of this is to make dlopen of the main program fail rather than
      producing an unsafe-to-use handle.
      339516ad
    • R
  3. 31 7月, 2013 3 次提交
  4. 30 7月, 2013 1 次提交
    • T
      use separate sigaction buffers for old and new data · 48748143
      Timo Teräs 提交于
      in signal() it is needed since __sigaction uses restrict in parameters
      and sharing the buffer is technically an aliasing error. do the same
      for the syscall, as at least qemu-user does not handle it properly.
      48748143
  5. 29 7月, 2013 1 次提交
  6. 28 7月, 2013 5 次提交
  7. 27 7月, 2013 6 次提交
  8. 26 7月, 2013 2 次提交
    • R
      16ac00ac
    • R
      new mostly-C crt1 implementation · c5e34dab
      Rich Felker 提交于
      the only immediate effect of this commit is enabling PIE support on
      some archs that did not previously have any Scrt1.s, since the
      existing asm files for crt1 override this C code. so some of the
      crt_arch.h files committed are only there for the sake of documenting
      what their archs "would do" if they used the new C-based crt1.
      
      the expectation is that new archs should use this new system rather
      than using heavy asm for crt1. aside from being easier and less
      error-prone, it also ensures that PIE support is available immediately
      (since Scrt1.o is generated from the same C source, using -fPIC)
      rather than having to be added as an afterthought in the porting
      process.
      c5e34dab
  9. 25 7月, 2013 9 次提交