In the main processing loop, the safe tmpdir creation fails when multiple parts are present because no check is performed to see if the directory was already created. The code in question should be patched as follows:
--- FuzzyOcr.pm 2007-01-07 04:05:08.000000000 -0800
+++ /etc/mail/spamassassin/FuzzyOcr.pm 2007-02-21 16:05:05.000000000 -0800
@@ -263,12 +263,14 @@
}
#Found Image!! Get a temporary dir to save image
- $imgdir = Mail::SpamAssassin::Util::secure_tmpdir();
- unless ($imgdir) {
- errorlog("Scan canceled, cannot create Image TMPDIR.");
- return 0;
- }
- set_tmpdir($imgdir);
+ unless ($imgdir = get_tmpdir()) {
+ $imgdir = Mail::SpamAssassin::Util::secure_tmpdir();
+ unless ($imgdir) {
+ errorlog("Scan canceled, cannot create Image TMPDIR.");
+ return 0;
+ }
+ set_tmpdir($imgdir);
+ }
#Generete unique filename to store image
my $imgfilename = Mail::SpamAssassin::Util::untaint_file_path(