# SPDX-License-Identifier: GPL-2.0-or-later package Amavis::Unpackers::OurFiler; use strict; use re 'taint'; BEGIN { require Exporter; use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION); $VERSION = '2.412'; @ISA = qw(Exporter MIME::Parser::Filer); # subclass of MIME::Parser::Filer } use MIME::Parser::Filer; use Amavis::Unpackers::Part; # This package will be used by mime_decode(). # # We don't want no heavy MIME::Parser machinery for file name extension # guessing, decoding charsets in filenames (and listening to complaints # about it), checking for evil filenames, checking for filename contention, ... # (which cannot be turned off completely by ignore_filename(1) !!!) # Just enforce our file name! And while at it, collect generated filenames. # sub new($$$) { my($class, $dir, $parent_obj) = @_; $dir =~ s{/+\z}{}; # chop off trailing slashes from directory name bless {parent => $parent_obj, directory => $dir}, $class; } # provide a generated file name # sub output_path($@) { my($self, $head) = @_; my $newpart_obj = Amavis::Unpackers::Part->new($self->{directory}, $self->{parent}, 1); get_amavisd_part($head, $newpart_obj); # store object into head $newpart_obj->full_name; } sub get_amavisd_part($;$) { my $head = shift; !@_ ? $head->{amavisd_parts_obj} : ($head->{amavisd_parts_obj} = shift); } 1;