1. 07 2月, 2014 1 次提交
    • R
      fix ftello result for append streams with unflushed output · 3af2edee
      Rich Felker 提交于
      when there is unflushed output, ftello (and ftell) compute the logical
      stream position as the underlying file descriptor's offset plus an
      adjustment for the amount of buffered data. however, this can give the
      wrong result for append-mode streams where the unflushed writes should
      adjust the logical position to be at the end of the file, as if a seek
      to end-of-file takes place before the write.
      
      the solution turns out to be a simple trick: when ftello (indirectly)
      calls lseek to determine the current file offset, use SEEK_END instead
      of SEEK_CUR if the stream is append-mode and there's unwritten
      buffered data.
      
      the ISO C rules regarding switching between reading and writing for a
      stream opened in an update mode, along with the POSIX rules regarding
      switching "active handles", conveniently leave undefined the
      hypothetical usage cases where this fix might lead to observably
      incorrect offsets.
      
      the bug being fixed was discovered via the test case for glibc issue
      3af2edee
  2. 06 2月, 2014 6 次提交
    • R
      reduce namespace pollution in netinet/udp.h · 89511cd9
      Rich Felker 提交于
      the affected part of the header is responsible for providing both GNU
      and BSD versions of the udphdr structure. previously, the
      namespace-polluting GNU names were always used for the actual struct
      members, and the BSD names, which are named in a manner resembling a
      sane namespace, were always macros defined to expand to the GNU names.
      now, unless _GNU_SOURCE is defined, the BSD names are used as the
      actual structure members, and the macros and GNU names only come into
      play when the application requests them.
      89511cd9
    • R
      fix use of legacy u_intN_t types in netinet/tcp.h · 685b1cd4
      Rich Felker 提交于
      policy is to avoid using these types except where they are needed for
      namespace conformance. C99-style stdint.h types should be used
      instead.
      685b1cd4
    • R
      add support for BSD struct tcphdr in netinet/tcp.h · fdaaa68d
      Rich Felker 提交于
      there are two versions of this structure: the BSD version and the GNU
      version. previously only the GNU version was supported. the only way
      to support both simultaneously is with an anonymous union, which was a
      nonstandard extension prior to C11, so some effort is made to avoid
      breakage with compilers which do not support anonymous unions.
      
      this commit is based on a patch by Timo Teräs, but with some changes.
      in particular, the GNU version of the structure is not exposed unless
      _GNU_SOURCE is defined; this both avoids namespace pollution and
      dependency on anonymous unions in the default feature profile.
      fdaaa68d
    • R
      add nonstandard timespec/timeval conversion macros in sys/time.h · ad87c2ee
      Rich Felker 提交于
      these are poorly designed (illogical argument order) and even poorly
      implemented (brace issues) on glibc, but unfortunately some software
      is using them. we could consider removing them again in the future at
      some point if they're documented as deprecated, but for now the
      simplest thing to do is just to provide them under _GNU_SOURCE.
      ad87c2ee
    • T
      add NO_ADDRESS macro to netdb.h as an alias for NO_DATA · a0351ee6
      Timo Teräs 提交于
      some applications expect it to be defined, despite the standard making
      it impossible for it to ever be returned as a value distinct from
      NO_DATA. since these macros are outside the scope of the current
      standards, no special effort is made to hide NO_ADDRESS under
      conditions where the others are exposed.
      a0351ee6
    • T
      add legacy functions setkey() and encrypt() · 16a3580e
      Timo Teräs 提交于
      16a3580e
  3. 02 2月, 2014 1 次提交
    • R
      fix nftw FTW_MOUNT flag · 73871ee3
      Rich Felker 提交于
      the incorrect check for crossing device boundaries was preventing nftw
      from traversing anything except the initially provided pathname.
      73871ee3
  4. 23 1月, 2014 1 次提交
  5. 21 1月, 2014 3 次提交
    • R
      add version.h to .gitignore; it is a generated file · 59314304
      Rich Felker 提交于
      59314304
    • R
      fix crash in dynamic linker when certain copy relocations are unsatisfied · 69003e05
      Rich Felker 提交于
      STB_WEAK is only a weak reference for undefined symbols (those with a
      section of SHN_UNDEF). otherwise, it's a weak definition. normally
      this distinction would not matter, since a relocation referencing a
      symbol that also provides a definition (not SHN_UNDEF) will always
      succeed in finding the referenced symbol itself. however, in the case
      of copy relocations, the referenced symbol itself is ignored in order
      to search for another symbol to copy from, and thus it's possible that
      no definition is found. in this case, if the symbol being resolved
      happened to be a weak definition, it was misinterpreted as a weak
      reference, suppressing the error path and causing a crash when the
      copy relocation was performed with a null source pointer passed to
      memcpy.
      
      there are almost certainly still situations in which invalid
      combinations of symbol and relocation types can cause the dynamic
      linker to crash (this is pretty much inevitable), but the intent is
      that crashes not be possible for symbol/relocation tables produced by
      a valid linker.
      69003e05
    • S
      fix initstate to make the state buffer usable in setstate · 1569f396
      Szabolcs Nagy 提交于
      setstate could use the results of previous initstate or setstate
      calls (they return the old state buffer), but the documentation
      requires that an initialized state buffer should be possible to
      use in setstate immediately, which means that initstate should
      save the generator parameters in it.
      
      I also removed the copyright notice since it is present in the
      copyright file.
      1569f396
  6. 16 1月, 2014 2 次提交
  7. 12 1月, 2014 3 次提交
  8. 09 1月, 2014 9 次提交
    • R
      fix namespace violation in sys/shm.h · 513136ef
      Rich Felker 提交于
      in fixing this, I've changed the logic from ugly #if/#else blocks
      inside the struct shm_info definition to a fixed struct definition and
      optional macros to rename the elements. this will be helpful if we
      need to move shm_info to a bits header in the future, as it will keep
      the feature test logic out of bits.
      513136ef
    • R
      fix namespace violations in utmpx.h · a1527a0c
      Rich Felker 提交于
      a1527a0c
    • R
      add IUTF8 to termios.h on archs that were missing it · d18df33c
      Rich Felker 提交于
      d18df33c
    • R
      fix namespace violations in termios.h, at least mostly · a627eb35
      Rich Felker 提交于
      the fix should be complete on archs that use the generic definitions
      (i386, arm, x86_64, microblaze), but mips and powerpc have not been
      checked thoroughly and may need more fixes.
      a627eb35
    • R
      fix remaining known namespace violations for netinet/in.h · acde0135
      Rich Felker 提交于
      the imr_, imsf_, ip6_, ip6m_, ipi_, ipi6_, SCM_, and SOL_ prefixes are
      not in the reserved namespace for this header. thus the constants and
      structures using them need to be protected under appropriate feature
      test macros.
      
      this also affects some headers which are permitted to include
      netinet/in.h, particularly netdb.h and arpa/inet.h.
      
      the SOL_ macros are moved to sys/socket.h where they are in the
      reserved namespace (SO*). they are still accessible via netinet/in.h
      since it includes sys/socket.h implicitly (which is permitted).
      
      the SCM_SRCRT macro is simply removed, since the definition used for
      it, IPV6_RXSRCRT is not defined anywhere. it could be re-added, this
      time in sys/socket.h, if the appropriate value can be determined;
      however, given that the erroneous definition was not caught, it is
      unlikely that any software actually attempts to use SCM_SRCRT.
      acde0135
    • R
      8e776e3e
    • S
      add __isoc99_vfscanf weak alias to vfscanf · 5f942053
      Szabolcs Nagy 提交于
      this glibc abi compatibility function was missed when the scanf
      aliases were added.
      5f942053
    • S
      math: add drem and dremf weak aliases to i386 remainder asm · bcff807d
      Szabolcs Nagy 提交于
      weak_alias was only in the c code, so drem was missing on platforms
      where remainder is implemented in asm.
      bcff807d
    • R
      fix type of semctl variadic argument · 28929422
      Rich Felker 提交于
      per POSIX, the variadic argument has type union semun, which may
      contain a pointer or int; the type read depends on the command being
      issued. this allows the userspace part of the implementation to be
      type-correct without requiring special-casing for different commands.
      the kernel always expects to receive the argument interpreted as
      unsigned long (or equivalently, a pointer), and does its own handling
      of extracting the int portion from the representation, as needed.
      
      this change fixes two possible issues: most immediately, reading the
      argument as a (signed) long and passing it to the syscall would
      perform incorrect sign-extension of pointers on the upcoming x32
      target. the other possible issue is that some archs may use different
      (user-space) argument-passing convention for unions, preventing va_arg
      from correctly obtaining the argument when the type long (or even
      unsigned long or void *) is passed to it.
      28929422
  9. 08 1月, 2014 1 次提交
    • R
      in fcntl, avoid passing pointer arguments to syscalls as longs · 131871a3
      Rich Felker 提交于
      really, fcntl should be changed to use the correct type corresponding
      to cmd when calling va_arg, and to carry the correct type through
      until making the syscall. however, this greatly increases binary size
      and does not seem to offer any benefits except formal correctness, so
      I'm holding off on that change for now.
      
      the minimal changes made in this patch are in preparation for addition
      of the x32 port, where the syscall macros need to know whether their
      arguments are pointers or integers in order to properly pass them to
      the 64-bit kernel.
      131871a3
  10. 07 1月, 2014 9 次提交
    • R
      fix const-correctness of argument to stime · 1d23b3c9
      Rich Felker 提交于
      it's unclear what the historical signature for this function was, but
      semantically, the argument should be a pointer to const, and this is
      what glibc uses. correct programs should not be using this function
      anyway, so it's unlikely to matter.
      1d23b3c9
    • R
      fix signedness of pgoff argument to remap_file_pages · 74998fbe
      Rich Felker 提交于
      both the kernel and glibc agree that this argument is unsigned; the
      incorrect type ssize_t came from erroneous man pages.
      74998fbe
    • R
      fix const-correctness in sigandset/sigorset arguments · 3500555d
      Rich Felker 提交于
      this change is consistent with the corresponding glibc functions and
      is semantically const-correct. the incorrect argument types without
      const seem to have been taken from erroneous man pages.
      3500555d
    • R
      remove sys/sysctl.h · 2c5e7560
      Rich Felker 提交于
      this functionality has essentially always been deprecated in linux,
      and was never supported by musl. the presence of the header was
      reported to cause some software to attempt to use the nonexistant
      function, so removing the header is the cleanest solution.
      2c5e7560
    • R
      fix incorrect type for wd argument of inotify_rm_watch · 27503373
      Rich Felker 提交于
      this was wrong since the original commit adding inotify, and I don't
      see any explanation for it. not even the man pages have it wrong. it
      was most likely a copy-and-paste error.
      27503373
    • R
      fix argument types for legacy function inet_makeaddr · dbe221ec
      Rich Felker 提交于
      the type int was taken from seemingly erroneous man pages. glibc uses
      in_addr_t (uint32_t), and semantically, the arguments should be
      unsigned.
      dbe221ec
    • R
      eliminate explicit (long) casts when making syscalls · eca335fc
      Rich Felker 提交于
      this practice came from very early, before internal/syscall.h defined
      macros that could accept pointer arguments directly and handle them
      correctly. aside from being ugly and unnecessary, it looks like it
      will be problematic when we add support for 32-bit ABIs on archs where
      registers (and syscall arguments) are 64-bit, e.g. x32 and mips n32.
      eca335fc
    • R
      const-qualify the address argument to dladdr · 839cc4e6
      Rich Felker 提交于
      this agrees with implementation practice on glibc and BSD systems, and
      is the const-correct way to do things; it eliminates warnings from
      passing pointers to const. the prototype without const came from
      seemingly erroneous man pages.
      839cc4e6
    • R
      1e7a581a
  11. 04 1月, 2014 1 次提交
  12. 03 1月, 2014 3 次提交
    • R
      fanotify.c: fix typo in header inclusion · 9e91398b
      rofl0r 提交于
      the header is included only as a guard to check that the declaration
      and definition match, so the typo didn't cause any breakage aside
      from omitting this check.
      9e91398b
    • R
      disable the brk function · 863d628d
      Rich Felker 提交于
      the reasons are the same as for sbrk. unlike sbrk, there is no safe
      usage because brk does not return any useful information, so it should
      just fail unconditionally.
      863d628d
    • R
      disable sbrk for all values of increment except 0 · 7a995fe7
      Rich Felker 提交于
      use of sbrk is never safe; it conflicts with malloc, and malloc may be
      used internally by the implementation basically anywhere. prior to
      this change, applications attempting to use sbrk to do their own heap
      management simply caused untrackable memory corruption; now, they will
      fail with ENOMEM allowing the errors to be fixed.
      
      sbrk(0) is still permitted as a way to get the current brk; some
      misguided applications use this as a measurement of their memory
      usage or for other related purposes, and such usage is harmless.
      
      eventually sbrk may be re-added if/when malloc is changed to avoid
      using the brk by using mmap for all allocations.
      7a995fe7