Rev 77 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 77 | Rev 78 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | #! /bin/sh /usr/share/dpatch/dpatch-run |
1 | #! /bin/sh /usr/share/dpatch/dpatch-run |
2 | ## ipv6_buffer_miscalculation.dpatch by Matthias Scheler <tron@netbsd.org> |
2 | ## ipv6_buffer_miscalculation.dpatch by Matthias Scheler <tron@netbsd.org> and others |
3 | ## |
3 | ## |
4 | ## DP: Fix an abort() caused by miscalculating the size of an internal buffer. |
4 | ## DP: Fix various IPv6-related typos, C&P bugs etc. |
5 | ## DP: This can crash applications using "libspf2" (e.g. "milter-greylist") |
5 | ## DP: These can crash applications using libspf2 or give the wrong result if |
6 | ## DP: in an e-mail gets delivered via SMTP over IPv6 depending on the |
6 | ## DP: an e-mail gets delivered via SMTP over IPv6 depending on the remote |
7 | ## DP: remote machine's IPv6 address. |
7 | ## DP: machine's IPv6 address. |
8 | 8 | ||
9 | @DPATCH@ |
9 | @DPATCH@ |
10 | --- a/src/libspf2/spf_expand.c 2008-11-03 21:29:00.000000000 +0000 |
10 | --- a/src/libspf2/spf_expand.c 2008-11-03 21:29:00.000000000 +0000 |
11 | +++ b/src/libspf2/spf_expand.c 2009-09-08 11:27:52.000000000 +0100 |
11 | +++ b/src/libspf2/spf_expand.c 2009-09-08 11:27:52.000000000 +0100 |
12 | @@ -245,7 +245,7 @@ |
12 | @@ -245,7 +245,7 @@ |
Line 16... | Line 16... | ||
16 | - len = sizeof(ip6_buf); |
16 | - len = sizeof(ip6_buf); |
17 | + len = sizeof(ip6_rbuf); |
17 | + len = sizeof(ip6_rbuf); |
18 | if (d->dv.url_encode) |
18 | if (d->dv.url_encode) |
19 | len *= 3; |
19 | len *= 3; |
20 | buflen += len; |
20 | buflen += len; |
- | 21 | --- a/src/libspf2/spf_interpret.c 2008-10-22 11:47:43.000000000 -0400 |
|
- | 22 | +++ b/src/libspf2/spf_interpret.c 2009-09-08 00:42:25.000000000 -0400 |
|
- | 23 | @@ -505,7 +505,7 @@ |
|
- | 24 | char dst_ip6_buf[ INET6_ADDRSTRLEN ]; |
|
- | 25 | ||
- | 26 | struct in6_addr src_ipv6; |
|
- | 27 | - int cidr, mask; |
|
- | 28 | + int cidr, cidr_save, mask; |
|
- | 29 | int i; |
|
- | 30 | int match; |
|
- | 31 | ||
- | 32 | @@ -517,6 +517,7 @@ |
|
- | 33 | cidr = SPF_i_mech_cidr(spf_request, mech); |
|
- | 34 | if ( cidr == 0 ) |
|
- | 35 | cidr = 128; |
|
- | 36 | + cidr_save = cidr; |
|
- | 37 | ||
- | 38 | match = TRUE; |
|
- | 39 | for( i = 0; i < array_elem( ipv6.s6_addr ) && match; i++ ) |
|
- | 40 | @@ -538,7 +539,7 @@ |
|
- | 41 | INET_NTOP(AF_INET6, &ipv6.s6_addr, |
|
- | 42 | dst_ip6_buf, sizeof(dst_ip6_buf)); |
|
- | 43 | SPF_debugf( "ip_match: %s == %s (/%d): %d", |
|
- | 44 | - src_ip6_buf, dst_ip6_buf, cidr, match ); |
|
- | 45 | + src_ip6_buf, dst_ip6_buf, cidr_save, match ); |
|
- | 46 | } |
|
- | 47 | ||
- | 48 | return match; |
|
- | 49 | --- a/src/libspf2/spf_compile.c 2008-11-03 15:37:33.000000000 -0500 |
|
- | 50 | +++ b/src/libspf2/spf_compile.c 2009-09-07 23:46:02.000000000 -0400 |
|
- | 51 | @@ -778,7 +778,7 @@ |
|
- | 52 | const char *end; |
|
- | 53 | const char *p; |
|
- | 54 | ||
- | 55 | - char buf[ INET_ADDRSTRLEN ]; |
|
- | 56 | + char buf[ INET6_ADDRSTRLEN ]; |
|
- | 57 | size_t len; |
|
- | 58 | int err; |
|
- | 59 |