[pmg-devel] [PATCH pmg-api v4 3/5] pmg-smtp-filter: archive-detection: use header information as well

Stoiko Ivanov s.ivanov at proxmox.com
Thu Feb 20 21:13:04 CET 2025


This restores the fall-back to the content-type from the header for
detecting archives, which we want to unpack, as eagerly trying to get
all information seems sensible in this case.

Signed-off-by: Stoiko Ivanov <s.ivanov at proxmox.com>
---
 src/bin/pmg-smtp-filter | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/bin/pmg-smtp-filter b/src/bin/pmg-smtp-filter
index 6061459..6c03631 100755
--- a/src/bin/pmg-smtp-filter
+++ b/src/bin/pmg-smtp-filter
@@ -561,9 +561,15 @@ sub run_dequeue {
 sub unpack_entity {
     my ($self, $unpack, $entity, $msginfo, $queue) = @_;
 
-    my ($magic, $path) = $entity->@{'PMX_magic_ct', 'PMX_decoded_path'};
+    my ($magic, $headerct, $path) = $entity->@{'PMX_magic_ct', 'PMX_header_ct', 'PMX_decoded_path'};
+
+    if ($path) {
+	# in order to not miss information from a misdetected archive use information provided in the
+	# header here as well
+	if ($headerct && ($magic && $magic eq 'application/octet-stream')) {
+	    $magic = $headerct;
+	}
 
-    if ($magic && $path) {
 	my $filename = basename ($path);
 
 	if (PMG::Unpack::is_archive ($magic)) {
-- 
2.39.5





More information about the pmg-devel mailing list