I'm using version v0.7.10 on RedHat 7.3 and Tomcat
4.1.12. The body of some messages is not displayed
properly. In the error log I get the following exception:
XMLResourceBundle (no date): Type #text
XMLResourceBundle: no date = (no date)
XMLResourceBundle (no date): Type #text
XMLResourceBundle: no date = (no date)
java.lang.NullPointerException
at
net.wastl.webmail.misc.JavaScriptCleaner.walkTree(JavaScriptCleaner.java:82)
at
net.wastl.webmail.misc.JavaScriptCleaner.walkTree(JavaScriptCleaner.java:102)
at
net.wastl.webmail.misc.JavaScriptCleaner.walkTree(JavaScriptCleaner.java:102)
at
net.wastl.webmail.misc.JavaScriptCleaner.<init>(JavaScriptCleaner.java:48)
at
net.wastl.webmail.server.WebMailSession.parseMIMEContent(WebMailSession.java:696)
at
net.wastl.webmail.server.WebMailSession.getMessage(WebMailSession.java:586)
at
net.wastl.webmail.server.WebMailSession.getMessage(WebMailSession.java:475)
at ShowMessage.handleURL(ShowMessage.java:95)
at
net.wastl.webmail.server.ToplevelURLHandler.handleURL(ToplevelURLHandler.java:142)
at
net.wastl.webmail.server.WebMailServlet.service(WebMailServlet.java:287)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown
Source)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown
Source)
at
org.apache.catalina.core.StandardWrapperValve.invoke(Unknown
Source)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown
Source)
at
org.apache.catalina.core.StandardPipeline.invoke(Unknown
Source)
at
org.apache.catalina.core.ContainerBase.invoke(Unknown
Source)
at
org.apache.catalina.core.StandardContextValve.invoke(Unknown
Source)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown
Source)
at
org.apache.catalina.core.StandardPipeline.invoke(Unknown
Source)
at
org.apache.catalina.core.ContainerBase.invoke(Unknown
Source)
at
org.apache.catalina.core.StandardContext.invoke(Unknown
Source)
at
org.apache.catalina.core.StandardHostValve.invoke(Unknown
Source)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown
Source)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(Unknown
Source)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown
Source)
at
org.apache.catalina.valves.ErrorReportValve.invoke(Unknown
Source)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown
Source)
at
org.apache.catalina.valves.AccessLogValve.invoke(Unknown
Source)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown
Source)
at
org.apache.catalina.core.StandardPipeline.invoke(Unknown
Source)
at
org.apache.catalina.core.ContainerBase.invoke(Unknown
Source)
at
org.apache.catalina.core.StandardEngineValve.invoke(Unknown
Source)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown
Source)
at
org.apache.catalina.core.StandardPipeline.invoke(Unknown
Source)
at
org.apache.catalina.core.ContainerBase.invoke(Unknown
Source)
at
org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:458)
at
org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:551)
at java.lang.Thread.run(Thread.java:536)
Logged In: YES
user_id=578329
The reason is, that node maps can be null, if the
encountered node is
not an element.
I fixed this by adding a
if (map!=null) {
}
in my local version.
Logged In: NO
I got the same problem... where do you added that "if
(map....) ?
Thanks, Mathias
webmaster@taebo-hn.de
Logged In: YES
user_id=578329
Here is a patch for that problem with repect to version 0.7.10.
I encountered some additional problems with the XML
processing though.
diff -r
jwebmail-0.7_orig/src/net/wastl/webmail/misc/JavaScriptCleaner.java
jwebmail-0.7/src/net/wastl/webmail/misc/JavaScriptCleaner.java
82,89c82,95
< for(int i=0;i<map.getLength();i++) {
< Attr a=(Attr)map.item(i);
< /* First case: look for hrefs containing
"javascript" */
< if(a.getName().toUpperCase().equals("HREF")) {
< for(int
j=0;j<a.getValue().length()-javascript_href.length() ;j++) {
<
if(a.getValue().regionMatches(true,j,javascript_href,0,javascript_href.length()))
{
< ((Element)node).setAttribute("malicious","Marked
malicious because of potential JavaScript abuse (HREF
attribute contains javascript code)");
< break;
---
> if (map!=null) {
> for(int i=0;i<map.getLength();i++) {
> Attr a=(Attr)map.item(i);
> /* First case: look for hrefs containing
"javascript" */
> if(a.getName().toUpperCase().equals("HREF")) {
> for(int
j=0;j<a.getValue().length()-javascript_href.length() ;j++) {
>
if(a.getValue().regionMatches(true,j,javascript_href,0,javascript_href.length()))
{
>
((Element)node).setAttribute("malicious","Marked malicious
because of potential JavaScript abuse (HREF attribute
contains javascript code)");
> break;
> }
> }
> /* All elements containing "onXXX" tags get the
malicious attribute immediately */
> } else
if(a.getName().toUpperCase().startsWith("ON")) {
>
((Element)node).setAttribute("malicious","Marked malicious
because of potential JavaScript abuse (element contains
script events)");
92,95d97
< /* All elements containing "onXXX" tags get the
malicious attribute immediately */
< } else
if(a.getName().toUpperCase().startsWith("ON")) {
< ((Element)node).setAttribute("malicious","Marked
malicious because of potential JavaScript abuse (element
contains script events)");
< }