From 5af52b992a3ea7298f302814a332609da3bf8125 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 22 May 2016 03:15:48 -0400 Subject: better error message when loading xls files (#52) encrypted xlsx files use the same file container format as xls files, and so our simple heuristic here will identify xls files as encrypted xlsx files - we should bail out if we can't find encrypted data instead --- lib/Spreadsheet/ParseXLSX.pm | 3 ++- lib/Spreadsheet/ParseXLSX/Decryptor.pm | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm index a9b501f..cf9319a 100644 --- a/lib/Spreadsheet/ParseXLSX.pm +++ b/lib/Spreadsheet/ParseXLSX.pm @@ -71,10 +71,11 @@ sub parse { my $workbook = Spreadsheet::ParseExcel::Workbook->new; if ($self->_check_signature($file)) { - $file = Spreadsheet::ParseXLSX::Decryptor->open( + my $decrypted_file = Spreadsheet::ParseXLSX::Decryptor->open( $file, $self->{Password} ); + $file = $decrypted_file if $decrypted_file; } if (openhandle($file)) { diff --git a/lib/Spreadsheet/ParseXLSX/Decryptor.pm b/lib/Spreadsheet/ParseXLSX/Decryptor.pm index 660a544..7870685 100644 --- a/lib/Spreadsheet/ParseXLSX/Decryptor.pm +++ b/lib/Spreadsheet/ParseXLSX/Decryptor.pm @@ -25,6 +25,8 @@ sub open { ['EncryptionInfo', 'EncryptedPackage'] ); + return unless $infoFH; + my $buffer; $infoFH->read($buffer, 8); my ($majorVers, $minorVers) = unpack('SS', $buffer); -- cgit v1.2.3-54-g00ecf