[ https://issues.apache.org/jira/browse/JSPF-99?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15582500#comment-15582500 ]
ASF GitHub Bot commented on JSPF-99: ------------------------------------ GitHub user ceakki opened a pull request: https://github.com/apache/james-jspf/pull/5 Fix NPE while expanding %{p} (JSPF-99) **Affected versions:** 0.9.9, 1.0.0, 1.0.1 **Storyline** This NullPointerException happens while expanding the "%{p}" macro because the remote IP address has no hostname associated with. In this case RFC says that the "%{p}" macro should be replaced with "unknown". _This issue makes the "exists" mechanism to not be evaluated correctly!_ **How to reproduce it:** ``` String ipAddress = "10.0.0.1"; String mailFrom = "a...@thecraigs.net"; String hostName = "localhost"; DefaultSPF spf = new DefaultSPF(); spf.checkSPF(ipAddress, mailFrom, hostName); ``` **Stacktrace:** ``` DEBUG|1017-102715225|main|impl.SPF||||||Start SPF-Record lookup for : thecraigs.net DEBUG|1017-102715324|main|impl.SPF||||||Found 1 SPF-Records DEBUG|1017-102715325|main|impl.SPF||||||Executing checker: PFC:org.apache.james.jspf.policies.ParseRecordPolicy@35cabb2a DEBUG|1017-102715325|main|SPF.parser||||||Start parsing SPF-Record: v=spf1 ip4:208.42.240.22 ip4:208.42.240.20 exists:_i-%{i}._p-%{p}._h-%{h}._l-%{l}._o-%{o}._spf.%{o} ?all DEBUG|1017-102715331|main|impl.SPF||||||Executing checker: PFC:org.apache.james.jspf.policies.NoSPFRecordFoundPolicy@223d2c72 DEBUG|1017-102715331|main|impl.SPF||||||Executing checker: PFC:org.apache.james.jspf.policies.NeutralIfNotMatchPolicy@8f4ea7c DEBUG|1017-102715332|main|impl.SPF||||||Executing checker: PFC:org.apache.james.jspf.policies.local.DefaultExplanationPolicy@3febb011 DEBUG|1017-102715333|main|impl.SPF||||||Executing checker: org.apache.james.jspf.impl.SPF$SPFRecordChecker@7f3b84b8 DEBUG|1017-102715334|main|impl.SPF||||||Executing checker: ip4:208.42.240.22 DEBUG|1017-102715334|main|impl.SPF||||||Executing checker: ip4:208.42.240.22 DEBUG|1017-102715335|main|impl.SPF||||||Executing checker: org.apache.james.jspf.terms.Directive$MechanismResultChecker@7f0eb4b4 DEBUG|1017-102715335|main|parser.directive||||||Processed directive NOT matched: org.apache.james.jspf.terms.Directive$MechanismResultChecker@7f0eb4b4 DEBUG|1017-102715335|main|impl.SPF||||||Executing checker: ip4:208.42.240.20 DEBUG|1017-102715335|main|impl.SPF||||||Executing checker: ip4:208.42.240.20 DEBUG|1017-102715335|main|impl.SPF||||||Executing checker: org.apache.james.jspf.terms.Directive$MechanismResultChecker@5c33f1a9 DEBUG|1017-102715335|main|parser.directive||||||Processed directive NOT matched: org.apache.james.jspf.terms.Directive$MechanismResultChecker@5c33f1a9 DEBUG|1017-102715335|main|impl.SPF||||||Executing checker: exists:_i-%{i}._p-%{p}._h-%{h}._l-%{l}._o-%{o}._spf.%{o} DEBUG|1017-102715335|main|impl.SPF||||||Executing checker: exists:_i-%{i}._p-%{p}._h-%{h}._l-%{l}._o-%{o}._spf.%{o} DEBUG|1017-102715336|main|SPF.macroExpand||||||Start expand domain: _i-%{i}._p-%{p}._h-%{h}._l-%{l}._o-%{o}._spf.%{o} DEBUG|1017-102715336|main|SPF.macroExpand||||||Used macro: i replaced with: 10.0.0.1 DEBUG|1017-102715337|main|impl.SPF||||||Start PTR-Record lookup for : 1.0.0.10.in-addr.arpa DEBUG|1017-102715345|main|impl.SPF||||||Found 0 PTR-Records DEBUG|1017-102715346|main|impl.SPF||||||Executing checker: org.apache.james.jspf.terms.ExistsMechanism$ExpandedChecker@223191a6 DEBUG|1017-102715346|main|SPF.macroExpand||||||Start expand domain: _i-%{i}._p-%{p}._h-%{h}._l-%{l}._o-%{o}._spf.%{o} DEBUG|1017-102715346|main|SPF.macroExpand||||||Used macro: i replaced with: 10.0.0.1 ERROR|1017-102715346|main|impl.SPF||||||null java.lang.NullPointerException at org.xbill.DNS.Name.fromString(Name.java:301) at org.xbill.DNS.Name.fromString(Name.java:319) at org.apache.james.jspf.core.DNSRequest.<init>(DNSRequest.java:52) at org.apache.james.jspf.terms.ExistsMechanism$ExpandedChecker.checkSPF(ExistsMechanism.java:53) at org.apache.james.jspf.executor.SynchronousSPFExecutor.execute(SynchronousSPFExecutor.java:54) at org.apache.james.jspf.impl.SPF.checkSPF(SPF.java:315) ``` **SPF record of thecraigs.net :** ``` v=spf1 ip4:208.42.240.22 ip4:208.42.240.20 exists:_i-%{i}._p-%{p}._h-%{h}._l-%{l}._o-%{o}._spf.%{o} ?all ``` You can merge this pull request into a Git repository by running: $ git pull https://github.com/ceakki/james-jspf patch-3 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/james-jspf/pull/5.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #5 ---- commit 9999a99906bf40a7741ae9937f110502de8fce06 Author: Cristian Ciocau <ccio...@gmail.com> Date: 2016-10-17T15:06:24Z Fix NPE while expanding %{p} (JSPF-99) ---- > NullPointerException when expanding %{p} macro > ---------------------------------------------- > > Key: JSPF-99 > URL: https://issues.apache.org/jira/browse/JSPF-99 > Project: James jSPF > Issue Type: Bug > Affects Versions: 0.9.9, 1.0.0, 1.0.1 > Reporter: ceakki > Priority: Blocker > > *Storyline* > This NullPointerException happens while expanding the "%\{p\}" macro because > the remote IP address has no hostname associated with. In this case RFC says > that the "%\{p\}" macro should be replaced with "unknown". > _This issue makes the "exists" mechanism to not be evaluated correctly!_ > > *How to reproduce it:* > {code} > String ipAddress = "10.0.0.1"; > String mailFrom = "a...@thecraigs.net"; > String hostName = "localhost"; > DefaultSPF spf = new DefaultSPF(); > spf.checkSPF(ipAddress, mailFrom, hostName); > {code} > *Stacktrace:* > {noformat} > DEBUG|1017-102715225|main|impl.SPF||||||Start SPF-Record lookup for : > thecraigs.net > DEBUG|1017-102715324|main|impl.SPF||||||Found 1 SPF-Records > DEBUG|1017-102715325|main|impl.SPF||||||Executing checker: > PFC:org.apache.james.jspf.policies.ParseRecordPolicy@35cabb2a > DEBUG|1017-102715325|main|SPF.parser||||||Start parsing SPF-Record: v=spf1 > ip4:208.42.240.22 ip4:208.42.240.20 > exists:_i-%{i}._p-%{p}._h-%{h}._l-%{l}._o-%{o}._spf.%{o} ?all > DEBUG|1017-102715331|main|impl.SPF||||||Executing checker: > PFC:org.apache.james.jspf.policies.NoSPFRecordFoundPolicy@223d2c72 > DEBUG|1017-102715331|main|impl.SPF||||||Executing checker: > PFC:org.apache.james.jspf.policies.NeutralIfNotMatchPolicy@8f4ea7c > DEBUG|1017-102715332|main|impl.SPF||||||Executing checker: > PFC:org.apache.james.jspf.policies.local.DefaultExplanationPolicy@3febb011 > DEBUG|1017-102715333|main|impl.SPF||||||Executing checker: > org.apache.james.jspf.impl.SPF$SPFRecordChecker@7f3b84b8 > DEBUG|1017-102715334|main|impl.SPF||||||Executing checker: ip4:208.42.240.22 > DEBUG|1017-102715334|main|impl.SPF||||||Executing checker: ip4:208.42.240.22 > DEBUG|1017-102715335|main|impl.SPF||||||Executing checker: > org.apache.james.jspf.terms.Directive$MechanismResultChecker@7f0eb4b4 > DEBUG|1017-102715335|main|parser.directive||||||Processed directive NOT > matched: org.apache.james.jspf.terms.Directive$MechanismResultChecker@7f0eb4b4 > DEBUG|1017-102715335|main|impl.SPF||||||Executing checker: ip4:208.42.240.20 > DEBUG|1017-102715335|main|impl.SPF||||||Executing checker: ip4:208.42.240.20 > DEBUG|1017-102715335|main|impl.SPF||||||Executing checker: > org.apache.james.jspf.terms.Directive$MechanismResultChecker@5c33f1a9 > DEBUG|1017-102715335|main|parser.directive||||||Processed directive NOT > matched: org.apache.james.jspf.terms.Directive$MechanismResultChecker@5c33f1a9 > DEBUG|1017-102715335|main|impl.SPF||||||Executing checker: > exists:_i-%{i}._p-%{p}._h-%{h}._l-%{l}._o-%{o}._spf.%{o} > DEBUG|1017-102715335|main|impl.SPF||||||Executing checker: > exists:_i-%{i}._p-%{p}._h-%{h}._l-%{l}._o-%{o}._spf.%{o} > DEBUG|1017-102715336|main|SPF.macroExpand||||||Start expand domain: > _i-%{i}._p-%{p}._h-%{h}._l-%{l}._o-%{o}._spf.%{o} > DEBUG|1017-102715336|main|SPF.macroExpand||||||Used macro: i replaced with: > 10.0.0.1 > DEBUG|1017-102715337|main|impl.SPF||||||Start PTR-Record lookup for : > 1.0.0.10.in-addr.arpa > DEBUG|1017-102715345|main|impl.SPF||||||Found 0 PTR-Records > DEBUG|1017-102715346|main|impl.SPF||||||Executing checker: > org.apache.james.jspf.terms.ExistsMechanism$ExpandedChecker@223191a6 > DEBUG|1017-102715346|main|SPF.macroExpand||||||Start expand domain: > _i-%{i}._p-%{p}._h-%{h}._l-%{l}._o-%{o}._spf.%{o} > DEBUG|1017-102715346|main|SPF.macroExpand||||||Used macro: i replaced with: > 10.0.0.1 > ERROR|1017-102715346|main|impl.SPF||||||null > java.lang.NullPointerException > at org.xbill.DNS.Name.fromString(Name.java:301) > at org.xbill.DNS.Name.fromString(Name.java:319) > at org.apache.james.jspf.core.DNSRequest.<init>(DNSRequest.java:52) > at > org.apache.james.jspf.terms.ExistsMechanism$ExpandedChecker.checkSPF(ExistsMechanism.java:53) > at > org.apache.james.jspf.executor.SynchronousSPFExecutor.execute(SynchronousSPFExecutor.java:54) > at org.apache.james.jspf.impl.SPF.checkSPF(SPF.java:315) > {noformat} > *SPF record of thecraigs.net :* > {noformat} > v=spf1 ip4:208.42.240.22 ip4:208.42.240.20 > exists:_i-%{i}._p-%{p}._h-%{h}._l-%{l}._o-%{o}._spf.%{o} ?all > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org