Compare commits

..

3 Commits
master ... f9

Author SHA1 Message Date
Fedora Release Engineering c0abfce6f8 dist-git conversion 2010-07-28 17:42:45 +00:00
Bill Nottingham 2292fb34bf Fix typo that causes a failure to update the common directory. (releng
#2781)
2009-11-26 01:17:46 +00:00
Jesse Keating 6e5f47a585 Initialize branch F-9 for hesiod 2008-04-20 21:50:31 +00:00
9 changed files with 362 additions and 130 deletions

1
.gitignore vendored
View File

@ -1,3 +1,2 @@
hesiod-3.0.2.tar.gz
hesiod-3.1.0.tar.gz
/hesiod-3.2.1.tar.gz

29
hesiod-3.0.2-env.patch Normal file
View File

@ -0,0 +1,29 @@
Ignore environment variables in setuid or setgid programs. The glibc-internal
copy of the library already implements a similar check.
--- hesiod-3.0.2/hesiod.c Wed Oct 3 14:53:37 2001
+++ hesiod-3.0.2/hesiod.c Wed Oct 3 14:55:02 2001
@@ -52,6 +52,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <unistd.h>
#include <ctype.h>
#include "hesiod.h"
#include "hesiod_p.h"
@@ -79,13 +80,13 @@
if (ctx)
{
*context = ctx;
- configname = getenv("HESIOD_CONFIG");
+ configname = ((getuid() == geteuid()) && (getgid() == getegid())) ? getenv("HESIOD_CONFIG") : NULL;
if (!configname)
configname = SYSCONFDIR "/hesiod.conf";
if (read_config_file(ctx, configname) >= 0)
{
/* The default rhs can be overridden by an environment variable. */
- p = getenv("HES_DOMAIN");
+ p = ((getuid() == geteuid()) && (getgid() == getegid())) ? getenv("HES_DOMAIN") : NULL;
if (p)
{
if (ctx->rhs)

161
hesiod-3.1.0-classes.patch Normal file
View File

@ -0,0 +1,161 @@
Add support for the "classes" configuration file directive back in.
--- hesiod-3.1.0/hesiod.conf.5 2006-03-30 11:22:11.000000000 -0500
+++ hesiod-3.1.0/hesiod.conf.5 2006-03-30 16:04:11.000000000 -0500
@@ -43,7 +43,7 @@
still used by some sites). You may specify both classes separated by
a comma to try one class first and then the other if no entry is
available in the first class. The default value of the classes
-variable is ``IN,HS''.
+variable is ``IN''.
.SH SEE ALSO
hesiod(3)
.SH BUGS
--- hesiod-3.1.0/hesiod.c 2006-03-30 11:22:11.000000000 -0500
+++ hesiod-3.1.0/hesiod.c 2006-03-30 16:13:54.000000000 -0500
@@ -71,12 +71,16 @@
struct hesiod_p {
char *lhs; /* normally ".ns" */
char *rhs; /* AKA the default hesiod domain */
+ int n_classes, *classes; /* query classes */
};
char **hesiod__uidresolve(void *context, const char *uidstr);
static int read_config_file(struct hesiod_p *ctx, const char *filename);
static char **get_txt_records(struct hesiod_p *ctx, const char *name);
+static char **get_txt_records_for_class(struct hesiod_p *ctx, const char *name,
+ int class);
static int cistrcmp(const char *s1, const char *s2);
+static int cistrncmp(const char *s1, const char *s2, size_t n);
/* This function is called to initialize a hesiod_p. */
int hesiod_init(void **context)
@@ -133,6 +137,7 @@
free(ctx->rhs);
if (ctx->lhs)
free(ctx->lhs);
+ free(ctx->classes);
free(ctx);
}
@@ -252,8 +257,18 @@
* ctx->rhs which need to be freed by the caller. */
static int read_config_file(struct hesiod_p *ctx, const char *filename)
{
- char *key, *data, *p, **which;
+ char *key, *data, *p, *q, **which;
char buf[MAXDNAME + 7];
+ unsigned int i;
+ int *tmpclass;
+ struct {
+ char name[3];
+ int class;
+ } class_names[] = {
+ {"in", C_IN},
+ {"hs", C_HS},
+ {"any", C_ANY},
+ };
FILE *fp;
/* Try to open the configuration file. */
@@ -263,6 +278,8 @@
/* Use compiled in default domain names. */
ctx->lhs = malloc(strlen(DEF_LHS) + 1);
ctx->rhs = malloc(strlen(DEF_RHS) + 1);
+ ctx->n_classes = 0;
+ ctx->classes = NULL;
if (ctx->lhs && ctx->rhs)
{
strcpy(ctx->lhs, DEF_LHS);
@@ -278,6 +295,8 @@
ctx->lhs = NULL;
ctx->rhs = NULL;
+ ctx->n_classes = 0;
+ ctx->classes = NULL;
while (fgets(buf, sizeof(buf), fp) != NULL)
{
p = buf;
@@ -308,6 +327,32 @@
}
strcpy(*which, data);
}
+ if (cistrcmp(key, "classes") == 0)
+ {
+ p = data;
+ while ((p != NULL) && (*p != '\0') && (*p != '#') &&
+ (*p != '\r') && (*p != '\n'))
+ {
+ q = p + strcspn(p, ",# \t\r\n");
+ for (i = 0; i < sizeof(class_names) / sizeof(class_names[0]); i++)
+ {
+ if ((strlen(class_names[i].name) == (q - p)) &&
+ (cistrncmp(p, class_names[i].name, q - p) == 0))
+ {
+ tmpclass = realloc(ctx->classes,
+ (sizeof(int) * ctx->n_classes + 1));
+ if (tmpclass != NULL)
+ {
+ ctx->classes = tmpclass;
+ ctx->classes[ctx->n_classes] = class_names[i].class;
+ ctx->n_classes++;
+ }
+ break;
+ }
+ }
+ p = q + strspn(q, ", \t\r\n");
+ }
+ }
}
fclose(fp);
@@ -326,6 +371,25 @@
*/
static char **get_txt_records(struct hesiod_p *ctx, const char *name)
{
+ char **tmp;
+ int i;
+ if (ctx->n_classes > 0)
+ {
+ for (i = 0; i < ctx->n_classes; i++)
+ {
+ tmp = get_txt_records_for_class(ctx, name, ctx->classes[i]);
+ if (tmp != NULL)
+ return tmp;
+ }
+ return NULL;
+ }
+ else
+ return get_txt_records_for_class(ctx, name, C_IN);
+}
+
+static char **get_txt_records_for_class(struct hesiod_p *ctx, const char *name,
+ int class)
+{
unsigned char qbuf[PACKETSZ], abuf[MAX_HESRESP];
int n;
@@ -334,7 +398,7 @@
return NULL;
/* Construct the query. */
- n = res_mkquery(QUERY, name, C_IN, T_TXT, NULL, 0, NULL, qbuf, PACKETSZ);
+ n = res_mkquery(QUERY, name, class, T_TXT, NULL, 0, NULL, qbuf, PACKETSZ);
if (n < 0)
{
errno = EMSGSIZE;
@@ -471,3 +534,14 @@
}
return tolower(*s1) - tolower(*s2);
}
+
+static int cistrncmp(const char *s1, const char *s2, size_t n)
+{
+ while (*s1 && *s2 && (tolower(*s1) == tolower(*s2)) && (n > 0))
+ {
+ s1++;
+ s2++;
+ n--;
+ }
+ return n ? (tolower(*s1) - tolower(*s2)) : 0;
+}

View File

@ -0,0 +1,55 @@
If the response is larger than 1024 bytes, go ahead and retry.
--- hesiod-3.1.0/hesiod.c 2006-03-30 13:22:57.000000000 -0500
+++ hesiod-3.1.0/hesiod.c 2006-03-30 13:28:16.000000000 -0500
@@ -327,7 +327,8 @@
*/
static char **get_txt_records(struct hesiod_p *ctx, const char *name)
{
- unsigned char qbuf[PACKETSZ], abuf[MAX_HESRESP];
+ unsigned char qbuf[PACKETSZ], *abuf;
+ char **tmp;
- int n;
+ int n, i, len;
/* Make sure the resolver is initialized. */
@@ -343,14 +344,36 @@
}
/* Send the query. */
- n = res_send(qbuf, n, abuf, MAX_HESRESP);
- if (n < 0)
+ abuf = NULL;
+ len = 1024;
+ i = n;
+ do
+ {
+ abuf = realloc(abuf, len);
+ if (abuf == NULL)
+ {
+ n = -1;
+ break;
+ }
+ n = res_send(qbuf, i, abuf, len);
+ if (n < len)
+ {
+ break;
+ }
+ len = n + 1024;
+ } while(1);
+ if (n < (ssize_t) sizeof(HEADER))
{
errno = ECONNREFUSED;
+ free(abuf);
return NULL;
}
- return hesiod_parse_result(ctx, abuf, n);
+ tmp = hesiod_parse_result(ctx, abuf, n);
+
+ free(abuf);
+
+ return tmp;
}
char **hesiod_parse_result(void *ctx, const unsigned char *abuf, int alen)

View File

@ -0,0 +1,20 @@
Try to correctly find res_mkquery in libresolv, even in cases where a
preprocessor-based rename in <resolv.h> may screw us up.
--- hesiod-3.1.0/configure.in 2006-03-30 11:22:11.000000000 -0500
+++ hesiod-3.1.0/configure.in 2006-03-30 13:31:02.000000000 -0500
@@ -12,7 +12,14 @@
AC_EGREP_HEADER(pw_change, pwd.h, AC_DEFINE(HAVE_PW_CHANGE))
AC_EGREP_HEADER(pw_expire, pwd.h, AC_DEFINE(HAVE_PW_EXPIRE))
-AC_CHECK_FUNC(res_mkquery, :, [AC_CHECK_LIB(resolv, res_mkquery)])
+AC_CHECK_FUNC(res_mkquery, :, [AC_CHECK_LIB(resolv, res_mkquery,,[
+saveLIBS="$LIBS"
+LIBS="-lresolv $LIBS"
+AC_MSG_CHECKING([if res_mkquery is provided by libresolv])
+AC_TRY_LINK([#include <resolv.h>],[res_mkquery(0,NULL,0,0,NULL,0,NULL,NULL,0);],[AC_DEFINE(HAVE_RES_MKQUERY,1,[Define if your libresolv provides res_mkquery.])
+AC_MSG_RESULT(yes)],[LIBS="$saveLIBS"
+AC_MSG_RESULT(no)])
+])])
AC_CONFIG_HEADER(config.h)
AC_OUTPUT(Makefile)

14
hesiod-3.1.0-perms.patch Normal file
View File

@ -0,0 +1,14 @@
Let libtool decide the install mode for the libtool archive and the real files
which it tracks.
--- hesiod-3.1.0/Makefile.in 2006-06-20 14:24:10.000000000 -0400
+++ hesiod-3.1.0/Makefile.in 2006-06-20 14:24:05.000000000 -0400
@@ -48,7 +48,7 @@
${top_srcdir}/mkinstalldirs ${DESTDIR}${includedir}
${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man3
${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man5
- ${LIBTOOL} --mode=install ${INSTALL} -m 644 libhesiod.la \
+ ${LIBTOOL} --mode=install ${INSTALL} libhesiod.la \
${DESTDIR}${libdir}
${INSTALL} -m 444 ${srcdir}/hesiod.h ${DESTDIR}${includedir}
${INSTALL} -m 444 ${srcdir}/hesiod.3 ${DESTDIR}${mandir}/man3

25
hesiod-3.1.0-str.patch Normal file
View File

@ -0,0 +1,25 @@
One or both strings is supplied through a configuration file, so we have no
guarantees about its length.
--- hesiod-3.1.0/hesservbyname.c 2006-03-30 11:22:11.000000000 -0500
+++ hesiod-3.1.0/hesservbyname.c 2006-03-30 13:13:50.000000000 -0500
@@ -187,7 +187,7 @@
static int cistrcmp(const char *s1, const char *s2)
{
- while (*s1 && tolower(*s1) == tolower(*s2))
+ while (*s1 && *s2 && tolower(*s1) == tolower(*s2))
{
s1++;
s2++;
--- hesiod-3.1.0/hesiod.c 2006-03-30 13:13:50.000000000 -0500
+++ hesiod-3.1.0/hesiod.c 2006-03-30 13:19:03.000000000 -0500
@@ -465,7 +465,7 @@
static int cistrcmp(const char *s1, const char *s2)
{
- while (*s1 && tolower(*s1) == tolower(*s2))
+ while (*s1 && *s2 && tolower(*s1) == tolower(*s2))
{
s1++;
s2++;

View File

@ -1,12 +1,18 @@
Name: hesiod
Version: 3.2.1
Release: 12%{?dist}
License: MIT
Summary: Shared libraries for querying the Hesiod naming service
Version: 3.1.0
Release: 10
Source: ftp://athena-dist.mit.edu/pub/ATHENA/hesiod/hesiod-%{version}.tar.gz
BuildRequires: autoconf, automake, libtool, libidn-devel
Obsoletes: hesinfo < 3.2
Patch0: hesiod-3.1.0-classes.patch
Patch1: hesiod-3.0.2-env.patch
Patch2: hesiod-3.1.0-str.patch
Patch3: hesiod-3.1.0-dnsparse.patch
Patch4: hesiod-3.1.0-libresolv.patch
Patch5: hesiod-3.1.0-perms.patch
Summary: Hesiod libraries.
Group: System Environment/Libraries
License: MIT
Buildroot: %{_tmppath}/hesiod-root
BuildRequires: autoconf, automake, libtool
%description
Hesiod is a system which uses existing DNS functionality to provide access
@ -16,6 +22,7 @@ files, among others.
%package devel
Summary: Development libraries and headers for Hesiod
Group: Development/Libraries
Requires: hesiod = %{version}-%{release}
%description devel
@ -23,131 +30,14 @@ Hesiod is a system which uses existing DNS functionality to provide access
to databases of information that changes infrequently. It is often used to
distribute information which might otherwise kept in the /etc/passwd,
/etc/group, and /etc/printcap files over a network, eliminating the need to
ensure the files are synchronized among multiple hosts. This package contains
ensure synchronize the files among multiple hosts. This package contains
the header files and libraries required for building programs which use Hesiod.
%prep
%setup -q
autoreconf -vif
%build
%configure --disable-static
make
%install
make install DESTDIR=$RPM_BUILD_ROOT
# Remove libtool archives and static libs
find %{buildroot} -type f -name "*.la" -delete
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%license COPYING
%doc README NEWS
%{_bindir}/*
%{_libdir}/libhesiod.so.*
%{_mandir}/man1/*
%{_mandir}/man5/*
%files devel
%{_libdir}/libhesiod.so
%{_libdir}/pkgconfig/*
%{_includedir}/hesiod.h
%{_mandir}/man3/*
%changelog
* Fri May 18 2018 Adam Williamson <awilliam@redhat.com> - 3.2.1-12
- Rebuild for new libidn
* Mon Apr 2 2018 Peter Robinson <pbrobinson@fedoraproject.org> 3.2.1-11
- Cleanup and modernise spec
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.2.1-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.2.1-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.2.1-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.2.1-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.2.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.2.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.2.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.2.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.2.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Wed Apr 3 2013 Nalin Dahyabhai <nalin@fedoraproject.org> - 3.2.1-1
- update to 3.2.1
- merged all patches or equivalents
- re-merged hesinfo, so we obsolete it now
- adds a pkgconfig configuration file for libhesiod
- correct inconsistent changelog dates, assuming day-of-week is correct
- add build requirement on libidn-devel
- package the license
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.0-23
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.0-22
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.0-21
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.0-20
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Fri Feb 19 2010 Nalin Dahyabhai <nalin@fedoraproject.org> - 3.1.0-19
- fix the release number noted for the previous changelog entry (#225884)
- remove unapplied "classes" patch (#225884)
* Wed Jan 13 2010 Nalin Dahyabhai <nalin@fedoraproject.org> - 3.1.0-18
- adjust buildroot location (guidelines)
- disable static libraries (guidelines)
- tweak default payload attributes (guidelines)
* Tue Oct 13 2009 Nalin Dahyabhai <nalin@redhat.com> - 3.1.0-17
- add a disttag
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.0-16
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.0-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Tue Dec 2 2008 Nalin Dahyabhai <nalin@fedoraproject.org> - 3.1.0-14
- adjust the package summary
* Tue Jul 22 2008 Nalin Dahyabhai <nalin@fedoraproject.org> - 3.1.0-13
- rebuild
* Thu Jun 12 2008 Nalin Dahyabhai <nalin@fedoraproject.org> - 3.1.0-12
- call aclocal directly, because autoreconf didn't see the magic comment in
the distributed version of aclocal.m4 which made it look like it was safe
to generate a new one (#449550)
* Mon Jun 2 2008 Nalin Dahyabhai <nalin@fedoraproject.org> - 3.1.0-11
- force autoreconf to overwrite files (should fix #449550)
* Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 3.1.0-10
- Autorebuild for GCC 4.3
* Wed Aug 23 2006 Nalin Dahyabhai <nalin@redhat.com> - 3.1.0-9
* Wed Aug 22 2006 Nalin Dahyabhai <nalin@redhat.com> - 3.1.0-9
- rebuild
* Mon Jul 17 2006 Nalin Dahyabhai <nalin@redhat.com> - 3.1.0-8
@ -218,7 +108,7 @@ find %{buildroot} -type f -name "*.la" -delete
* Fri Jan 10 2003 Phil Knirsch <pknirsch@redhat.com> 3.0.2-23
- Build shared lib correctly on s390 and s390x (with gcc -shared -fPIC).
* Wed Sep 25 2002 Nalin Dahyabhai <nalin@redhat.com> 3.0.2-22
* Wed Sep 24 2002 Nalin Dahyabhai <nalin@redhat.com> 3.0.2-22
- look harder for res_mkquery() in libresolv
* Wed Aug 21 2002 Nalin Dahyabhai <nalin@redhat.com>
@ -256,7 +146,7 @@ find %{buildroot} -type f -name "*.la" -delete
- remove the shared library patch -- different packages with shared libraries
tend to use different sonames, so we'd run inevitably run into problems
* Thu Aug 23 2001 Nalin Dahyabhai <nalin@redhat.com>
* Thu Aug 21 2001 Nalin Dahyabhai <nalin@redhat.com>
- remove pre and post scripts -- authconfig handles that stuff now
- add the hesiod man page back in, as bind-devel doesn't provide it any more
@ -288,3 +178,42 @@ find %{buildroot} -type f -name "*.la" -delete
no longer use a separate libnss_hesiod.so
- changed requires: caching-nameserver to nscd
- added post-install script snippet to activate nscd on install
%prep
%setup -q
#%patch0 -p1 -b .classes
%patch1 -p1 -b .env
%patch2 -p1 -b .str
%patch3 -p1 -b .dnsparse
%patch4 -p1 -b .libresolv
%patch5 -p1 -b .perms
autoreconf
%build
%configure
make LIBTOOL=libtool
%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
rm -f $RPM_BUILD_ROOT/%{_libdir}/*.la
%clean
rm -rf $RPM_BUILD_ROOT
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%defattr(-,root,root)
%doc README NEWS
%{_libdir}/libhesiod.so.*
%{_mandir}/man5/*
%files devel
%defattr(-,root,root)
%{_libdir}/libhesiod.a
%{_libdir}/libhesiod.so
%{_includedir}/hesiod.h
%{_mandir}/man3/*

View File

@ -1 +1 @@
d8fe6d7d081c9c14d5d3d8a466998eeb hesiod-3.2.1.tar.gz
89c785d350e75d6628754659ee4583e8 hesiod-3.1.0.tar.gz