From 8ccbfba6cc8f3276d085aa872fed1dc781d6f7f2 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 9 Oct 2012 16:15:13 -0400 Subject: [PATCH] Djvu Validate patch from tigran123 refer to commit in master(kpv) tree: 64b6ef4afdd9d41402ad6cfc979f99b5e9e0e6dc --- frontend/document/djvudocument.lua | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/frontend/document/djvudocument.lua b/frontend/document/djvudocument.lua index 31d3aa2e9..d8f627e06 100644 --- a/frontend/document/djvudocument.lua +++ b/frontend/document/djvudocument.lua @@ -9,6 +9,11 @@ DjvuDocument = Document:new{ } function DjvuDocument:init() + if not validDjvuFile(self.file) then + self.error_message = "Not a valid DjVu file" + return + end + local ok ok, self._document = pcall(djvu.openDocument, self.file, self.djvulibre_cache_size) if not ok then @@ -20,6 +25,16 @@ function DjvuDocument:init() self:_readMetadata() end +-- check DjVu magic string to validate +function validDjvuFile(filename) + f = io.open(filename, "r") + if not f then return false end + local magic = f:read(8) + f:close() + if not magic or magic ~= "AT&TFORM" then return false end + return true +end + function DjvuDocument:getUsedBBox(pageno) -- djvu does not support usedbbox, so fake it. local used = {}