1. 02 6月, 2014 1 次提交
    • R
      fix off-by-one in checking hostname length in new resolver backend · bb9af59b
      Rich Felker 提交于
      this bug was introduced in the recent resolver overhaul commits. it
      likely had visible symptoms. these were probably limited to wrongly
      accepting truncated versions of over-long names (vs rejecting them),
      as opposed to stack-based overflows or anything more severe, but no
      extensive checks were made. there have been no releases where this bug
      was present.
      bb9af59b
  2. 01 6月, 2014 1 次提交
    • R
      refactor getaddrinfo and add support for most remaining features · 6f409bff
      Rich Felker 提交于
      this is the first phase of the "resolver overhaul" project.
      
      conceptually, the results of getaddrinfo are a direct product of a
      list of address results and a list of service results. the new code
      makes this explicit by computing these lists separately and combining
      the results. this adds support for services that have both tcp and udp
      versions, where the caller has not specified which it wants, and
      eliminates a number of duplicate code paths which were all producing
      the final output addrinfo structures, but in subtly different ways,
      making it difficult to implement any of the features which were
      missing.
      
      in addition to the above benefits, the refactoring allows for legacy
      functions like gethostbyname to be implemented without using the
      getaddrinfo function itself. such changes to the legacy functions have
      not yet been made, however.
      
      further improvements include matching of service alias names from
      /etc/services (previously only the primary name was supported),
      returning multiple results from /etc/hosts (previously only the first
      matching line was honored), and support for the AI_V4MAPPED and AI_ALL
      flags.
      
      features which remain unimplemented are IDN translations (encoding
      non-ASCII hostnames for DNS lookup) and the AI_ADDRCONFIG flag.
      
      at this point, the DNS-based name resolving code is still based on the
      old interfaces in __dns.c, albeit somewhat simpler in its use of them.
      there may be some dead code which could already be removed, but
      changes to this layer will be a later phase of the resolver overhaul.
      6f409bff