1. 20 12月, 2013 1 次提交
    • R
      fix failure of fchmod, fstat, fchdir, and fchown to produce EBADF · 65ea604c
      Rich Felker 提交于
      the workaround/fallback code for supporting O_PATH file descriptors
      when the kernel lacks support for performing these operations on them
      caused EBADF to get replaced by ENOENT (due to missing entry in
      /proc/self/fd). this is unlikely to affect real-world code (calls that
      might yield EBADF are generally unsafe, especially in library code)
      but it was breaking some test cases.
      
      the fix I've applied is something of a tradeoff: it adds one syscall
      to these operations on kernels where the workaround is needed. the
      alternative would be to catch ENOENT from the /proc lookup and
      translate it to EBADF, but I want to avoid doing that in the interest
      of not touching/depending on /proc at all in these functions as long
      as the kernel correctly supports the operations. this is following the
      general principle of isolating hacks to code paths that are taken on
      broken systems, and keeping the code for correct systems completely
      hack-free.
      65ea604c
  2. 19 12月, 2013 1 次提交
  3. 15 12月, 2013 1 次提交
    • R
      fix dynamic linker entry point for microblaze · 0311d1dd
      Rich Felker 提交于
      the ABI allows the callee to clobber stack slots that correspond to
      arguments passed in registers, so the caller must adjust the stack
      pointer to reserve space appropriately. prior to this fix, the argv
      array was possibly clobbered by dynamic linker code before passing
      control to the main program.
      0311d1dd
  4. 13 12月, 2013 2 次提交
  5. 12 12月, 2013 3 次提交
  6. 07 12月, 2013 1 次提交
  7. 05 12月, 2013 4 次提交
  8. 04 12月, 2013 2 次提交
  9. 02 12月, 2013 8 次提交
  10. 01 12月, 2013 1 次提交
    • R
      support mix of IPv4 and v6 nameservers in resolv.conf · 7603c5f1
      Rich Felker 提交于
      a v6 socket will only be used if there is at least one v6 nameserver
      address. if the kernel lacks v6 support, the code will fall back to
      using a v4 socket and requests to v6 servers will silently fail. when
      using a v6 socket, v4 addresses are converted to v4-mapped form and
      setsockopt is used to ensure that the v6 socket can accept both v4 and
      v6 traffic (this is on-by-default on Linux but the default is
      configurable in /proc and so it needs to be set explicitly on the
      socket level). this scheme avoids increasing resource usage during
      lookups and allows the existing network io loop to be used without
      modification.
      
      previously, nameservers whose address family did not match the address
      family of the first-listed nameserver were simply ignored. prior to
      recent __ipparse fixes, they were not ignored but erroneously parsed.
      7603c5f1
  11. 30 11月, 2013 1 次提交
    • R
      increase TTY_NAME_MAX limit to 32 · 8c8cf4bb
      Rich Felker 提交于
      the old value of 20 was reported by Laurent Bercot as being
      insufficient for a reasonable real-world usage case. actual problem
      was the internal buffer used by ttyname(), but the implementation of
      ttyname uses TTY_NAME_MAX, and for consistency it's best to increase
      both. the new value is aligned with glibc.
      8c8cf4bb
  12. 27 11月, 2013 3 次提交
    • R
      reject invalid address families in getaddrinfo · cabe9aa9
      Rich Felker 提交于
      subsequent code assumes the address family requested is either
      unspecified or one of IPv4/IPv6, and could malfunction if this
      constraint is not met, so other address families should be explicitly
      rejected.
      cabe9aa9
    • R
      adjust fallback INFINITY definition for FLT_EVAL_METHOD==2 case · a663c930
      Rich Felker 提交于
      on archs with excess precision, the floating point constant 1e40f may
      be evaluated such that it does not actually produce an infinity.
      1e5000f is sufficiently large to produce an infinity for all supported
      floating point formats. note that this definition of INFINITY is only
      used for old or non-GNUC compilers anyway; despite being a portable,
      conforming definition, it leads to erroneous warnings on many
      compilers and thus using the builtin is preferred.
      a663c930
    • R
      fix off-by-one length failure in strftime/wcsftime and improve error behavior · f63b8c8c
      Rich Felker 提交于
      these functions were spuriously failing in the case where the buffer
      size was exactly the number of bytes/characters to be written,
      including null termination. since these functions do not have defined
      error conditions other than buffer size, a reasonable application may
      fail to check the return value when the format string and buffer size
      are known to be valid; such an application could then attempt to use a
      non-terminated buffer.
      
      in addition to fixing the bug, I have changed the error handling
      behavior so that these functions always null-terminate the output
      except in the case where the buffer size is zero, and so that they
      always write as many characters as possible before failing, rather
      than dropping whole fields that do not fit. this actually simplifies
      the logic somewhat anyway.
      f63b8c8c
  13. 26 11月, 2013 1 次提交
  14. 25 11月, 2013 3 次提交
    • R
      restore type of NULL to void * except when used in C++ programs · c8a9c221
      Rich Felker 提交于
      unfortunately this eliminates the ability of the compiler to diagnose
      some dangerous/incorrect usage, but POSIX requires (as an extension to
      the C language, i.e. CX shaded) that NULL have type void *. plain C
      allows it to be defined as any null pointer constant.
      
      the definition 0L is preserved for C++ rather than reverting to plain
      0 to avoid dangerous behavior in non-conforming programs which use
      NULL as a variadic sentinel. (it's impossible to use (void *)0 for C++
      since C++ lacks the proper implicit pointer conversions, and other
      popular alternatives like the GCC __null extension seem non-conforming
      to the standard's requirements.)
      c8a9c221
    • M
      shadow: Implement fgetspent · 7e771e62
      Michael Forney 提交于
      7e771e62
    • M
      shadow: Move spent parsing to internal function · b3646b30
      Michael Forney 提交于
      b3646b30
  15. 24 11月, 2013 8 次提交