1. 25 2月, 2018 1 次提交
    • R
      avoid use of readv syscall in __stdio_read backend when not needed · e7eeeb9f
      Rich Felker 提交于
      formally, calling readv with a zero-length first iov component should
      behave identically to calling read on just the second component, but
      presence of a zero-length iov component has triggered bugs in some
      kernels and performs significantly worse than a simple read on some
      file types.
      e7eeeb9f
  2. 24 2月, 2018 3 次提交
  3. 23 2月, 2018 28 次提交
  4. 22 2月, 2018 4 次提交
    • R
      update authors/contributors list · 1366b3c5
      Rich Felker 提交于
      these additions were made by scanning git log since the last major
      update in commit 790580b2. in addition
      to git-level commit authorship, "patch by" text in the commit message
      was also scanned. this idiom was used in the past for patches that
      underwent substantial edits when merging or where the author did not
      provide a commit message. going forward, my intent is to use commit
      authorship consistently for attribution.
      
      as before my aim was adding everyone with either substantial code
      contributions or a pattern of ongoing simple patch submission; any
      omissions are unintentional.
      1366b3c5
    • M
      fix detection of LIBCC for compiler-rt with clang · fcf24b9f
      Matúš Olekšák 提交于
      Maintainer's note: at one point, -lcompiler_rt apparently worked, and
      may still work and be preferable if one has manually installed the
      library in a public lib directory. but with current versions of clang,
      the full pathname to the library file is needed. the original patch
      removed the -lcompiler_rt check; I have left it in place in case there
      are users depending on it, and since, when it does work, it's
      preferable so as not to code a dependency on the specific compiler
      version and paths in config.mak.
      fcf24b9f
    • R
      convert execvp error handling to switch statement · 6d610242
      Rich Felker 提交于
      this is more extensible if we need to consider additional errors, and
      more efficient as long as the compiler does not know it can cache the
      result of __errno_location (a surprisingly complex issue detailed in
      commit a603a75a).
      6d610242
    • P
      fix execvp failing on not-dir entries in PATH. · 8e0b3806
      Przemyslaw Pawelczyk 提交于
      It's better to make execvp continue PATH search on ENOTDIR rather than
      issuing an error. Bogus entries should not render rest of PATH invalid.
      
      Maintainer's note: POSIX seems to require the search to continue like
      this as part of XBD 8.3 Other Environment Variables. Only errors that
      conclusively determine non-existence are candidates for continuing;
      otherwise for consistency we have to report the error.
      8e0b3806
  5. 12 2月, 2018 1 次提交
    • R
      fix incorrect overflow check for allocation in fmemopen · 75cba9c6
      Rich Felker 提交于
      when a null buffer pointer is passed to fmemopen, requesting it
      allocate its own memory buffer, extremely large size arguments near
      SIZE_MAX could overflow and result in underallocation. this results
      from omission of the size of the cookie structure in the overflow
      check but inclusion of it in the calloc call.
      
      instead of accounting for individual small contributions to the total
      allocation size needed, simply reject sizes larger than PTRDIFF_MAX,
      which will necessarily fail anyway. then adding arbitrary fixed-size
      structures is safe without matching up the expressions in the
      comparison and the allocation.
      75cba9c6
  6. 08 2月, 2018 3 次提交
    • S
      better configure check for long double support · 249b621f
      Szabolcs Nagy 提交于
      249b621f
    • D
      make getcwd fail if it cannot obtain an absolute path · 23ddab85
      Dmitry V. Levin 提交于
      Currently getcwd(3) can succeed without returning an absolute path
      because the underlying getcwd syscall, starting with linux commit
      v2.6.36-rc1~96^2~2, may succeed without returning an absolute path.
      
      This is a conformance issue because "The getcwd() function shall
      place an absolute pathname of the current working directory
      in the array pointed to by buf, and return buf".
      
      Fix this by checking the path returned by syscall and failing with
      ENOENT if the path is not absolute.  The error code is chosen for
      consistency with the case when the current directory is unlinked.
      
      Similar issue was fixed in glibc recently, see
      https://sourceware.org/bugzilla/show_bug.cgi?id=22679
      23ddab85
    • R
      disallow non-absolute rpath $ORIGIN for suid/sgid/AT_SECURE processes · 376b3c54
      Rich Felker 提交于
      in theory non-absolute origins can only arise when either the main
      program is invoked by running ldso as a command (inherently non-suid)
      or when dlopen was called with a relative pathname containing at least
      one slash. such usage would be inherently insecure in an suid program
      anyway, so the old behavior here does not seem to have been insecure.
      harden against it anyway.
      376b3c54