pypolicyd-spf crashing with IndexError exception

Erik de Castro Lopo <[email protected]> Tue, 20 Oct 2009 14:54:57 +1100
Newsgroups gmane.mail.spam.spf.devel
Organization Erik Conspiracy Secret Labs
Message-ID <[email protected]>
Hi,

I raised the following bug in the Ubuntu bug tracker:

    https://bugs.launchpad.net/ubuntu/+source/pypolicyd-spf/+bug/455991

The problem is code like:

    sender_domain = string.split(sender, '@', 1)
    if spf.domainmatch(reject_domain_list, sender_domain[1]):

If sender has no '@' character, sender_domain ends up as a single
element list and trying to index it by [1] results in an IndexError
exception.

A robust solution to this (available for python >= 2.5) is:

    sender_domain = sender.partition ('@')[2]
    if spf.domainmatch(reject_domain_list, sender_domain):

The parition method applied to the sender string is guaranteed to return
a 3 element tuple of which the [2] indexing grabs the last element.

Cheers,
Erik
-- 
----------------------------------------------------------------------
Erik de Castro Lopo
http://www.mega-nerd.com/