1. 20 6月, 2012 4 次提交
    • R
      fix dummied-out fdatasync · ca1773d8
      Rich Felker 提交于
      ca1773d8
    • R
      fix pointer overflow bug in floating point printf · 914949d3
      Rich Felker 提交于
      large precision values could cause out-of-bounds pointer arithmetic in
      computing the precision cutoff (used to avoid expensive long-precision
      arithmetic when the result will be discarded). per the C standard,
      this is undefined behavior. one would expect that it works anyway, and
      in fact it did in most real-world cases, but it was randomly
      (depending on aslr) crashing in i386 binaries running on x86_64
      kernels. this is because linux puts the userspace stack near 4GB
      (instead of near 3GB) when the kernel is 64-bit, leading to the
      out-of-bounds pointer arithmetic overflowing past the end of address
      space and giving a very low pointer value, which then compared lower
      than a pointer it should have been higher than.
      
      the new code rearranges the arithmetic so that no overflow can occur.
      
      while this bug could crash printf with memory corruption, it's
      unlikely to have security impact in real-world applications since the
      ability to provide an extremely large field precision value under
      attacker-control is required to trigger the bug.
      914949d3
    • R
      add vhangup syscall wrapper · 25c84449
      Rich Felker 提交于
      request/patch by william haddonthethird, slightly modifed to add
      _GNU_SOURCE feature test macro so that the compiler can verify the
      prototype matches.
      25c84449
    • R
      5bc8e845
  2. 19 6月, 2012 7 次提交
  3. 18 6月, 2012 2 次提交
    • R
      change stdio_ext __freading/__fwriting semantics slightly · deb90c79
      Rich Felker 提交于
      the old behavior was to only consider a stream to be "reading" or
      "writing" if it had buffered, unread/unwritten data. this reportedly
      differs from the traditional behavior of these functions, which is
      essentially to return true as much as possible without creating the
      possibility that both __freading and __fwriting could return true.
      
      gnulib expects __fwriting to return true as soon as a file is opened
      write-only, and possibly expects other cases that depend on the
      traditional behavior. and since these functions exist mostly for
      gnulib (does anything else use them??), they should match the expected
      behavior to avoid even more ugly hacks and workarounds...
      deb90c79
    • R
      3b43d10f
  4. 16 6月, 2012 1 次提交
  5. 15 6月, 2012 1 次提交
  6. 14 6月, 2012 4 次提交
  7. 13 6月, 2012 3 次提交
    • R
      add init_module/delete_module syscall wrappers · 2169265e
      Rich Felker 提交于
      these are not exposed publicly in any header, but the few programs
      that use them (modutils/kmod, etc.) are declaring the functions
      themselves rather than making the syscalls directly, and it doesn't
      really hurt to have them (same as the capset junk).
      2169265e
    • R
      add (currently stubbed due to stubbed strverscmp) versionsort function · fbffcee6
      Rich Felker 提交于
      based on patch by Emil Renner Berthing, with minor changes to dirent.h
      for LFS64 and organization of declarations
      
      this code should work unmodified once a real strverscmp is added, but
      I've been hesitant to add it because the GNU strverscmp behavior is
      harmful in a lot of cases (for instance if you have numeric filenames
      in hex). at some point I plan on trying to design a variant of the
      algorithm that behaves better on a mix of filename styles.
      fbffcee6
    • R
      add deprecated capabilities functions · e361019c
      Rich Felker 提交于
      these were left in glibc for binary compatibility after the public
      part of the interface was removed, and libcap kept using them (with
      its own copy of the header files) rather than just making the syscalls
      directly. might as well add them since they're so small...
      e361019c
  8. 10 6月, 2012 2 次提交
    • R
      6343ac8f
    • R
      add pthread_attr_setstack interface (and get) · 819006a8
      Rich Felker 提交于
      i originally omitted these (optional, per POSIX) interfaces because i
      considered them backwards implementation details. however, someone
      later brought to my attention a fairly legitimate use case: allocating
      thread stacks in memory that's setup for sharing and/or fast transfer
      between CPU and GPU so that the thread can move data to a GPU directly
      from automatic-storage buffers without having to go through additional
      buffer copies.
      
      perhaps there are other situations in which these interfaces are
      useful too.
      819006a8
  9. 08 6月, 2012 7 次提交
  10. 07 6月, 2012 6 次提交
    • R
      check for ld support of -Bsymbolic-functions; disable shared if not avail · 498a100d
      Rich Felker 提交于
      this issue affects the last gpl2 version of binutils, which some
      people are still using out of aversion to gpl3. musl requires
      -Bsymbolic-functions because it's the only way to make a libc.so
      that's able to operate prior to dynamic linking but that still behaves
      correctly with respect to global vars that may be moved to the main
      program via copy relocations.
      498a100d
    • R
    • R
      avoid linking main program in linker tests · 67a0383d
      Rich Felker 提交于
      it's possible that the user has provided a compiler that does not have
      any libc to link to, so linking a main program is a bad idea. instead,
      generate an empty shared library with no dependencies.
      67a0383d
    • R
      make configure try to disable stack protector · 0c5efde8
      Rich Felker 提交于
      in theory we could support stack protector in the libc itself, and
      users wanting to experiment with such usage could add
      -fstack-protector to CFLAGS intentionally. but to avoid breakage in
      the default case, override broken distro-patched gcc that forces stack
      protector on.
      0c5efde8
    • R
      add configure check for gnu linker hash style setting · 08f70a30
      Rich Felker 提交于
      some broken distro-provided toolchains have modified gcc to produce
      only "gnu hash" dynamic hash table by default. as this is unsupported
      by musl, that results in a non-working libc.so. we detect and switch
      this on in configure rather than hard-coding it in the Makefile
      because it's not supported by old binutils versions, but that might
      not even be relevant since old binutils versions already fail from
      -Bsymbolic-functions being missing. at some point I may review whether
      this should just go in the Makefile...
      08f70a30
    • R
      make gcc wrapper rewrite link options rather than just extending them · 6e0ad227
      Rich Felker 提交于
      this is not tested yet, but should work to get rid of unwanted
      --hash-style=gnu hacks present in some distro-patched gcc versions.
      6e0ad227
  11. 06 6月, 2012 2 次提交
    • R
      treat failure of mprotect in map_library as a fatal load failure · f7d15dcc
      Rich Felker 提交于
      the error will propagate up and be printed to the user at program
      start time; at runtime, dlopen will just fail and leave a message for
      dlerror.
      
      previously, if mprotect failed, subsequent attempts to perform
      relocations would crash the program. this was resulting in an
      increasing number of false bug reports on grsec systems where rwx
      permission is not possible in cases where users were wrongly
      attempting to use non-PIC code in shared libraries. supporting that
      usage is in theory possible, but the x86_64 toolchain does not even
      support textrels, and the cost of keeping around the necessary
      information to handle textrels without rwx permissions is
      disproportionate to the benefit (which is essentially just supporting
      broken library setups on grsec machines).
      
      also, i unified the error-out code in map_library now that there are 3
      places from which munmap might have to be called.
      f7d15dcc
    • R
      908bed20
  12. 04 6月, 2012 1 次提交
    • R
      _GNU_SOURCE is supposed to imply _LARGEFILE64_SOURCE · 3b94daba
      Rich Felker 提交于
      this is ugly and stupid, but now that the *64 symbol names exist, a
      lot of broken GNU software detects them in configure, then either
      breaks during build due to missing off64_t definition, or attempts to
      compile without function declarations/prototypes. "fixing" it here is
      easier than telling everyone to add yet another feature test macro to
      their builds.
      3b94daba