about:config
J|Down|left MB - nächster Punkt
K|Up|right MB - vorhergehender Punkt
Right - nächste Seite
Left - vorhergehende Seite
<Return> - zur Seite springen im Inhaltsverzeichnis
O - Outline Mode on/off
T|escape|F5 - Inhaltsverzeichnis on/off
S|. - zwischen Styles rotieren
:begin
YAML, Net::DNS, UTF8
Steffen Ullrich, GeNUA mbH
Deutscher Perl-Workshop 2012, Erlangen
Background
- Test mit Mail::SPF::Iterator
- Fake DNS Server via Net::DNS
- Testspec via YAML (offizielle SPF Testsuite)
- Upgrade OpenBSD 4.9 -> 5.0
Bummer!
Exception: incomplete data at ...Net/DNS/RR.pm line 565.
caught at ...Net/DNS/RR.pm line 517
557 my ($name, $index) = Net::DNS::Packet::dn_expand($data, $offset);
558 die 'Exception: corrupt or incomplete data' unless $index;
559
560 my $rdindex = $index + PACKED_LENGTH;
561 die 'Exception: incomplete data' if length $$data < $rdindex;
562 my ($type, $class, $ttl, $rdlength) = unpack("\@$index n2 N n", $$data);
563
564 my $next = $rdindex + $rdlength;
565 die 'Exception: incomplete data' if length $$data < $next;
nach langer Zeit..
sub dn_expand {
#FYI my ($packet, $offset) = @_;
- return dn_expand_XS(@_) if $Net::DNS::HAVE_XS;
+ # return dn_expand_XS(@_) if $Net::DNS::HAVE_XS;
# warn "USING PURE PERL dn_expand()\n";
return dn_expand_PP(@_, {} ); # $packet, $offset, anonymous hash
}
strategische printfs
void
dn_expand_XS(sv_buf, offset)
...
buf = (u_char *) SvPV(sv_buf, len);
pos = netdns_dn_expand(buf, buf+len , buf+offset,
&name[0], MAXDNAME);
- len ausgeben lassen
- differiert zwischen OpenBSD 4.9 und 5.0 !
- jedoch Net::DNS Version ist die gleiche
- gleiche Probleme mit frischem Net::DNS Install
Dump, Devel::Peek
SV = PV(0x1c82bc8) at 0x1ca1120
FLAGS = (PADMY,POK,pPOK,UTF8)
...
CUR = 120
- aber length($buf) == 118 !
- und was macht da das UTF8-Flag
YAML Changelog
version: 0.71
date: Sun Jan 3 12:25:00 AEST 2010
changes:
- Set file encoding to UTF-8 in LoadFile/DumpFile (RT#25434) ...
...
POC
use Encode;
my $x = 'ab';
Encode::_utf8_on($x);
$x .= "cd\x8a\x83ab";
Devel::Peek::Dump($x);
Resultat
SV = PV(0x1c82bc8) at 0x1ca1120
REFCNT = 1
FLAGS = (PADMY,POK,pPOK,UTF8)
PV = 0x1c9b6a0 "abcd\302\212\302\203ab"\0 [UTF8 "abcd\x{8a}\x{83}ab"]
CUR = 10 <<<< length($x) == 8!
LEN = 16
Zusammenfassung
- Characterstring != Bytes
- Characterstring + Bytes -> Upgrade Bytes als Char
- UTF8-String + Bytes -> Upgrade Bytes zu UTF8
- SvLEN = Menge an Bytes, nicht Characters