From 90260e757d993e54970841e35ea976b0795e8e0c Mon Sep 17 00:00:00 2001 From: "git@daemon.de" Date: Fri, 5 Jul 2013 09:39:50 +0200 Subject: [PATCH] fixed parsing of password expire field (github issue 5+6) --- CHANGELOG | 14 ++++++++++++++ lib/Crypt/PWSafe3.pm | 6 +++--- lib/Crypt/PWSafe3/Field.pm | 12 ++++++------ lib/Crypt/PWSafe3/HeaderField.pm | 2 +- lib/Crypt/PWSafe3/Record.pm | 2 +- lib/Crypt/PWSafe3/SHA256.pm | 2 +- t/tom.psafe3 | Bin 808 -> 888 bytes 7 files changed, 26 insertions(+), 12 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 4fb33fe..27cfd2d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,17 @@ +1.11 + fixed: + https://github.com/TLINDEN/Crypt--PWSafe3/issues/6 + https://github.com/TLINDEN/Crypt--PWSafe3/issues/5 + This was NOT caused by polish characters, but by the + password expire field being set (I didn't use it so far + and my test database doesn't contain records with this + field set). The 'W<*' pack identifier had been used + for this field and W doesn't support < indeed. I changed + it to use 'S<' now, which is a 2 byte little endian + value according to the db-spec. I also edited the + test database so that it contains the field now, so that + a make test catches it. + 1.10 I forgot to fix the pack() format as well. diff --git a/lib/Crypt/PWSafe3.pm b/lib/Crypt/PWSafe3.pm index 502a509..4ac114e 100644 --- a/lib/Crypt/PWSafe3.pm +++ b/lib/Crypt/PWSafe3.pm @@ -22,7 +22,7 @@ use Data::Dumper; use Exporter (); use vars qw(@ISA @EXPORT); -$Crypt::PWSafe3::VERSION = '1.10'; +$Crypt::PWSafe3::VERSION = '1.11'; use Crypt::PWSafe3::Field; use Crypt::PWSafe3::HeaderField; @@ -942,7 +942,7 @@ in this module are his ideas ported to perl. =head1 COPYRIGHT -Copyright (c) 2011-2012 by T.Linden . +Copyright (c) 2011-2013 by T.Linden . All rights reserved. =head1 LICENSE @@ -952,7 +952,7 @@ and/or modify it under the same terms as Perl itself. =head1 VERSION -Crypt::PWSafe3 Version 1.10. +Crypt::PWSafe3 Version 1.11. =cut diff --git a/lib/Crypt/PWSafe3/Field.pm b/lib/Crypt/PWSafe3/Field.pm index fc0190d..ccdcb77 100644 --- a/lib/Crypt/PWSafe3/Field.pm +++ b/lib/Crypt/PWSafe3/Field.pm @@ -7,7 +7,7 @@ use Exporter (); use vars qw(@ISA @EXPORT); use utf8; -$Crypt::PWSafe3::Field::VERSION = '1.03'; +$Crypt::PWSafe3::Field::VERSION = '1.04'; %Crypt::PWSafe3::Field::map2type = ( uuid => 0x01, @@ -76,11 +76,11 @@ sub new { $self->{value} = unpack('H*', $param{raw}); } elsif (grep { $_ eq $param{type} } @convbyte) { - $self->{value} = unpack('W<*', $param{raw}); + $self->{value} = unpack('S<', $param{raw}); } else { $self->{value} = $param{raw}; - utf8::decode($self->{value}); + utf8::decode($self->{value}); } $self->{len} = length($param{raw}); } @@ -93,11 +93,11 @@ sub new { $self->{raw} = pack('H*', $param{value}); } elsif (grep { $_ eq $param{type} } @convbyte) { - $self->{raw} = pack('W<*', $param{value}); + $self->{raw} = pack('S<', $param{value}); } else { $self->{raw} = $param{value}; - utf8::encode($param{raw}); + utf8::encode($param{raw}); } } else { @@ -170,7 +170,7 @@ T. Linden =head1 COPYRIGHT -Copyright (c) 2011 by T.Linden . +Copyright (c) 2011-2013 by T.Linden . All rights reserved. =head1 LICENSE diff --git a/lib/Crypt/PWSafe3/HeaderField.pm b/lib/Crypt/PWSafe3/HeaderField.pm index 2ae4d90..a91d04f 100644 --- a/lib/Crypt/PWSafe3/HeaderField.pm +++ b/lib/Crypt/PWSafe3/HeaderField.pm @@ -195,7 +195,7 @@ T. Linden =head1 COPYRIGHT -Copyright (c) 2011 by T.Linden . +Copyright (c) 2011-2013 by T.Linden . All rights reserved. =head1 LICENSE diff --git a/lib/Crypt/PWSafe3/Record.pm b/lib/Crypt/PWSafe3/Record.pm index 0120f31..7ccdf05 100644 --- a/lib/Crypt/PWSafe3/Record.pm +++ b/lib/Crypt/PWSafe3/Record.pm @@ -300,7 +300,7 @@ T. Linden =head1 COPYRIGHT -Copyright (c) 2011-2012 by T.Linden . +Copyright (c) 2011-2013 by T.Linden . All rights reserved. =head1 LICENSE diff --git a/lib/Crypt/PWSafe3/SHA256.pm b/lib/Crypt/PWSafe3/SHA256.pm index eb1db82..452f6dd 100644 --- a/lib/Crypt/PWSafe3/SHA256.pm +++ b/lib/Crypt/PWSafe3/SHA256.pm @@ -44,7 +44,7 @@ L =head1 COPYRIGHT -Copyright (c) 2011 by T.Linden . +Copyright (c) 2011-2013 by T.Linden . All rights reserved. =head1 LICENSE diff --git a/t/tom.psafe3 b/t/tom.psafe3 index 6ad60b51c1de422f54b43449721b3256ecdbb603..3b983f57177af082f4e3e0a79da1ad2ada9a263c 100644 GIT binary patch literal 888 zcmV-;1Bd)jS5q^2_Xkcv1Hm*0tD$g;l6A7?3bRT^1j5<@$>xjvNMxG;2mk={n(mZ% zvhe!oZy^y_7tID?G-aotdOT)W7>=yNBiS-6jTmrR;9dg8C7-UI?Pw3-9f>s`ugiD&{M{fY||Fpegb%1aR6-mySlbqm&N_83Ri_-%8Fkd(vG zc~4aH!<>(wj+y>TWlGr0k63dbP!U>H3+E*u9A#8^2mPtf|`ik5UFdM?_N;Y6`GlL-Fb zEc$#bKat|5KfocC!K?_p8Y(5XAhow!1N5vyYL+e>a-Kq}q*mZ|lw)C*r;ZQh{F`h) z_=T&uz!CYFcH$;z$l`v%F~pRU%@4N99J#j;uxYuz3q0;Za6vw#w?nYI_|YIf5zH5g zaV!gBlIXz&CxXUheMG^XiUg<0N=w+=MrThQits1A>PGm^6;aL zrMixrzvowzY_4%)1bWk-KEu%yytCAq4>o>~{om+)tLnDFf`U=OY-JQ!TV@&C-FBQ> z@;^@RIAPTL4yz1YI?MAbTvg)7vCjRL8Ps;x(=jL^4zyjS5q@BMNdXhS5q@BMNdXZE3V)pLGwv=huNZ}+jfhA3i=d{ O4S(^^sVBcN!IPWojkoFm literal 808 zcmV+@1K0deS5q@#{Ly^!F^hC=J6KePF92#YeLQPTl>SHdQr^KRfRTLw2mk;8OtL1E z#gA&Xr_Gs-gO^{Y0)Qy54$`cHBt#<5K(23YHcb3{*7UEI!gG^Y-{+N1QLsKo!# ztEwJ1gs;YaAb`-{txl+6_%CNe3J;5REzs_=W{srHU4zkq+-;+Lc8fS`!1*51#RbAQ0Bfu_&4+6$%-o>!x4 z;-wM4io(`})Xe^qn-DvQX_Z0X67%a8r^Z6Rv=Ynt@i)A{yeS!?N2P!2H1r>cJdqd9 zx%;`q1?4U|vh}EZ>jZIT%r2a)#9~&&7yH&;nj~=DW3bx^^E1yP;k1k^Z#gy?<%AZf z-+j>k)rJSM$_&$47@{*kop8j8u(t_2PK-N?;;Df(qV>aVgg$#ZWQdN71MewA+(j`p zg#*%$?joHEhk2PBRjLl7IWgI;8Z8>t{IQ^53jSYvt^J%0YjBP@oRygHmmH~fAQc}a z?5}$*5aeXvi9wb`|D|nkfX{rTKS5q@BMNdXhS5q@B mMNdX@M!C}+aJ_0nk74v>n~s3hI