All pastes #374407 Raw Edit

martin

public text v1 · immutable
#374407 ·published 2007-02-27 15:55 UTC
rendered paste body
diff -u nss-mdns-0.9/debian/NOTES.Debian nss-mdns-0.9/debian/NOTES.Debian--- nss-mdns-0.9/debian/NOTES.Debian+++ nss-mdns-0.9/debian/NOTES.Debian@@ -3,6 +3,9 @@  The first version in Debian was 0.3-2. +Postinst+========+ Starting with version 0.8-4.2 inclusive, the package started touching /etc/nsswitch.conf in debian/postinst. @@ -62,0 +66,28 @@+In version 0.8-6.1 and later, the postinst would:+- if upgrading from 0.8-6:+  - revert breakage introduced in 0.8-6+  - avoid doing anything if any of "mdns4_minimal", "mdns4", "mdns",+    "mdns_minimal", "mdns6", "mdns6_minimal" was found in the hosts line; that+    is, manually configured /etc/nsswitch.conf were kept intact+  - otherwise change the "dns" entry in /etc/hosts into:+    "mdns4_minimal [NOTFOUND=return] dns mdns4"+- for first installs and upgrades from versions lower than+  0.8-4.2, the postinst would:+  - avoid doing anything if any of "mdns4_minimal", "mdns4", "mdns",+    "mdns_minimal", "mdns6", "mdns6_minimal" was found in the hosts line; that+    is, manually configured /etc/nsswitch.conf were kept intact+  - otherwise change the "dns" entry in /etc/hosts into:+    "mdns4_minimal [NOTFOUND=return] dns mdns4"+++Postrm+======++Concerning postrm, one was introduced in version 0.8-4.2 to remove any+keyword from a set of mdns keywords from the "hosts:" line of nsswitch.conf+during purge.  This postinst snippet was dropped in 0.8-6.++In version 0.9-0.1, the same snippet was reintroduced, but is run on package+removal instead of purge to ensure perl is still present and to avoid DNS+issues in case of a removed package.+diff -u nss-mdns-0.9/debian/control nss-mdns-0.9/debian/control--- nss-mdns-0.9/debian/control+++ nss-mdns-0.9/debian/control@@ -1,16 +1,16 @@ Source: nss-mdns Section: admin Priority: optional-Maintainer: Anand Kumria <wildfire@progsoc.org>+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>+XSBC-Original-Maintainer: Anand Kumria <wildfire@progsoc.org> Build-Depends: debhelper (>> 4.0.0), lynx Standards-Version: 3.7.2  Package: libnss-mdns Section: admin-Depends: perl, avahi-daemon+Depends: ${shlibs:Depends}, base-files (>= 3.1.10), perl, avahi-daemon (>= 0.6.16-1) Suggests: avahi-autoipd | zeroconf Architecture: any-Depends: ${shlibs:Depends}, base-files (>= 3.1.10) Description: NSS module for Multicast DNS name resolution  nss-mdns is a plugin for the GNU Name Service Switch (NSS) functionality  of the GNU C Library (glibc) providing host name resolution via Multicastdiff -u nss-mdns-0.9/debian/rules nss-mdns-0.9/debian/rules--- nss-mdns-0.9/debian/rules+++ nss-mdns-0.9/debian/rules@@ -27,7 +27,7 @@ config.status: configure 	dh_testdir 	# Add here commands to configure the package.-	./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libexecdir=\${prefix}/lib/nss-mdns CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs" --disable-legacy+	./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/ --mandir=/usr/share/man --infodir=/usr/share/info --sysconfdir=/etc --localstatedir=/var --libexecdir=/lib/nss-mdns CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs" --disable-legacy   build: build-stampdiff -u nss-mdns-0.9/debian/changelog nss-mdns-0.9/debian/changelog--- nss-mdns-0.9/debian/changelog+++ nss-mdns-0.9/debian/changelog@@ -1,3 +1,49 @@+nss-mdns (0.9-0.2ubuntu1) feisty; urgency=low++  * Merge from debian unstable, remaining changes:+    - debian/postinst: Automatically transition the dapper default hosts: line+      'files dns mdns' to the recommended value, since dns before mdns is+      inefficient, a DNS server DoS, and an information leak.+  * Now ships libraries in /lib, not /usr/lib. (LP: #87207)+  * Reapply debian/patches/00_dns_unaligned_access.patch; debian/rules does+    not do this, and this got dropped in an earlier merge.+  * debian/control: Set Ubuntu maintainer.++ -- Martin Pitt <martin.pitt@ubuntu.com>  Tue, 27 Feb 2007 16:54:20 +0100++nss-mdns (0.9-0.2) unstable; urgency=high++  * Non-maintainer upload to fix a RC bug.+  * Configure with a prefix of / instead of /usr as libnss-mdns needs to be in+    /lib for the resolver to work correctly during boot; this is also needed+    for chrooted processes such as Postfix's smtpd which uses a copy of the+    NSS libs as well of the NSS configuration and fails when mdns is missing+    in the chroot but referenced in nsswitch.conf.  Update other configured+    dirs (mandir, infodir, sysconfdir) as well, but these are currently not+    used.++ -- Loic Minier <lool@dooz.org>  Thu, 22 Feb 2007 14:48:45 +0100++nss-mdns (0.9-0.1) unstable; urgency=high++  * Non-maintainer upload to fix broken dependencies in the 0.8-6.1 NMU.+  * Fix Depends on perl and avahi-daemon.+  * Bump up dependency on avahi-daemon to >= 0.6.16-1 for the auto-disabling+    functionality on sites with a .local SOA.+  * New upstream release.+    - Does not export unnecessary symbols and fixes segfault in nmbclient+      which had symbols with the same name; closes: #404266.+    - Does not use the "search" keyword of resolv.conf anymore;+      closes: #404534, #405327.+  * Re-add a postrm to cleanup the mdns_* entries from nsswitch.conf but act on+    package removal instead of purge to avoid breaking the DNS when the lib is+    removed and to ensure perl is still present; closes: #406198.+  * Document the changes made to postinst in NOTES.Debian and document the+    history of the postrm as well.+  * Updates to README.Debian; add upstream URL for troubleshooting.++ -- Loic Minier <lool@dooz.org>  Tue,  9 Jan 2007 18:45:27 +0100+ nss-mdns (0.9-0ubuntu1) feisty; urgency=low    * New upstream bugfix release:@@ -222,0 +269 @@+diff -u nss-mdns-0.9/debian/README.Debian nss-mdns-0.9/debian/README.Debian--- nss-mdns-0.9/debian/README.Debian+++ nss-mdns-0.9/debian/README.Debian@@ -1,5 +1,5 @@-MODIFYING /etc/nsswitch.conf-----------------------------+Packages automagically modifies /etc/nsswitch.conf+--------------------------------------------------  Previously the base-files package shipped /etc/nsswitch.conf and specified: @@ -14,11 +14,9 @@      hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 -This is currently not removed on removal or purge of nss-mdns.- -.local domains---------------+Sites with a .local DNS zone+----------------------------  Making nss-mdns authoritative for .local breaks resolution on networks where .local is a real domain name.  To workaround this, avahi-daemon@@ -29,0 +28,3 @@+See also this excellent summary on the upstream website:+    <http://avahi.org/wiki/AvahiAndUnicastDotLocal>+only in patch2:unchanged:--- nss-mdns-0.9.orig/src/dns.c+++ nss-mdns-0.9/src/dns.c@@ -32,6 +32,33 @@  #include "dns.h" +#define SET_16_P(data, value)                              \+  do {                                                     \+    uint16_t __value = value;                              \+    memcpy(data, &__value, sizeof(uint16_t));              \+  } while(0)++#define SET_16(data, idx, value)                         \+  SET_16_P(((uint8_t *)data) + idx * sizeof(uint16_t)/sizeof(uint8_t), value) ++#define GET_16_P(data, value)                   \+  do {                                          \+    uint8_t *__value = ((uint8_t *)&value);     \+    memcpy(__value, data, sizeof(uint16_t));    \+  } while(0)+    +#define GET_16(data, idx, value) \+  GET_16_P(((uint8_t *)data) + idx * sizeof(uint16_t)/sizeof(uint8_t), value) ++#define GET_32_P(data, value)                   \+  do {                                          \+    uint8_t *__value = ((uint8_t *)&value);     \+    memcpy(__value, data, sizeof(uint32_t));    \+  } while(0)+    +#define GET_32(data, idx, value) \+  GET_32_P(((uint8_t *)data) + idx * sizeof(uint32_t)/sizeof(uint8_t), value) + struct dns_packet* dns_packet_new(void) {     struct dns_packet *p; @@ -51,15 +78,19 @@ void dns_packet_set_field(struct dns_packet *p, unsigned idx, uint16_t v) {     assert(p);     assert(idx < 2*6);+     -    ((uint16_t*) p->data)[idx] = htons(v);+    SET_16(p->data, idx, htons(v)); }  uint16_t dns_packet_get_field(struct dns_packet *p, unsigned idx) {     assert(p);     assert(idx < 2*6);+    uint16_t r;++    GET_16(p->data, idx, r); -    return ntohs(((uint16_t*) p->data)[idx]);+    return ntohs(r); }  uint8_t* dns_packet_append_name(struct dns_packet *p, const char *name) {@@ -102,7 +133,7 @@     assert(p);          d = dns_packet_extend(p, sizeof(uint16_t));-    *((uint16_t*) d) = htons(v);+    SET_16_P(d, htons(v));          return d; }@@ -120,7 +151,7 @@ }  uint8_t *dns_packet_append_name_compressed(struct dns_packet *p, const char *name, uint8_t *prev) {-    int16_t *d;+    uint8_t *d;     signed long k;     assert(p); @@ -131,8 +162,8 @@     if (k < 0 || k >= 0x4000 || (size_t) k >= p->size)         return dns_packet_append_name(p, name); -    d = (int16_t*) dns_packet_extend(p, sizeof(uint16_t));-    *d = htons((0xC000 | k));+    d = dns_packet_extend(p, sizeof(uint16_t));+    SET_16_P(d, htons((0xC000 | k)));          return prev; }@@ -256,11 +287,13 @@  int dns_packet_consume_uint16(struct dns_packet *p, uint16_t *ret_v) {     assert(p && ret_v);+    uint16_t r;      if (p->rindex + sizeof(uint16_t) > p->size)         return -1;--    *ret_v = ntohs(*((uint16_t*) (p->data + p->rindex)));+    +    GET_16_P(p->data + p->rindex, r);+    *ret_v =  ntohs(r);     p->rindex += sizeof(uint16_t);      return 0;@@ -268,11 +301,13 @@  int dns_packet_consume_uint32(struct dns_packet *p, uint32_t *ret_v) {     assert(p && ret_v);+    uint32_t r;      if (p->rindex + sizeof(uint32_t) > p->size)         return -1; -    *ret_v = ntohl(*((uint32_t*) (p->data + p->rindex)));+    GET_32_P(p->data + p->rindex, r);+    *ret_v = ntohl(r);     p->rindex += sizeof(uint32_t);          return 0;only in patch2:unchanged:--- nss-mdns-0.9.orig/debian/postrm+++ nss-mdns-0.9/debian/postrm@@ -0,0 +1,43 @@+#!/bin/sh+set -e+#DEBHELPER#++log() {+    echo "$*"+}++remove_mdns() {+    log "Checking NSS setup..."+    # abort if /etc/nsswitch.conf does not exist+    if ! [ -e /etc/nsswitch.conf ]; then+        log "Could not find /etc/nsswitch.conf."+        return+    fi+    perl -i -pe '+        my @remove=(+            "mdns4_minimal [NOTFOUND=return]",+            "mdns4_minimal",+            "mdns4",+            "mdns6_minimal [NOTFOUND=return]",+            "mdns6_minimal",+            "mdns6",+            "mdns_minimal [NOTFOUND=return]",+            "mdns_minimal",+            "mdns",+        );+        sub remove {+            my $s=shift;+            foreach my $bit (@remove) {+                $s=~s/\s+\Q$bit\E//g;+            }+            return $s;+        }+        s/^(hosts:)(.*)/$1.remove($2)/e;+    ' /etc/nsswitch.conf+}++action="$1"++if [ "$action" = remove ]; then+    remove_mdns+fi