From f63e9fbee908a8700826747e8d37c938081d2915 Mon Sep 17 00:00:00 2001 From: Florian Apolloner Date: Sun, 26 Jun 2022 17:25:30 +0200 Subject: [PATCH] Fix `ValueError` with unencrypted metadata values (Fixes #766). (#774) * Fix crash with unencrypted metadata values (pdfminer#766). * Explicitly check for length * Update CHANGELOG.md Co-authored-by: Pieter Marsman --- CHANGELOG.md | 1 + pdfminer/pdftypes.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c9d9b6..98eaade 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed +- `ValueError` when trying to decrypt empty metadata values ([#766](https://github.com/pdfminer/pdfminer.six/issues/766)) - Sphinx errors during building of documentation ([#760](https://github.com/pdfminer/pdfminer.six/pull/760)) - `TypeError` when getting default width of font ([#720](https://github.com/pdfminer/pdfminer.six/issues/720)) diff --git a/pdfminer/pdftypes.py b/pdfminer/pdftypes.py index f4543b9..d7a2f41 100644 --- a/pdfminer/pdftypes.py +++ b/pdfminer/pdftypes.py @@ -138,6 +138,8 @@ def resolve_all(x: object, default: object = None) -> Any: def decipher_all(decipher: DecipherCallable, objid: int, genno: int, x: object) -> Any: """Recursively deciphers the given object.""" if isinstance(x, bytes): + if len(x) == 0: + return x return decipher(objid, genno, x) if isinstance(x, list): x = [decipher_all(decipher, objid, genno, v) for v in x]