This sounds like it is probably worth a bugzilla report. Loren
----- Original Message ----- From: "Clarke Brunt" <[EMAIL PROTECTED]> To: <users@spamassassin.apache.org> Sent: Thursday, December 09, 2004 5:29 AM Subject: Hashcash plugin bugs > Hello > > I'm using SpamAssassin 3.0.1 (and have checked Bugzilla and latest snapshot > in case this was fixed already). > > I was attempting to verify that the Hashcash plugin was working. I created a > 'stamp' using the Java applet on http://www.hashcash.org/, and inserted it > into a test email, which I then piped into SpamAssassin (after setting > hashcash_accept appropriately). > > The Hashcash stamp wasn't detected, so I investigated and believe I found > _two_ problems in the code in Hashcash.pm: > > Firstly, the above Java applet by default adds some pointless-looking > example extended data to the stamp (foo=e,r,t,w;bar=certain,key;), which you > can see contains semicolons. I'm no Perl expert, but I believe that the > following code in Hashcash.pm: > > # untaint the string for paranoia, making sure not to allow \n \0 \' \" > $hc =~ /^([-A-Za-z0-9\xA0-\xFF:_\/[EMAIL PROTECTED],\= \*\+]+)$/; $hc = $1; > > isn't allowing the semicolon ';' character to be present in the stamp (which > means that the stamp then doesn't work). Assuming that semicolon is supposed > to be allowed, then this code needs to avoid removing it from the string. If > I generated a stamp without semicolons, then it worked fine. I wonder if > there are any other likely characters which this could apply to also? > > And secondly, the code which attempts to check that the Hashcash version is > either 0 or 1: > > my ($ver, $bits, $date, $rsrc, $exts, $rand, $trial); > if ($hc =~ /^0:/) { > ($ver, $date, $rsrc, $trial) = split (/:/, $hc, 4); > } > elsif ($hc =~ /^1:/) { > ($ver, $bits, $date, $rsrc, $exts, $rand, $trial) = > split (/:/, $hc, 7); > # extensions are, as yet, unused by SpamAssassin > } > else { > dbg("hashcash: version $ver stamps not yet supported"); > return 0; > } > > encounters undefined variable $ver in the dbg statement if the version > _isn't_ 0 or 1 (which is probably unlikely, but was something I tried while > trying to work out what was going on). > > Hope that the users list was a good place to post this - I didn't (yet) feel > qualified either to post to 'dev' or to subscribe to Bugzilla. > > Regards, > Clarke Brunt >