XML parsing bug?

Earlier today our jabber service stopped working properly. After some poking around and tailing every log we could find, we discovered somehow inserting certain characters in a user’s Status will prevent the our user community from using the openfire server for jabber service. Essentially making the openfire server useless.

User who’s status caused the XML parsing error is using Adium 1.5.1 running on Mac OS X 10.7.4

From My Pidgin 2.6.6 Debug Window:

(14:52:31) jabber: Recv (ssl)(285): �@ the office

(14:52:31) jabber: XML parser error for JabberStream 0x289d510: Domain 1, code 9, level 3: xmlParseCharRef: invalid xmlChar value 16

(14:52:31) jabber: xmlParseChunk returned fatal 9

(14:52:31) connection: Connection error on 0x302c1c0 (reason: 0 description: XML Parse error)

From the server’s openfire error.log:

==> error.log <==

2012.06.12 14:07:06 org.jivesoftware.openfire.muc.HistoryRequest - Error parsing date from history management

java.text.ParseException: Unparseable date: “2012-06-12T21:06:06Z”

at java.text.DateFormat.parse(DateFormat.java:337)

at org.jivesoftware.openfire.muc.HistoryRequest.(HistoryRequest.java:84)

at org.jivesoftware.openfire.muc.spi.LocalMUCUser.process(LocalMUCUser.java:478)

at org.jivesoftware.openfire.muc.spi.LocalMUCUser.process(LocalMUCUser.java:197)

at org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl.processPacket(MultiU serChatServiceImpl.java:321)

at org.jivesoftware.openfire.component.InternalComponentManager$RoutableComponents .process(InternalComponentManager.java:587)

at org.jivesoftware.openfire.spi.RoutingTableImpl.routeToComponent(RoutingTableImp l.java:352)

at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.jav a:237)

at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:179)

at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:85)

at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:84)

at org.jivesoftware.openfire.net.StanzaHandler.processPresence(StanzaHandler.java: 355)

at org.jivesoftware.openfire.net.ClientStanzaHandler.processPresence(ClientStanzaH andler.java:100)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:272)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:194)

at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:169)

at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived (AbstractIoFilterChain.java:570)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.common.IoFilterAdapter.messageReceived(IoFilterAdapter.java:80)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:58)

at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecF ilter.java:185)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java :239)

at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(Execut orFilter.java:283)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java: 886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)

at java.lang.Thread.run(Thread.java:662)

Server information:

Server Properties

Server Uptime: 49 minutes – started Jun 12, 2012 2:10:28 PM

Version: Openfire 3.7.1

Server Directory: /usr/share/openfire

Server Name: XXX.XXX

Environment

Java Version: 1.6.0_26 Sun Microsystems Inc. – Java HotSpot™ 64-Bit Server VM

Appserver: jetty/7.0.2-SNAPSHOT

Host Name: XXX

OS / Hardware: Linux / amd64

Locale / Timezone: en / Mountain Standard Time (-7 GMT)

Java Memory 257.55 MB of 2002.50 MB (12.9%) used

Hi,

OF-600 is related to the history bug you reported.

daryl