You have been subscribed to a public bug:

receiving an email from a sender whose SPF records are bogus (invalid
UTF8) can crash policyd-spf.

email (spam as it turns out, but whatever) from
[email protected] whose SPF record looks like this -

daltoninsurance.com. 6457 IN TXT "v=spf1
a:\239\187\191thoroughbred.webserversystems.com -all"

causes policyd-spf to crash like so (filtered through syslog and
logcheck, so ignore the line preambles) -

4 stomp policyd-spf: Traceback (most recent call last):
4 stomp policyd-spf: File "/usr/bin/policyd-spf", line 607, in <module>
4 stomp policyd-spf: instance_dict, configData, peruser)
4 stomp policyd-spf: File "/usr/bin/policyd-spf", line 469, in spfcheck
4 stomp policyd-spf: res = spf.check2(ip, sender, helo)
4 stomp policyd-spf: File "/usr/lib/python2.6/dist-packages/spf.py", line 294, 
in check2
4 stomp policyd-spf: res,_,exp = query(i=i, s=s, h=h, local=local, 
receiver=receiver).check()
4 stomp policyd-spf: File "/usr/lib/python2.6/dist-packages/spf.py", line 514, 
in check
4 stomp policyd-spf: rc = self.check1(spf, self.d, 0)
4 stomp policyd-spf: File "/usr/lib/python2.6/dist-packages/spf.py", line 553, 
in check1
4 stomp policyd-spf: return self.check0(spf, recursion)
4 stomp policyd-spf: File "/usr/lib/python2.6/dist-packages/spf.py", line 836, 
in check0
4 stomp policyd-spf: if self.cidrmatch(self.dns_a(arg,self.A), cidrlength):
4 stomp policyd-spf: File "/usr/lib/python2.6/dist-packages/spf.py", line 1132, 
in dns_a
4 stomp policyd-spf: return self.dns(domainname, A)
4 stomp policyd-spf: File "/usr/lib/python2.6/dist-packages/spf.py", line 1200, 
in dns
4 stomp policyd-spf: for k, v in DNSLookup(name, qtype, self.strict, 
self.timeout):
4 stomp policyd-spf: File "/usr/lib/python2.6/dist-packages/spf.py", line 127, 
in DNSLookup
4 stomp policyd-spf: resp = req.req()
4 stomp policyd-spf: File "/usr/lib/python2.6/dist-packages/DNS/Base.py", line 
202, in req
4 stomp policyd-spf: m.addQuestion(qname, qtype, Class.IN)
4 stomp policyd-spf: File "/usr/lib/python2.6/dist-packages/DNS/Lib.py", line 
478, in addQuestion
4 stomp policyd-spf: self.addname(qname)
4 stomp policyd-spf: File "/usr/lib/python2.6/dist-packages/DNS/Lib.py", line 
125, in addname
4 stomp policyd-spf: label = label.encode(enc)
4 stomp policyd-spf: File "/usr/lib/python2.6/encodings/idna.py", line 164, in 
encode
4 stomp policyd-spf: result.append(ToASCII(label))
4 stomp policyd-spf: File "/usr/lib/python2.6/encodings/idna.py", line 76, in 
ToASCII
4 stomp policyd-spf: label = nameprep(label)
4 stomp policyd-spf: File "/usr/lib/python2.6/encodings/idna.py", line 21, in 
nameprep
4 stomp policyd-spf: newlabel.append(stringprep.map_table_b2(c))
4 stomp policyd-spf: File "/usr/lib/python2.6/stringprep.py", line 197, in 
map_table_b2
4 stomp policyd-spf: b = unicodedata.normalize("NFKC", al)
4 stomp policyd-spf: TypeError: normalize() argument 2 must be unicode, not str
4 stomp postfix/spawn: warning: command /usr/bin/python exit status 1

** Affects: py3dns (Ubuntu)
     Importance: High
         Status: Confirmed


** Tags: crash unicode
-- 
policyd-spf crashes on broken SPF records
https://bugs.launchpad.net/bugs/832480
You received this bug notification because you are a member of Ubuntu Bugs, 
which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to