avahi: memory alignment fix
authorPhilipp Zabel <philipp.zabel@gmail.com>
Sun, 25 Sep 2005 15:59:31 +0000 (15:59 +0000)
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>
Sun, 25 Sep 2005 15:59:31 +0000 (15:59 +0000)
packages/avahi/avahi-0.5/.mtn2git_empty [new file with mode: 0644]
packages/avahi/avahi-0.5/alignment-fix.patch [new file with mode: 0644]
packages/avahi/avahi_0.5.bb

diff --git a/packages/avahi/avahi-0.5/.mtn2git_empty b/packages/avahi/avahi-0.5/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/avahi/avahi-0.5/alignment-fix.patch b/packages/avahi/avahi-0.5/alignment-fix.patch
new file mode 100644 (file)
index 0000000..fc23f23
--- /dev/null
@@ -0,0 +1,96 @@
+--- avahi-0.5/avahi-core/dns.c.orig    2005-09-23 16:35:02 +0200
++++ avahi-0.5/avahi-core/dns.c 2005-09-23 16:35:07 +0200
+@@ -177,11 +177,13 @@
+             assert(idx < p->size);
+             if (idx < 0x4000) {
+-                uint16_t *t;
+-                if (!(t = (uint16_t*) avahi_dns_packet_extend(p, sizeof(uint16_t))))
++                uint8_t *t;
++
++                if (!(t = (uint8_t*) avahi_dns_packet_extend(p, sizeof(uint16_t))))
+                     return NULL;
+-                *t = htons((0xC000 | idx));
++              t[0] = (uint8_t) ((0xC000 | idx) >> 8);
++              t[1] = (uint8_t) idx;
+                 return saved_ptr;
+             }
+         }
+@@ -223,7 +225,8 @@
+     if (!(d = avahi_dns_packet_extend(p, sizeof(uint16_t))))
+         return NULL;
+     
+-    *((uint16_t*) d) = htons(v);
++    d[0] = (uint8_t) (v >> 8);
++    d[1] = (uint8_t) v;
+     return d;
+ }
+@@ -234,7 +237,10 @@
+     if (!(d = avahi_dns_packet_extend(p, sizeof(uint32_t))))
+         return NULL;
+     
+-    *((uint32_t*) d) = htonl(v);
++    d[0] = (uint8_t) (v >> 24);
++    d[1] = (uint8_t) (v >> 16);
++    d[2] = (uint8_t) (v >> 8);
++    d[3] = (uint8_t) v;
+     return d;
+ }
+@@ -385,26 +391,42 @@
+ }
+ int avahi_dns_packet_consume_uint16(AvahiDnsPacket *p, uint16_t *ret_v) {
++    uint8_t *d;
++    uint16_t tmp_v;
++
+     assert(p);
+     assert(ret_v);
+     if (p->rindex + sizeof(uint16_t) > p->size)
+         return -1;
+-    *ret_v = ntohs(*((uint16_t*) (AVAHI_DNS_PACKET_DATA(p) + p->rindex)));
++    d = (uint8_t*) (AVAHI_DNS_PACKET_DATA(p) + p->rindex);
++    tmp_v = (d[0] << 8) | d[1];
++    d = (uint8_t*) ret_v;
++    d[0] = ((uint8_t*)(&tmp_v))[0];
++    d[1] = ((uint8_t*)(&tmp_v))[1];
+     p->rindex += sizeof(uint16_t);
+     return 0;
+ }
+ int avahi_dns_packet_consume_uint32(AvahiDnsPacket *p, uint32_t *ret_v) {
++    uint8_t* d;
++    uint32_t tmp_v;
++
+     assert(p);
+     assert(ret_v);
+     if (p->rindex + sizeof(uint32_t) > p->size)
+         return -1;
+-    *ret_v = ntohl(*((uint32_t*) (AVAHI_DNS_PACKET_DATA(p) + p->rindex)));
++    d = (uint8_t*) (AVAHI_DNS_PACKET_DATA(p) + p->rindex);
++    tmp_v = (d[0] << 24) | (d[1] << 16) | (d[2] << 8) | d[3];
++    d = (uint8_t*) ret_v;
++    d[0] = ((uint8_t*)(&tmp_v))[0];
++    d[1] = ((uint8_t*)(&tmp_v))[1];
++    d[2] = ((uint8_t*)(&tmp_v))[2];
++    d[3] = ((uint8_t*)(&tmp_v))[3];
+     p->rindex += sizeof(uint32_t);
+     
+     return 0;
+@@ -733,7 +755,8 @@
+ /*     avahi_log_debug("appended %u", size); */
+-    * (uint16_t*) l = htons((uint16_t) size);
++    l[0] = (uint8_t) ((uint16_t) size >> 8);
++    l[1] = (uint8_t) ((uint16_t) size);
+     
+     return t;
index dc1ff36..55a26ef 100644 (file)
@@ -5,9 +5,10 @@ DEPENDS = "expat libdaemon dbus-0.50"
 RRECOMMENDS = "libnss-mdns"
 SECTION = "net"
 PRIORITY = "optional"
-PR = "r0"
+PR = "r1"
 
-SRC_URI = "http://www.freedesktop.org/~lennart/avahi-${PV}.tar.gz"
+SRC_URI = "http://www.freedesktop.org/~lennart/avahi-${PV}.tar.gz \
+          file://alignment-fix.patch;patch=1"
 
 PACKAGES = "avahi-daemon libavahi-common libavahi-core libavahi-client avahi-dnsconfd libavahi-glib avahi-dev avahi-doc"