Re: pypolicyd-spf crashing with IndexError exception

Scott Kitterman <[email protected]> Tue, 20 Oct 2009 13:39:17 -0400
Newsgroups gmane.mail.spam.spf.devel
Message-ID <25745-SnapperMsgD8DB99B6C703A667@[70.211.66.110]>
On Tue, 20 Oct 2009 10:18:24 -0700 John Clements 
<[email protected]> wrote:
>
>On Oct 19, 2009, at 8:54 PM, Erik de Castro Lopo wrote:
>
>> 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.
>
>Yep; I reported this problem back in April:
>
>http://snurl.com/sm6pr
>
>My solution was just to grab the last element of the list.  This will  
>differ only when there are multiple '@'s; I'm guessing this isn't a  
>problem.

In practice, it shouldn't be.  Sorry for the delay.  This is still on my 
TODO.

Scott K