[ http://issues.apache.org/jira/browse/AXIS-2025?page=all ]
Shankar Unni updated AXIS-2025:
-------------------------------
Attachment: Axis1.2badmsgAPI.log
Client-side log for "String badmsg()" API, with Axis 1.2. No server-side
messages logged. Notice that in this one, the response is truncated: there is
no body at all, and no message logged on the server side. The client dies
because it tries to parse an empty body.
Tcpmon output:
REQUEST:
POST /test/foo.jws HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.2
Host: localhost
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Content-Length: 336
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<badmsg
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</soapenv:Body>
</soapenv:Envelope>
RESPONSE:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=0CC514F8120146FE2A6415C4D7277E0D; Path=/test
Content-Type: text/xml;charset=utf-8
Date: Tue, 31 May 2005 21:58:45 GMT
Connection: close
> Illegal XML characters in String arguments and return values cause XML
> exceptions in Axis calls
> -----------------------------------------------------------------------------------------------
>
> Key: AXIS-2025
> URL: http://issues.apache.org/jira/browse/AXIS-2025
> Project: Axis
> Type: Bug
> Components: Serialization/Deserialization
> Versions: 1.2
> Environment: All (but reproduced on WinXP).
> Axis 1.1 and 1.2
> Reporter: Shankar Unni
> Attachments: Axis1.1badmsgAPI.log, Axis1.1echoAPI.log, Axis1.2badmsgAPI.log,
> Axis1.2echoAPI.log
>
> Arguments and return values of Java type String are incorrectly handled if
> they contain non-printing illegal ASCII characters.
> Example 1: bad return values:
> - - - - - - - - - - - - - - -
> E.g. the string
> "bad char: " + (char)3 + "."
> Trivial example:
> foo.jws:
> public class foo {
> public String badmsg()
> {
> return "bad: " + (char)3 + ".";
> }
> }
> When calling this method and the server is running on Axis 1.1, it returns
> XML with the illegal character ASCII "3" in the text:
> <badmsgReturn xsi:type="xsd:string">bad: .</badmsgReturn>
> This causes an XML parse exception on the client side
> ("org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x3) was
> found in the element content of the document.")
> With Axis 1.2, the server doesn't even return a valid response: I get an HTTP
> 200 OK with an empty content, causing a different XML parse error.
> Example 2: bad parameter values:
> - - - - - - - - - - - - - - - -
> A similar problem exists when passing such a string from the the client side.
> If I have a method in foo.jws:
> public class foo {
> public String echo(String s)
> {
> return s;
> }
> }
> Then if I write an ordinary Java client to call this, and pass it a bad
> string as in the beginning of this post, I get an exception thrown while the
> call is being composed:
> java.lang.IllegalArgumentException: The char '0x3' in 'bad char: ?.' is not a
> valid XML character.
> This is somewhat absurd: shouldn't the serialization layer be encoding these
> illegal XML characters as entity escapes? They're entirely legal in the
> current locale (US), and normal Java code handles this character quite
> normally. Why should it croak when passed by XML/RPC?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira