We are already scanning well (AbstractEncoder.java line#109) and
catching these invalid stuff (character < 0x20), but simply throwing a
Runtime exception here. The user is asking for encoding/escaping this
subset of characters appropriately so that they can be
decoded/unescaped on the clientside. Currently we can't provide this,
i think, because there is no standard way to do this, such that the
underlying XML parsers won't crib.

-venkat



On 7/9/05, Tom Jordahl (JIRA) <axis-dev@ws.apache.org> wrote:
>     [ 
> http://issues.apache.org/jira/browse/AXIS-2025?page=comments#action_12315334 ]
> 
> Tom Jordahl commented on AXIS-2025:
> -----------------------------------
> 
> So enhancing the scanning of strings does not seem like a viable option here?
> At this point, returning a reasonable fault may be the best we can do.
> 
> > 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: Apache Axis
> >         Type: Bug
> >   Components: Serialization/Deserialization
> >     Versions: 1.2
> >  Environment: All (but reproduced on WinXP).
> > Axis 1.1 and 1.2
> >     Reporter: Shankar Unni
> >     Assignee: Venkat Reddy
> >  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
> 
>

Reply via email to