diff --git a/c-ares.spec b/c-ares.spec index 2d70e0e..e8c734a 100644 --- a/c-ares.spec +++ b/c-ares.spec @@ -1,7 +1,7 @@ Summary: A library that performs asynchronous DNS operations Name: c-ares Version: 1.7.4 -Release: 2%{?dist} +Release: 3%{?dist} License: MIT Group: System Environment/Libraries URL: http://c-ares.haxx.se/ @@ -9,6 +9,7 @@ Source0: http://c-ares.haxx.se/c-ares-%{version}.tar.gz Source1: LICENSE Patch0: %{name}-1.7.0-optflags.patch Patch1: c-ares-multilib.patch +Patch2: cleanup-avoid-unsafe-typecasts.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -31,6 +32,7 @@ compile applications or shared objects that use c-ares. %setup -q %patch0 -p1 -b .optflags %patch1 -p1 -b .multilib +%patch2 -p1 -b .typecasts cp %{SOURCE1} . f=CHANGES ; iconv -f iso-8859-1 -t utf-8 $f -o $f.utf8 ; mv $f.utf8 $f @@ -67,6 +69,9 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man3/ares_* %changelog +* Mon Apr 11 2011 Jakub Hrozek - 1.7.4-3 +- Apply upstream patch to fix rhbz#695424 + * Tue Feb 08 2011 Fedora Release Engineering - 1.7.4-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild diff --git a/cleanup-avoid-unsafe-typecasts.patch b/cleanup-avoid-unsafe-typecasts.patch new file mode 100644 index 0000000..ec6b5a6 --- /dev/null +++ b/cleanup-avoid-unsafe-typecasts.patch @@ -0,0 +1,56 @@ +From 2d5ed6400ba430f412ebc9748eb847771907776d Mon Sep 17 00:00:00 2001 +From: Daniel Stenberg +Date: Sat, 18 Dec 2010 22:20:16 +0100 +Subject: [PATCH] cleanup: avoid unsafe typecasts + +Avoid the risk of reading 16bit data from an unaligned address by using +a macro that is adapted for this. +--- + ares_parse_mx_reply.c | 4 ++-- + ares_parse_srv_reply.c | 6 +++--- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/ares_parse_mx_reply.c b/ares_parse_mx_reply.c +index 186ddd3..2180054 100644 +--- a/ares_parse_mx_reply.c ++++ b/ares_parse_mx_reply.c +@@ -47,7 +47,7 @@ + + int + ares_parse_mx_reply (const unsigned char *abuf, int alen, +- struct ares_mx_reply **mx_out) ++ struct ares_mx_reply **mx_out) + { + unsigned int qdcount, ancount, i; + const unsigned char *aptr, *vptr; +@@ -134,7 +134,7 @@ ares_parse_mx_reply (const unsigned char *abuf, int alen, + mx_last = mx_curr; + + vptr = aptr; +- mx_curr->priority = ntohs (*((unsigned short *)vptr)); ++ mx_curr->priority = DNS__16BIT(vptr); + vptr += sizeof(unsigned short); + + status = ares_expand_name (vptr, abuf, alen, &mx_curr->host, &len); +diff --git a/ares_parse_srv_reply.c b/ares_parse_srv_reply.c +index 7d443b3..9c7eb6e 100644 +--- a/ares_parse_srv_reply.c ++++ b/ares_parse_srv_reply.c +@@ -139,11 +139,11 @@ ares_parse_srv_reply (const unsigned char *abuf, int alen, + srv_last = srv_curr; + + vptr = aptr; +- srv_curr->priority = ntohs (*((unsigned short *)vptr)); ++ srv_curr->priority = DNS__16BIT(vptr); + vptr += sizeof(unsigned short); +- srv_curr->weight = ntohs (*((unsigned short *)vptr)); ++ srv_curr->weight = DNS__16BIT(vptr); + vptr += sizeof(unsigned short); +- srv_curr->port = ntohs (*((unsigned short *)vptr)); ++ srv_curr->port = DNS__16BIT(vptr); + vptr += sizeof(unsigned short); + + status = ares_expand_name (vptr, abuf, alen, &srv_curr->host, &len); +-- +1.7.4.2 +