[ 
https://issues.apache.org/jira/browse/AXIS2-5473?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Lazarski resolved AXIS2-5473.
------------------------------------
    Resolution: Incomplete

  Closing as Incomplete. Filed against 1.6.x with Java 6 and Tomcat 7, all
  long past end of life. The XML parsing stack (Axiom, Woodstox) has been
  substantially updated in the 2.0.x line and corrupt XML handling has
  improved across all underlying libraries. No reproducer or follow-up
  provided. If anyone can reproduce 100% CPU on corrupt SOAP input with
  current code (2.0.x, Java 17+), please open a new issue with the specific
   corrupt message payload and steps to reproduce.



> System hangs (cpu 100%) after sending a corrupt soap message
> ------------------------------------------------------------
>
>                 Key: AXIS2-5473
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5473
>             Project: Axis2
>          Issue Type: Bug
>    Affects Versions: 1.6.1, 1.6.2
>         Environment: Tomcat 7.0.6
> Java 6.0.27
> Windows 7 (and unix too)
>            Reporter: Robert van Dijk
>            Priority: Critical
>         Attachments: SomeService.wsdl, SomeServiceHANG.aar
>
>
> If I sent (using soapui) an invalid soap message, the cpu usage goes up to 
> 100%. There's no response. After stopping the webserver, the cpu usage goes 
> back to normal.
>  
> There are some choice fields and an optional field in the request. If I mess 
> up one specific closing tag (example: see corrupt soap message below), the 
> problem occurs.
> It's easy to "trigger" this problem.
> - Generate code from wsdl
> - Produce an aar file (no skeleton implementation needed)
> - Deploy the aar (for example locally on your PC)
> - Use soapui for the invalid soap message
> - Windows task manager shows the performance
> Corrupt soap message
> **********************************************************************************************************************************************************
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
> xmlns:v1="http://www.abc.com/Search/v1.0/";>
>    <soapenv:Header/>
>    <soapenv:Body>
>       <v1:GetSearchByCriteriaRequest>
>          <UserId>a</UserId>
>          <SearchCriteria>
>             <byMerchantId>
>                <Next>
>                   <TerminalId>b</TerminalId>
>                   <IdentityId>c</IdentityId>
>                </Next>
>             </byMerchantId>
>                                                                               
>      <-- correct posistion </SearchCriteria> tag
>          <Amount>d</Amount>
>          </SearchCriteria>                                              <-- 
> wrong position </SearchCriteria> tag
>       </v1:GetSearchByCriteriaRequest>
>    </soapenv:Body>
> </soapenv:Envelope>
> WSDL
> **********************************************************************************************************************************************************
> <?xml version="1.0" encoding="UTF-8"?>
> <definitions name="Search" targetNamespace="http://www.abc.com/Search/v1.0/";
>       xmlns:tns="http://www.abc.com/Search/v1.0/"; 
> xmlns:xs="http://www.w3.org/2001/XMLSchema";
>       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
>       xmlns="http://schemas.xmlsoap.org/wsdl/";>
>       <wsdl:types>
>               <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>                       targetNamespace="http://www.abc.com/Search/v1.0/";>
>                       <xs:simpleType name="TerminalIdType">
>                               <xs:restriction base="xs:string">
>                                       <xs:minLength value="1" />
>                                       <xs:maxLength value="2" />
>                               </xs:restriction>
>                       </xs:simpleType>
>                       <xs:simpleType name="MerchantIdType">
>                               <xs:restriction base="xs:string">
>                                       <xs:minLength value="1" />
>                                       <xs:maxLength value="2" />
>                               </xs:restriction>
>                       </xs:simpleType>
>                       <xs:simpleType name="ItemType">
>                               <xs:restriction base="xs:string">
>                                       <xs:minLength value="1" />
>                                       <xs:maxLength value="2" />
>                               </xs:restriction>
>                       </xs:simpleType>
>                       <xs:simpleType name="AmountType">
>                               <xs:restriction base="xs:string">
>                                       <xs:minLength value="1" />
>                                       <xs:maxLength value="2" />
>                               </xs:restriction>
>                       </xs:simpleType>
>                       <xs:simpleType name="UserIdType">
>                               <xs:restriction base="xs:string">
>                                       <xs:minLength value="1" />
>                                       <xs:maxLength value="2" />
>                               </xs:restriction>
>                       </xs:simpleType>
>                       <xs:complexType name="ErrorCodeType">
>                               <xs:sequence>
>                                       <xs:element name="ErrCd" 
> type="xs:string" />
>                                       <xs:element name="ErrDesc" 
> type="xs:string" />
>                                       <xs:element name="ErrDetail" 
> type="xs:string" minOccurs="0" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="SearchDataType">
>                               <xs:sequence>
>                                       <xs:element name="TerminalId" 
> type="tns:TerminalIdType" />
>                                       <xs:element name="IdentityId" 
> type="tns:ItemType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="ActionDataType">
>                               <xs:sequence>
>                                       <xs:element name="TerminalId" 
> type="tns:TerminalIdType" />
>                                       <xs:element name="IdentityId" 
> type="tns:ItemType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="ContractIdKeyType">
>                               <xs:sequence>
>                                       <xs:element name="TerminalId" 
> type="tns:TerminalIdType" />
>                                       <xs:element name="IdentityId" 
> type="tns:ItemType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="ActionKeyType">
>                               <xs:sequence>
>                                       <xs:element name="TerminalId" 
> type="tns:TerminalIdType" />
>                                       <xs:element name="IdentityId" 
> type="tns:ItemType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="MerchantIdKeyType">
>                               <xs:sequence>
>                                       <xs:element name="MerchantId" 
> type="tns:MerchantIdType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="GetSearchByCriteriaRequestType">
>                               <xs:sequence>
>                                       <xs:element name="UserId" 
> type="tns:UserIdType" />
>                                       <xs:element name="SearchCriteria">
>                                               <xs:complexType>
>                                                       <xs:choice>
>                                                               <xs:element 
> name="byMerchantId">
>                                                                       
> <xs:complexType>
>                                                                               
> <xs:choice>
>                                                                               
>         <xs:element name="First" type="tns:MerchantIdKeyType" />
>                                                                               
>         <xs:element name="Next" type="tns:ActionKeyType" />
>                                                                               
> </xs:choice>
>                                                                       
> </xs:complexType>
>                                                               </xs:element>
>                                                               <xs:element 
> name="byContractId">
>                                                                       
> <xs:complexType>
>                                                                               
> <xs:choice>
>                                                                               
>         <xs:element name="First" type="tns:ContractIdKeyType" />
>                                                                               
>         <xs:element name="Next" type="tns:ActionKeyType" />
>                                                                               
> </xs:choice>
>                                                                       
> </xs:complexType>
>                                                               </xs:element>
>                                                       </xs:choice>
>                                               </xs:complexType>
>                                       </xs:element>
>                                       <xs:element name="Amount" minOccurs="0" 
> maxOccurs="1"
>                                               type="tns:AmountType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="GetSearchByCriteriaResponseType">
>                               <xs:sequence>
>                                       <xs:choice>
>                                               <xs:element name="ActionData" 
> type="tns:ActionDataType"
>                                                       minOccurs="0" 
> maxOccurs="unbounded" />
>                                               <xs:element name="Err" 
> type="tns:ErrorCodeType" />
>                                       </xs:choice>
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="ActionDataResultType">
>                               <xs:sequence>
>                                       <xs:element name="ActionData" 
> type="tns:ActionDataType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:element name="GetSearchByCriteriaRequest"
>                               type="tns:GetSearchByCriteriaRequestType" />
>                       <xs:element name="GetSearchByCriteriaResponse"
>                               type="tns:GetSearchByCriteriaResponseType" />
>               </xsd:schema>
>       </wsdl:types>
>       <wsdl:message name="GetSearchByCriteriaRequest">
>               <wsdl:part name="GetSearchByCriteriaRequest" 
> element="tns:GetSearchByCriteriaRequest" />
>       </wsdl:message>
>       <wsdl:message name="GetSearchByCriteriaResponse">
>               <wsdl:part name="GetSearchByCriteriaResponse"
>                       element="tns:GetSearchByCriteriaResponse" />
>       </wsdl:message>
>       <wsdl:portType name="SearchPortType">
>               <wsdl:operation name="GetSearchByCriteria">
>                       <wsdl:input message="tns:GetSearchByCriteriaRequest" />
>                       <wsdl:output message="tns:GetSearchByCriteriaResponse" 
> />
>               </wsdl:operation>
>       </wsdl:portType>
>       <wsdl:binding name="SearchBinding" type="tns:SearchPortType">
>               <soap:binding style="document"
>                       transport="http://schemas.xmlsoap.org/soap/http"; />
>               <wsdl:operation name="GetSearchByCriteria">
>                       <soap:operation
>                               
> soapAction="http://www.abc.com/Search/v1.0/GetSearchByCriteria"; />
>                       <wsdl:input>
>                               <soap:body use="literal" />
>                       </wsdl:input>
>                       <wsdl:output>
>                               <soap:body use="literal" />
>                       </wsdl:output>
>               </wsdl:operation>
>       </wsdl:binding>
>       <wsdl:service name="SomeService">
>               <wsdl:port name="SearchPortType" binding="tns:SearchBinding">
>                       <soap:address location="http://somewhere.on.the.web"; />
>               </wsdl:port>
>       </wsdl:service>
> </definitions>
> **********************************************************************************************************************************************************



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to