[SSSD] [PATCH] RESOLV: Remove obsolete in-tree implementation of SRV and TXT

Jakub Hrozek jhrozek at redhat.com
Mon Dec 15 02:10:11 UTC 2014


Hi,

kindly see the attached patch and the commit message. I'm fine with
merging the patch after we branch 1-12 and master but I didn't want to
forget to remove this obsolete code while I'm looking at the resolver
subtree.
-------------- next part --------------
>From a860d00fa6ca5e381e0bc0adfd5f632cab360410 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Mon, 15 Dec 2014 01:39:42 +0100
Subject: [PATCH] RESOLV: Remove obsolete in-tree implementation of SRV and TXT
 parsing

SSSD contained several backwards-compatible definitions of SRV and TXT
APIs as well as structures that carry TTL data. These were intended for
RHEL-5 and older releases. Since we don't support those upstream, it's
better to remove the code -- it has drifted apart from upstream anyway.
---
 Makefile.am                            |  12 --
 src/external/libcares.m4               |  14 ---
 src/resolv/ares/ares_data.c            | 140 ----------------------
 src/resolv/ares/ares_data.h            |  68 -----------
 src/resolv/ares/ares_dns.h             |  91 ---------------
 src/resolv/ares/ares_parse_srv_reply.c | 183 -----------------------------
 src/resolv/ares/ares_parse_srv_reply.h |  35 ------
 src/resolv/ares/ares_parse_txt_reply.c | 204 ---------------------------------
 src/resolv/ares/ares_parse_txt_reply.h |  33 ------
 src/resolv/async_resolv.c              |  19 ---
 src/resolv/async_resolv.h              |   6 -
 11 files changed, 805 deletions(-)
 delete mode 100644 src/resolv/ares/ares_data.c
 delete mode 100644 src/resolv/ares/ares_data.h
 delete mode 100644 src/resolv/ares/ares_dns.h
 delete mode 100644 src/resolv/ares/ares_parse_srv_reply.c
 delete mode 100644 src/resolv/ares/ares_parse_srv_reply.h
 delete mode 100644 src/resolv/ares/ares_parse_txt_reply.c
 delete mode 100644 src/resolv/ares/ares_parse_txt_reply.h

diff --git a/Makefile.am b/Makefile.am
index 208e64d4ddc1130a57cfd1a7b7edfc3094e6f89a..f3ad71bc40728185a307dfaaea448a1373393c55 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -415,11 +415,6 @@ SSSD_LCL_TOOLS_OBJ = \
 SSSD_RESOLV_OBJ = \
     src/resolv/async_resolv.c \
     src/resolv/async_resolv_utils.c
-if BUILD_ARES_DATA
-    SSSD_RESOLV_OBJ += \
-    src/resolv/ares/ares_parse_srv_reply.c \
-    src/resolv/ares/ares_data.c
-endif
 
 SSSD_FAILOVER_OBJ = \
     src/providers/fail_over.c \
@@ -583,9 +578,6 @@ dist_noinst_HEADERS = \
     src/tools/tools_util.h \
     src/tools/sss_sync_ops.h \
     src/resolv/async_resolv.h \
-    src/resolv/ares/ares_parse_srv_reply.h \
-    src/resolv/ares/ares_parse_txt_reply.h \
-    src/resolv/ares/ares_data.h \
     src/tests/common.h \
     src/tests/common_check.h \
     src/tests/cmocka/common_mock.h \
@@ -1408,10 +1400,6 @@ files_tests_LDADD = \
 
 SSSD_RESOLV_TESTS_OBJ = \
     $(SSSD_RESOLV_OBJ)
-if BUILD_ARES_DATA
-    SSSD_RESOLV_TESTS_OBJ += \
-    src/resolv/ares/ares_parse_txt_reply.c
-endif
 
 resolv_tests_SOURCES = \
     src/tests/resolv-tests.c \
diff --git a/src/external/libcares.m4 b/src/external/libcares.m4
index b235ee215808e1966db80cbf50ec6b5fd573db48..0a764d34cde43831439ae3cf7eae9c52de774e59 100644
--- a/src/external/libcares.m4
+++ b/src/external/libcares.m4
@@ -13,17 +13,3 @@ AS_IF([test x"$found_libcares" != xyes],
                       [-L$sss_extra_libdir])],
         [AC_MSG_ERROR([c-ares header files are not installed])])]
 )
-
-dnl Check if this particular version of c-ares supports the generic ares_free_data function
-AC_CHECK_LIB([cares],
-             [ares_free_data],
-             [AC_DEFINE([HAVE_ARES_DATA], 1, [Does c-ares have ares_free_data()?])
-             ],
-             [ares_data=1],
-             [$CARES_LIBS]
-)
-
-AM_CONDITIONAL(BUILD_ARES_DATA, test x$ares_data = x1)
-
-dnl Check if this particular version of c-ares support the new TTL structures
-AC_CHECK_TYPES([struct ares_addrttl, struct ares_addr6ttl], [], [], [#include <ares.h>])
diff --git a/src/resolv/ares/ares_data.c b/src/resolv/ares/ares_data.c
deleted file mode 100644
index 1cccaa55cea94d49c07436c343556a412842ac05..0000000000000000000000000000000000000000
--- a/src/resolv/ares/ares_data.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/* $Id: ares_data.c,v 1.2 2009-11-20 09:06:33 yangtse Exp $ */
-
-/* Copyright (C) 2009 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- */
-
-
-#include <stddef.h>
-#include <stdlib.h>
-
-#include "ares.h"
-#include "ares_data.h"
-
-/*
-** ares_free_data() - c-ares external API function.
-**
-** This function must be used by the application to free data memory that
-** has been internally allocated by some c-ares function and for which a
-** pointer has already been returned to the calling application. The list
-** of c-ares functions returning pointers that must be free'ed using this
-** function is:
-**
-**   ares_parse_srv_reply()
-**   ares_parse_txt_reply()
-*/
-
-void _ares_free_data(void *dataptr)
-{
-  struct ares_data *ptr;
-
-  if (!dataptr)
-    return;
-
-  ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data));
-
-  if (ptr->mark != ARES_DATATYPE_MARK)
-    return;
-
-  switch (ptr->type)
-    {
-      case ARES_DATATYPE_SRV_REPLY:
-
-        if (ptr->data.srv_reply.next)
-          _ares_free_data(ptr->data.srv_reply.next);
-        if (ptr->data.srv_reply.host)
-          free(ptr->data.srv_reply.host);
-        break;
-
-      case ARES_DATATYPE_TXT_REPLY:
-
-        if (ptr->data.txt_reply.next)
-          _ares_free_data(ptr->data.txt_reply.next);
-        if (ptr->data.txt_reply.txt)
-          free(ptr->data.txt_reply.txt);
-        break;
-
-      default:
-        return;
-    }
-
-  free(ptr);
-}
-
-
-/*
-** ares_malloc_data() - c-ares internal helper function.
-**
-** This function allocates memory for a c-ares private ares_data struct
-** for the specified ares_datatype, initializes c-ares private fields
-** and zero initializes those which later might be used from the public
-** API. It returns an interior pointer which can be passed by c-ares
-** functions to the calling application, and that must be free'ed using
-** c-ares external API function ares_free_data().
-*/
-
-void *_ares_malloc_data(ares_datatype type)
-{
-  struct ares_data *ptr;
-
-  ptr = malloc(sizeof(struct ares_data));
-  if (!ptr)
-    return NULL;
-
-  switch (type)
-    {
-      case ARES_DATATYPE_SRV_REPLY:
-        ptr->data.srv_reply.next = NULL;
-        ptr->data.srv_reply.host = NULL;
-        ptr->data.srv_reply.priority = 0;
-        ptr->data.srv_reply.weight = 0;
-        ptr->data.srv_reply.port = 0;
-        break;
-
-      case ARES_DATATYPE_TXT_REPLY:
-        ptr->data.txt_reply.next = NULL;
-        ptr->data.txt_reply.txt = NULL;
-        ptr->data.txt_reply.length  = 0;
-        break;
-
-      default:
-        free(ptr);
-        return NULL;
-    }
-
-  ptr->mark = ARES_DATATYPE_MARK;
-  ptr->type = type;
-
-  return &ptr->data;
-}
-
-
-/*
-** ares_get_datatype() - c-ares internal helper function.
-**
-** This function returns the ares_datatype of the data stored in a
-** private ares_data struct when given the public API pointer.
-*/
-
-ares_datatype ares_get_datatype(void * dataptr)
-{
-  struct ares_data *ptr;
-
-  ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data));
-
-  if (ptr->mark == ARES_DATATYPE_MARK)
-    return ptr->type;
-
-  return ARES_DATATYPE_UNKNOWN;
-}
diff --git a/src/resolv/ares/ares_data.h b/src/resolv/ares/ares_data.h
deleted file mode 100644
index d3606314e0ec7bb90d361e7f0f5760d9c72b9cf4..0000000000000000000000000000000000000000
--- a/src/resolv/ares/ares_data.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* $Id: ares_data.h,v 1.2 2009-11-23 12:03:33 yangtse Exp $ */
-
-/* Copyright (C) 2009 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- */
-
-#ifndef HAVE_ARES_DATA
-#include "resolv/ares/ares_parse_txt_reply.h"
-#include "resolv/ares/ares_parse_srv_reply.h"
-#endif /* HAVE_ARES_DATA */
-
-typedef enum {
-  ARES_DATATYPE_UNKNOWN = 1,  /* unknown data type     - introduced in 1.7.0 */
-  ARES_DATATYPE_SRV_REPLY,    /* struct ares_srv_reply - introduced in 1.7.0 */
-  ARES_DATATYPE_TXT_REPLY,    /* struct ares_txt_reply - introduced in 1.7.0 */
-#if 0
-  ARES_DATATYPE_ADDR6TTL,     /* struct ares_addrttl   */
-  ARES_DATATYPE_ADDRTTL,      /* struct ares_addr6ttl  */
-  ARES_DATATYPE_HOSTENT,      /* struct hostent        */
-  ARES_DATATYPE_OPTIONS,      /* struct ares_options   */
-#endif
-  ARES_DATATYPE_LAST          /* not used              - introduced in 1.7.0 */
-} ares_datatype;
-
-#define ARES_DATATYPE_MARK 0xbead
-
-/*
- * ares_data struct definition is internal to c-ares and shall not
- * be exposed by the public API in order to allow future changes
- * and extensions to it without breaking ABI.  This will be used
- * internally by c-ares as the container of multiple types of data
- * dynamically allocated for which a reference will be returned
- * to the calling application.
- *
- * c-ares API functions returning a pointer to c-ares internally
- * allocated data will actually be returning an interior pointer
- * into this ares_data struct.
- *
- * All this is 'invisible' to the calling application, the only
- * requirement is that this kind of data must be free'ed by the
- * calling application using ares_free_data() with the pointer
- * it has received from a previous c-ares function call.
- */
-
-struct ares_data {
-  ares_datatype type;  /* Actual data type identifier. */
-  unsigned int  mark;  /* Private ares_data signature. */
-  union {
-    struct ares_txt_reply txt_reply;
-    struct ares_srv_reply srv_reply;
-  } data;
-};
-
-void *_ares_malloc_data(ares_datatype type);
-void _ares_free_data(void *dataptr);
-
-ares_datatype ares_get_datatype(void * dataptr);
diff --git a/src/resolv/ares/ares_dns.h b/src/resolv/ares/ares_dns.h
deleted file mode 100644
index c0a9dda65beddd61f5ea5fba79b24d7d5b52044c..0000000000000000000000000000000000000000
--- a/src/resolv/ares/ares_dns.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* $Id: ares_dns.h,v 1.8 2007-02-16 14:22:08 yangtse Exp $ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- */
-
-#ifndef ARES__DNS_H
-#define ARES__DNS_H
-
-#define DNS__16BIT(p)                   (((p)[0] << 8) | (p)[1])
-#define DNS__32BIT(p)                   (((p)[0] << 24) | ((p)[1] << 16) | \
-                                         ((p)[2] << 8) | (p)[3])
-
-#define DNS__SET16BIT(p, v)  (((p)[0] = (unsigned char)(((v) >> 8) & 0xff)), \
-                              ((p)[1] = (unsigned char)((v) & 0xff)))
-#define DNS__SET32BIT(p, v)  (((p)[0] = (unsigned char)(((v) >> 24) & 0xff)), \
-                              ((p)[1] = (unsigned char)(((v) >> 16) & 0xff)), \
-                              ((p)[2] = (unsigned char)(((v) >> 8) & 0xff)), \
-                              ((p)[3] = (unsigned char)((v) & 0xff)))
-
-#if 0
-/* we cannot use this approach on systems where we can't access 16/32 bit
-   data on un-aligned addresses */
-#define DNS__16BIT(p)                   ntohs(*(unsigned short*)(p))
-#define DNS__32BIT(p)                   ntohl(*(unsigned long*)(p))
-#define DNS__SET16BIT(p, v)             *(unsigned short*)(p) = htons(v)
-#define DNS__SET32BIT(p, v)             *(unsigned long*)(p) = htonl(v)
-#endif
-
-/* Macros for parsing a DNS header */
-#define DNS_HEADER_QID(h)               DNS__16BIT(h)
-#define DNS_HEADER_QR(h)                (((h)[2] >> 7) & 0x1)
-#define DNS_HEADER_OPCODE(h)            (((h)[2] >> 3) & 0xf)
-#define DNS_HEADER_AA(h)                (((h)[2] >> 2) & 0x1)
-#define DNS_HEADER_TC(h)                (((h)[2] >> 1) & 0x1)
-#define DNS_HEADER_RD(h)                ((h)[2] & 0x1)
-#define DNS_HEADER_RA(h)                (((h)[3] >> 7) & 0x1)
-#define DNS_HEADER_Z(h)                 (((h)[3] >> 4) & 0x7)
-#define DNS_HEADER_RCODE(h)             ((h)[3] & 0xf)
-#define DNS_HEADER_QDCOUNT(h)           DNS__16BIT((h) + 4)
-#define DNS_HEADER_ANCOUNT(h)           DNS__16BIT((h) + 6)
-#define DNS_HEADER_NSCOUNT(h)           DNS__16BIT((h) + 8)
-#define DNS_HEADER_ARCOUNT(h)           DNS__16BIT((h) + 10)
-
-/* Macros for constructing a DNS header */
-#define DNS_HEADER_SET_QID(h, v)      DNS__SET16BIT(h, v)
-#define DNS_HEADER_SET_QR(h, v)       ((h)[2] |= (unsigned char)(((v) & 0x1) << 7))
-#define DNS_HEADER_SET_OPCODE(h, v)   ((h)[2] |= (unsigned char)(((v) & 0xf) << 3))
-#define DNS_HEADER_SET_AA(h, v)       ((h)[2] |= (unsigned char)(((v) & 0x1) << 2))
-#define DNS_HEADER_SET_TC(h, v)       ((h)[2] |= (unsigned char)(((v) & 0x1) << 1))
-#define DNS_HEADER_SET_RD(h, v)       ((h)[2] |= (unsigned char)((v) & 0x1))
-#define DNS_HEADER_SET_RA(h, v)       ((h)[3] |= (unsigned char)(((v) & 0x1) << 7))
-#define DNS_HEADER_SET_Z(h, v)        ((h)[3] |= (unsigned char)(((v) & 0x7) << 4))
-#define DNS_HEADER_SET_RCODE(h, v)    ((h)[3] |= (unsigned char)((v) & 0xf))
-#define DNS_HEADER_SET_QDCOUNT(h, v)  DNS__SET16BIT((h) + 4, v)
-#define DNS_HEADER_SET_ANCOUNT(h, v)  DNS__SET16BIT((h) + 6, v)
-#define DNS_HEADER_SET_NSCOUNT(h, v)  DNS__SET16BIT((h) + 8, v)
-#define DNS_HEADER_SET_ARCOUNT(h, v)  DNS__SET16BIT((h) + 10, v)
-
-/* Macros for parsing the fixed part of a DNS question */
-#define DNS_QUESTION_TYPE(q)            DNS__16BIT(q)
-#define DNS_QUESTION_CLASS(q)           DNS__16BIT((q) + 2)
-
-/* Macros for constructing the fixed part of a DNS question */
-#define DNS_QUESTION_SET_TYPE(q, v)     DNS__SET16BIT(q, v)
-#define DNS_QUESTION_SET_CLASS(q, v)    DNS__SET16BIT((q) + 2, v)
-
-/* Macros for parsing the fixed part of a DNS resource record */
-#define DNS_RR_TYPE(r)                  DNS__16BIT(r)
-#define DNS_RR_CLASS(r)                 DNS__16BIT((r) + 2)
-#define DNS_RR_TTL(r)                   DNS__32BIT((r) + 4)
-#define DNS_RR_LEN(r)                   DNS__16BIT((r) + 8)
-
-/* Macros for constructing the fixed part of a DNS resource record */
-#define DNS_RR_SET_TYPE(r)              DNS__SET16BIT(r, v)
-#define DNS_RR_SET_CLASS(r)             DNS__SET16BIT((r) + 2, v)
-#define DNS_RR_SET_TTL(r)               DNS__SET32BIT((r) + 4, v)
-#define DNS_RR_SET_LEN(r)               DNS__SET16BIT((r) + 8, v)
-
-#endif /* ARES__DNS_H */
diff --git a/src/resolv/ares/ares_parse_srv_reply.c b/src/resolv/ares/ares_parse_srv_reply.c
deleted file mode 100644
index 7e01e1a6d12d0d7b1525d375504d1c4ca5c7ab97..0000000000000000000000000000000000000000
--- a/src/resolv/ares/ares_parse_srv_reply.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
-   SSSD
-
-   Async resolver - SRV records parsing
-
-   Authors:
-        Jakub Hrozek <jhrozek at redhat.com>
-
-   Copyright (C) Red Hat, Inc 2009
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * This code is based on other c-ares parsing licensed as follows:
-
- * Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- */
-
-
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <arpa/nameser.h>
-#include <stdlib.h>
-#include <string.h>
-#include "ares.h"
-/* this drags in some private macros c-ares uses */
-#include "ares_dns.h"
-#include "ares_data.h"
-
-#include "ares_parse_srv_reply.h"
-
-int _ares_parse_srv_reply (const unsigned char *abuf, int alen,
-                           struct ares_srv_reply **srv_out)
-{
-  unsigned int qdcount, ancount, i;
-  const unsigned char *aptr, *vptr;
-  int status, rr_type, rr_class, rr_len;
-  long len;
-  char *hostname = NULL, *rr_name = NULL;
-  struct ares_srv_reply *srv_head = NULL;
-  struct ares_srv_reply *srv_last = NULL;
-  struct ares_srv_reply *srv_curr;
-
-  /* Set *srv_out to NULL for all failure cases. */
-  *srv_out = NULL;
-
-  /* Give up if abuf doesn't have room for a header. */
-  if (alen < HFIXEDSZ)
-    return ARES_EBADRESP;
-
-  /* Fetch the question and answer count from the header. */
-  qdcount = DNS_HEADER_QDCOUNT (abuf);
-  ancount = DNS_HEADER_ANCOUNT (abuf);
-  if (qdcount != 1)
-    return ARES_EBADRESP;
-  if (ancount == 0)
-    return ARES_ENODATA;
-
-  /* Expand the name from the question, and skip past the question. */
-  aptr = abuf + HFIXEDSZ;
-  status = ares_expand_name (aptr, abuf, alen, &hostname, &len);
-  if (status != ARES_SUCCESS)
-    return status;
-
-  if (aptr + len + QFIXEDSZ > abuf + alen)
-    {
-      free (hostname);
-      return ARES_EBADRESP;
-    }
-  aptr += len + QFIXEDSZ;
-
-  /* Examine each answer resource record (RR) in turn. */
-  for (i = 0; i < (int) ancount; i++)
-    {
-      /* Decode the RR up to the data field. */
-      status = ares_expand_name (aptr, abuf, alen, &rr_name, &len);
-      if (status != ARES_SUCCESS)
-        {
-          break;
-        }
-      aptr += len;
-      if (aptr + RRFIXEDSZ > abuf + alen)
-        {
-          status = ARES_EBADRESP;
-          break;
-        }
-      rr_type = DNS_RR_TYPE (aptr);
-      rr_class = DNS_RR_CLASS (aptr);
-      rr_len = DNS_RR_LEN (aptr);
-      aptr += RRFIXEDSZ;
-
-      /* Check if we are really looking at a SRV record */
-      if (rr_class == C_IN && rr_type == T_SRV)
-        {
-          /* parse the SRV record itself */
-          if (rr_len < 6)
-            {
-              status = ARES_EBADRESP;
-              break;
-            }
-
-          /* Allocate storage for this SRV answer appending it to the list */
-          srv_curr = _ares_malloc_data(ARES_DATATYPE_SRV_REPLY);
-          if (!srv_curr)
-            {
-              status = ARES_ENOMEM;
-              break;
-            }
-          if (srv_last)
-            {
-              srv_last->next = srv_curr;
-            }
-          else
-            {
-              srv_head = srv_curr;
-            }
-          srv_last = srv_curr;
-
-          vptr = aptr;
-          srv_curr->priority = DNS__16BIT(vptr);
-          vptr += sizeof(const unsigned short);
-          srv_curr->weight = DNS__16BIT(vptr);
-          vptr += sizeof(const unsigned short);
-          srv_curr->port = DNS__16BIT(vptr);
-          vptr += sizeof(const unsigned short);
-
-          status = ares_expand_name (vptr, abuf, alen, &srv_curr->host, &len);
-          if (status != ARES_SUCCESS)
-            break;
-        }
-
-      /* Don't lose memory in the next iteration */
-      free(rr_name);
-      rr_name = NULL;
-
-      /* Move on to the next record */
-      aptr += rr_len;
-    }
-
-  if (hostname)
-    free (hostname);
-  if (rr_name)
-    free (rr_name);
-
-  /* clean up on error */
-  if (status != ARES_SUCCESS)
-    {
-      if (srv_head)
-        _ares_free_data (srv_head);
-      return status;
-    }
-
-  /* everything looks fine, return the data */
-  *srv_out = srv_head;
-
-  return ARES_SUCCESS;
-}
diff --git a/src/resolv/ares/ares_parse_srv_reply.h b/src/resolv/ares/ares_parse_srv_reply.h
deleted file mode 100644
index 29c6e08d10d91a0806b8783acc6bc89bfae96b43..0000000000000000000000000000000000000000
--- a/src/resolv/ares/ares_parse_srv_reply.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-    Authors:
-        Jakub Hrozek <jhrozek at redhat.com>
-
-    Copyright (C) 2009 Red Hat
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ARES_PARSE_SRV_REPLY_H__
-#define __ARES_PARSE_SRV_REPLY_H__
-
-struct ares_srv_reply {
-    struct ares_srv_reply  *next;
-    char                   *host;
-    unsigned short          priority;
-    unsigned short          weight;
-    unsigned short          port;
-};
-
-int _ares_parse_srv_reply (const unsigned char *abuf, int alen,
-                           struct ares_srv_reply **srv_out);
-
-#endif /* __ARES_PARSE_SRV_REPLY_H__ */
diff --git a/src/resolv/ares/ares_parse_txt_reply.c b/src/resolv/ares/ares_parse_txt_reply.c
deleted file mode 100644
index d710e8f9816e5ee52d8fe33ae5c3e9b0f91d3be1..0000000000000000000000000000000000000000
--- a/src/resolv/ares/ares_parse_txt_reply.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-   SSSD
-
-   Async resolver - TXT records parsing
-
-   Authors:
-        Jakub Hrozek <jhrozek at redhat.com>
-
-   Copyright (C) Red Hat, Inc 2009
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * This code is based on other c-ares parsing licensed as follows:
-
- * Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- */
-
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <arpa/nameser.h>
-#include <stdlib.h>
-#include <string.h>
-#include "ares.h"
-/* this drags in some private macros c-ares uses */
-#include "ares_dns.h"
-#include "ares_data.h"
-
-#include "ares_parse_txt_reply.h"
-
-int _ares_parse_txt_reply (const unsigned char *abuf, int alen,
-                           struct ares_txt_reply **txt_out)
-{
-  size_t substr_len, str_len;
-  unsigned int qdcount, ancount, i;
-  const unsigned char *aptr;
-  const unsigned char *strptr;
-  int status, rr_type, rr_class, rr_len;
-  long len;
-  char *hostname = NULL, *rr_name = NULL;
-  struct ares_txt_reply *txt_head = NULL;
-  struct ares_txt_reply *txt_last = NULL;
-  struct ares_txt_reply *txt_curr;
-
-  /* Set *txt_out to NULL for all failure cases. */
-  *txt_out = NULL;
-
-  /* Give up if abuf doesn't have room for a header. */
-  if (alen < HFIXEDSZ)
-    return ARES_EBADRESP;
-
-  /* Fetch the question and answer count from the header. */
-  qdcount = DNS_HEADER_QDCOUNT(abuf);
-  ancount = DNS_HEADER_ANCOUNT(abuf);
-  if (qdcount != 1)
-    return ARES_EBADRESP;
-  if (ancount == 0)
-    return ARES_ENODATA;
-
-  /* Expand the name from the question, and skip past the question. */
-  aptr = abuf + HFIXEDSZ;
-  status = ares_expand_name(aptr, abuf, alen, &hostname, &len);
-  if (status != ARES_SUCCESS)
-    return status;
-
-  if (aptr + len + QFIXEDSZ > abuf + alen)
-    {
-      free (hostname);
-      return ARES_EBADRESP;
-    }
-  aptr += len + QFIXEDSZ;
-
-  /* Examine each answer resource record (RR) in turn. */
-  for (i = 0; i < (int) ancount; i++)
-    {
-      /* Decode the RR up to the data field. */
-      status = ares_expand_name(aptr, abuf, alen, &rr_name, &len);
-      if (status != ARES_SUCCESS)
-       {
-         break;
-       }
-      aptr += len;
-      if (aptr + RRFIXEDSZ > abuf + alen)
-       {
-         status = ARES_EBADRESP;
-         break;
-       }
-      rr_type = DNS_RR_TYPE(aptr);
-      rr_class = DNS_RR_CLASS(aptr);
-      rr_len = DNS_RR_LEN(aptr);
-      aptr += RRFIXEDSZ;
-
-      /* Check if we are really looking at a TXT record */
-      if (rr_class == C_IN && rr_type == T_TXT)
-        {
-          /* Allocate storage for this TXT answer appending it to the list */
-          txt_curr = _ares_malloc_data(ARES_DATATYPE_TXT_REPLY);
-          if (!txt_curr)
-            {
-                status = ARES_ENOMEM;
-                break;
-            }
-          if (txt_last)
-            {
-              txt_last->next = txt_curr;
-            }
-          else
-            {
-              txt_head = txt_curr;
-            }
-          txt_last = txt_curr;
-
-          /*
-           * There may be multiple substrings in a single TXT record. Each
-           * substring may be up to 255 characters in length, with a
-           * "length byte" indicating the size of the substring payload.
-           * RDATA contains both the length-bytes and payloads of all
-           * substrings contained therein.
-           */
-
-          /* Compute total length to allow a single memory allocation */
-          strptr = aptr;
-          while (strptr < (aptr + rr_len))
-            {
-              substr_len = (unsigned char)*strptr;
-              txt_curr->length += substr_len;
-              strptr += substr_len + 1;
-            }
-
-          /* Including null byte */
-          txt_curr->txt = malloc (txt_curr->length + 1);
-          if (txt_curr->txt == NULL)
-            {
-              status = ARES_ENOMEM;
-              break;
-            }
-
-          /* Step through the list of substrings, concatenating them */
-          str_len = 0;
-          strptr = aptr;
-          while (strptr < (aptr + rr_len))
-            {
-              substr_len = (unsigned char)*strptr;
-              strptr++;
-              memcpy ((char *) txt_curr->txt + str_len, strptr, substr_len);
-              str_len += substr_len;
-              strptr += substr_len;
-            }
-          /* Make sure we NULL-terminate */
-          *((char *) txt_curr->txt + txt_curr->length) = '\0';
-        }
-
-      /* Don't lose memory in the next iteration */
-      free(rr_name);
-      rr_name = NULL;
-
-      /* Move on to the next record */
-      aptr += rr_len;
-    }
-
-  if (hostname)
-    free (hostname);
-  if (rr_name)
-    free (rr_name);
-
-  /* clean up on error */
-  if (status != ARES_SUCCESS)
-    {
-      if (txt_head)
-        _ares_free_data (txt_head);
-      return status;
-    }
-
-  /* everything looks fine, return the data */
-  *txt_out = txt_head;
-
-  return ARES_SUCCESS;
-}
diff --git a/src/resolv/ares/ares_parse_txt_reply.h b/src/resolv/ares/ares_parse_txt_reply.h
deleted file mode 100644
index 216e2c0d1ef9f6734f2a06019684e10a5941b7af..0000000000000000000000000000000000000000
--- a/src/resolv/ares/ares_parse_txt_reply.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-    Authors:
-        Jakub Hrozek <jhrozek at redhat.com>
-
-    Copyright (C) 2009 Red Hat
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ARES_PARSE_TXT_REPLY_H__
-#define __ARES_PARSE_TXT_REPLY_H__
-
-struct ares_txt_reply {
-    struct ares_txt_reply  *next;
-    unsigned char          *txt;
-    size_t                  length;  /* length excludes null termination */
-};
-
-int _ares_parse_txt_reply(const unsigned char* abuf, int alen,
-                          struct ares_txt_reply **txt_out);
-
-#endif /* __ARES_PARSE_TXT_REPLY_H__ */
diff --git a/src/resolv/async_resolv.c b/src/resolv/async_resolv.c
index 1d0c3ee6049dfc0ba13a03892946123d9289b5e3..5c9a4345f9653da4ab839fd10be8ee613aa46961 100644
--- a/src/resolv/async_resolv.c
+++ b/src/resolv/async_resolv.c
@@ -42,25 +42,6 @@
 #include "util/dlinklist.h"
 #include "util/util.h"
 
-#ifndef HAVE_ARES_DATA
-#define ares_parse_srv_reply(abuf, alen, srv_out) \
-    _ares_parse_srv_reply(abuf, alen, srv_out)
-#define ares_parse_txt_reply(abuf, alen, txt_out) \
-    _ares_parse_txt_reply(abuf, alen, txt_out)
-#define ares_free_data(dataptr) \
-    _ares_free_data(dataptr)
-#define ares_malloc_data(data) \
-    _ares_malloc_data(data)
-#endif /* HAVE_ARES_DATA */
-
-#ifndef HAVE_STRUCT_ARES_ADDRTTL
-#define ares_addrttl addrttl
-#endif
-
-#ifndef HAVE_STRUCT_ARES_ADDR6TTL
-#define ares_addr6ttl addr6ttl
-#endif
-
 #define DNS__16BIT(p)                   (((p)[0] << 8) | (p)[1])
 
 /*
diff --git a/src/resolv/async_resolv.h b/src/resolv/async_resolv.h
index 9b08f12ae159d377b50b9ddfe9f71397a461635d..109779bb96b01ac03bb7d2293b8e43850b77ef46 100644
--- a/src/resolv/async_resolv.h
+++ b/src/resolv/async_resolv.h
@@ -32,12 +32,6 @@
 #include "config.h"
 #include "confdb/confdb.h"
 
-#ifndef HAVE_ARES_DATA
-#include "resolv/ares/ares_parse_srv_reply.h"
-#include "resolv/ares/ares_parse_txt_reply.h"
-#include "resolv/ares/ares_data.h"
-#endif /* HAVE_ARES_DATA */
-
 #ifndef RESOLV_DEFAULT_TTL
 #define RESOLV_DEFAULT_TTL 7200
 #endif  /* RESOLV_DEFAULT_TTL */
-- 
1.9.3



More information about the sssd-devel mailing list