WALA/com.ibm.wala.j2ee/dat/benignext.xml

561 lines
22 KiB
XML

<?xml version="1.0" ?>
<!-- specification of benign methods and some shortcuts for current analysis -->
<summary-spec>
<!-- the following are some shortcuts that are OK and helpful for CHA-like analysis,
to avoid spurious undecidability, or to account for JVM hacks -->
<classloader name="Extension">
<package name="com/ibm/ejs/ras" ignore="true"></package>
<package name="com/ibm/websphere/command">
<class name="CacheableCommandImpl">
<method name="&lt;clinit&gt;" descriptor="()V" />
<method name="&lt;init&gt;" descriptor="()V" />
<method name="execute" descriptor="()V">
<call type="virtual" name="performExecute" class="Lcom/ibm/websphere/command/CacheableCommandImpl" descriptor="()V" arg0="arg0" />
</method>
</class>
</package>
<package name="com/ibm/ws/webcontainer/jsp/runtime">
<class name="HttpJspBase">
<method name="&lt;clinit&gt;" descriptor="()V" />
<method name="getServletInfo" descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
</package>
<package name="javax/ejb">
<class name="EJBContext">
<method name="getCallerPrincipal" descriptor="()Ljava/security/Principal;">
<new def="x" class="Ljava/security/Principal" />
<return value="x" />
</method>
<method name="getEJBHome" descriptor="()Ljavax/ejb/EJBHome;" factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
</method>
<method name="getUserTransaction" descriptor="()Ljavax/transaction/UserTransaction;">
<new def="x" class="Ljavax/transaction/UserTransaction" />
<return value="x" />
</method>
<method name="setRollbackOnly" descriptor="()V" />
</class>
<class name="EJBHome">
<method name="getEJBMetaData" descriptor="()Ljavax/ejb/EJBMetaData;">
<new def="x" class="Ljavax/ejb/EJBMetaData" />
<return value="x" />
</method>
<method name="getHomeHandle" descriptor="()Ljavax/ejb/HomeHandle;">
<new def="x" class="Ljavax/ejb/HomeHandle" />
<return value="x" />
</method>
<method name="remove" descriptor="(Ljavax/ejb/Handle;)V" />
<method name="remove" descriptor="(Ljava/lang/Object;)V" />
</class>
<class name="EJBLocalHome">
<method name="remove" descriptor="(Ljava/lang/Object;)V" />
</class>
<class name="EJBLocalObject">
<method name="remove" descriptor="()V">
<new def="x" class="Ljavax/ejb/RemoveException" />
<throw value="x" />
<new def="y" class="Ljavax/ejb/EJBException" />
<throw value="y" />
</method>
</class>
<class name="EJBMetaData" allocatable="true"></class>
<class name="EJBObject">
<method name="getEJBHome" descriptor="()Ljavax/ejb/EJBHome;" factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
</method>
<method name="getHandle" descriptor="()Ljavax/ejb/Handle;">
<new def="x" class="Ljavax/ejb/Handle" />
<return value="x" />
<poison reason="questionable model of EJBObject.getHandle()" level="severe" />
</method>
<method name="isIdentical" descriptor="(Ljavax/ejb/EJBObject;)Z">
<poison reason="questionable model of EJBObject.isIdentical()" level="severe" />
</method>
<method name="remove" descriptor="()V">
<new def="x" class="Ljavax/ejb/RemoveException" />
<throw value="x" />
<new def="y" class="Ljava/rmi/RemoteException" />
<throw value="y" />
<poison reason="questionable model of EJBObject.remove()" level="severe" />
</method>
</class>
<class name="EntityContext" allocatable="true">
<method name="setRollbackOnly" descriptor="()V" />
</class>
<class name="Handle" allocatable="true">
<method name="getEJBObject" descriptor="()Ljavax/ejb/EJBObject;" factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
</method>
</class>
<class name="MessageDrivenContext" allocatable="true">
<method name="setRollbackOnly" descriptor="()V" />
</class>
<class name="SessionContext" allocatable="true">
<method name="getEJBObject" descriptor="()Ljavax/ejb/EJBObject;" factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
</method>
<method name="setRollbackOnly" descriptor="()V" />
</class>
</package>
<package name="javax/jms">
<class name="BytesMessage" allocatable="true"></class>
<class name="Connection" allocatable="true">
<method name="close" descriptor="()V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
<method name="start" descriptor="()V"></method>
</class>
<class name="Message" allocatable="true">
<method name="getBooleanProperty" descriptor="(Ljava/lang/String;)Z">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
<method name="getDoubleProperty" descriptor="(Ljava/lang/String;)D">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
<method name="getIntProperty" descriptor="(Ljava/lang/String;)I">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
<method name="getJMSMessageID" descriptor="()Ljava/lang/String;">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
<new def="y" class="Ljava/lang/String" />
<return value="y" />
</method>
<method name="getJMSRedelivered" descriptor="()Z">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
<method name="getLongProperty" descriptor="(Ljava/lang/String;)J">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
<method name="getShortProperty" descriptor="(Ljava/lang/String;)S">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
<method name="getStringProperty" descriptor="(Ljava/lang/String;)Ljava/lang/String;">
<new def="x" class="Ljavax/jms/QueueSession" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
<method name="setBooleanProperty" descriptor="(Ljava/lang/String;Z)V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
<method name="setDoubleProperty" descriptor="(Ljava/lang/String;D)V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
<method name="setIntProperty" descriptor="(Ljava/lang/String;I)V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
<method name="setLongProperty" descriptor="(Ljava/lang/String;J)V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
<method name="setShortProperty" descriptor="(Ljava/lang/String;S)V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
<method name="setStringProperty" descriptor="(Ljava/lang/String;Ljava/lang/String;)V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
</class>
<class name="MessageConsumer" allocatable="true">
<method name="setMessageListener" descriptor="(Ljavax/jms/MessageListener;)V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
</class>
<class name="MessageProducer" allocatable="true">
<method name="close" descriptor="()V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
</class>
<class name="ObjectMessage" allocatable="true">
<method name="getObject" descriptor="()Ljava/io/Serializable;" factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
<method name="setObject" descriptor="(Ljava/io/Serializable;)V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
</class>
<class name="QueueConnection" allocatable="true">
<method name="createQueueSession" descriptor="(ZI)Ljavax/jms/QueueSession;">
<new def="x" class="Ljavax/jms/QueueSession" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
</class>
<class name="QueueConnectionFactory" allocatable="true">
<method name="createQueueConnection" descriptor="()Ljavax/jms/QueueConnection;">
<new def="x" class="Ljavax/jms/QueueConnection" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
</class>
<class name="QueueSender" allocatable="true">
<method name="send" descriptor="(Ljavax/jms/Message;)V">
<new def="x" class="Ljavax/jms/QueueConnection" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
</class>
<class name="QueueSession" allocatable="true">
<method name="createSender" descriptor="(Ljavax/jms/Queue;)Ljavax/jms/QueueSender;">
<new def="x" class="Ljavax/jms/QueueSender" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
</class>
<class name="Session" allocatable="true">
<method name="close" descriptor="()V" />
<method name="createObjectMessage" descriptor="()Ljavax/jms/ObjectMessage;">
<new def="x" class="Ljavax/jms/ObjectMessage" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
<method name="createTextMessage" descriptor="()Ljavax/jms/TextMessage;">
<new def="x" class="Ljavax/jms/TextMessage" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
</class>
<class name="StreamMessage" allocatable="true"></class>
<class name="TextMessage" allocatable="true">
<method name="getText" descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
<method name="setText" descriptor="(Ljava/lang/String;)V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
</class>
<class name="TemporaryQueue" allocatable="true"></class>
<class name="TemporaryTopic" allocatable="true"></class>
<class name="TopicConnection" allocatable="true">
<method name="createTopicSession" descriptor="(ZI)Ljavax/jms/TopicSession;">
<new def="x" class="Ljavax/jms/TopicSession" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
</class>
<class name="TopicConnectionFactory" allocatable="true">
<method name="createTopicConnection" descriptor="()Ljavax/jms/TopicConnection;">
<new def="x" class="Ljavax/jms/TopicConnection" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
</class>
<class name="TopicPublisher" allocatable="true">
<method name="publish" descriptor="(Ljavax/jms/Message;)V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
</class>
<class name="TopicSession" allocatable="true">
<method name="createPublisher" descriptor="(Ljavax/jms/Topic;)Ljavax/jms/TopicPublisher;">
<new def="x" class="Ljavax/jms/TopicPublisher" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
<method name="createSubscriber" descriptor="(Ljavax/jms/Topic;)Ljavax/jms/TopicSubscriber;">
<new def="x" class="Ljavax/jms/TopicSubscriber" />
<return value="x" />
<new def="y" class="Ljavax/jms/JMSException" />
<throw value="y" />
</method>
</class>
<class name="TopicSubscriber" allocatable="true">
<method name="setMessageListener" descriptor="(Ljavax/jms/MessageListener;)V">
<new def="x" class="Ljavax/jms/JMSException" />
<throw value="x" />
</method>
</class>
</package>
<package name="javax/mail">
<class name="Transport" allocatable="true">
<method name="send" descriptor="(Ljavax/mail/Message;)V" />
</class>
<class name="URLName">
<method name="&lt;clinit&gt;" descriptor="()V" />
</class>
</package>
<package name="javax/mail/internet">
<class name="InternetAddress">
<method name="toString" descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="MailDateFormat">
<method name="&lt;clinit&gt;" descriptor="()V" />
</class>
<class name="MimeMessage">
<method name="&lt;clinit&gt;" descriptor="()V" />
<method name="setSubject" descriptor="(Ljava/lang/String;)V" />
</class>
<class name="MimeUtility">
<method name="&lt;clinit&gt;" descriptor="()V" />
</class>
</package>
<package name="javax/servlet">
<class name="ServletContext" allocatable="true">
<method name="log" descriptor="(Ljava/lang/String;)V" />
</class>
<class name="ServletOutputStream" allocatable="true">
<method name="write" descriptor="(I)V" />
</class>
<class name="ServletRequest" allocatable="true">
<method name="getProtocol" descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="ServletResponse" allocatable="true">
<method name="getWriter" descriptor="()Ljava/io/PrintWriter;">
<new def="x" class="Ljava/io/PrintWriter" />
<return value="x" />
</method>
<method name="setContentType" descriptor="(Ljava/lang/String;)V" />
</class>
</package>
<package name="javax/servlet/jsp">
<class name="JspFactory" allocatable="true">
<method name="getDefaultFactory" descriptor="()Ljavax/servlet/jsp/JspFactory;" static="true">
<new def="x" class="Ljavax/servlet/jsp/JspFactory" />
<return value="x" />
</method>
<method name="getPageContext" descriptor="(Ljavax/servlet/Servlet;Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljava/lang/String;ZIZ)Ljavax/servlet/jsp/PageContext;">
<new def="x" class="Ljavax/servlet/jsp/PageContext" />
<return value="x" />
</method>
<method name="releasePageContext" descriptor="(Ljavax/servlet/jsp/PageContext;)V"></method>
</class>
<class name="PageContext" allocatable="true">
<method name="forward" descriptor="(Ljava/lang/String;)V"></method>
<method name="getAttribute" descriptor="(Ljava/lang/String;)Ljava/lang/Object;" factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
</method>
<method name="getAttribute" descriptor="(Ljava/lang/String;I)Ljava/lang/Object;" factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
</method>
<method name="getOut" descriptor="()Ljavax/servlet/jsp/JspWriter;">
<new def="x" class="Ljavax/servlet/jsp/JspWriter" />
<return value="x" />
</method>
<method name="getServletConfig" descriptor="()Ljavax/servlet/ServletConfig;">
<new def="x" class="Lcom/ibm/wala/model/javax/servlet/ServletConfig" />
<return value="x" />
</method>
<method name="getServletContext" descriptor="()Ljavax/servlet/ServletContext;">
<call type="static" name="getModelInstance" class="Lcom/ibm/wala/model/javax/servlet/ServletContext" descriptor="()Ljavax/servlet/ServletContext;" def="x" />
<return value="x" />
</method>
<method name="getSession" descriptor="()Ljavax/servlet/http/HttpSession;">
<call type="static" name="getModelInstance" class="Lcom/ibm/wala/model/javax/servlet/http/HttpSession" descriptor="()Ljavax/servlet/http/HttpSession;" def="x" />
<return value="x" />
</method>
<method name="handlePageException" descriptor="(Ljava/lang/Exception;)V" />
<method name="handlePageException" descriptor="(Ljava/lang/Throwable;)V"></method>
<method name="setAttribute" descriptor="(Ljava/lang/String;Ljava/lang/Object;I)V" />
</class>
<class name="JspWriter" allocatable="true">
<method name="newLine" descriptor="()V" />
<method name="print" descriptor="(Z)V" />
<method name="print" descriptor="(C)V" />
<method name="print" descriptor="(I)V" />
<method name="print" descriptor="(J)V" />
<method name="print" descriptor="(F)V" />
<method name="print" descriptor="(D)V" />
<method name="print" descriptor="([C)V" />
<method name="print" descriptor="(Ljava/lang/String;)V" />
<method name="print" descriptor="(Ljava/lang/Object;)V" />
<method name="println" descriptor="(Z)V" />
<method name="println" descriptor="(C)V" />
<method name="println" descriptor="(I)V" />
<method name="println" descriptor="(J)V" />
<method name="println" descriptor="(F)V" />
<method name="println" descriptor="(D)V" />
<method name="println" descriptor="([C)V" />
<method name="println" descriptor="(Ljava/lang/String;)V" />
<method name="println" descriptor="(Ljava/lang/Object;)V" />
<method name="clear" descriptor="()V" />
<method name="clearBuffer" descriptor="()V" />
<method name="flush" descriptor="()V" />
<method name="close" descriptor="()V" />
</class>
</package>
<package name="javax/servlet/jsp/tagext" ignore="true"></package>
<package name="javax/transaction">
<class name="UserTransaction" allocatable="true">
<method name="begin" descriptor="()V">
<new def="x" class="Ljavax/transaction/NotSupportedException" />
<throw value="x" />
<new def="y" class="Ljavax/transaction/SystemException" />
<throw value="y" />
</method>
<method name="commit" descriptor="()V">
<new def="a" class="Ljavax/transaction/RollbackException" />
<throw value="a" />
<new def="b" class="Ljavax/transaction/SystemException" />
<throw value="b" />
<new def="c" class="Ljavax/transaction/HeuristicMixedException" />
<throw value="c" />
<new def="d" class="Ljavax/transaction/HeuristicRollbackException" />
<throw value="d" />
<new def="e" class="Ljava/lang/SecurityException" />
<throw value="e" />
<new def="f" class="Ljava/lang/IllegalStateException" />
<throw value="f" />
</method>
<method name="rollback" descriptor="()V">
<new def="b" class="Ljavax/transaction/SystemException" />
<throw value="b" />
<new def="e" class="Ljava/lang/SecurityException" />
<throw value="e" />
<new def="f" class="Ljava/lang/IllegalStateException" />
<throw value="f" />
</method>
</class>
</package>
<package name="org/apache/jasper/compiler" ignore="true" />
<package name="org/apache/taglibs/standard" ignore="true" />
<package name="org/apache/soap">
<class name="Fault">
<method name="getFaultCode" descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="getFaultString" descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
</package>
<package name="org/apache/soap/encoding">
<class name="SOAPMappingRegistry">
<method name="&lt;clinit&gt;" descriptor="()V" />
</class>
</package>
<package name="org/apache/soap/rpc">
<class name="Call">
<method name="invoke" descriptor="(Ljava/net/URL;Ljava/lang/String;)Lorg/apache/soap/rpc/Response;">
<new def="x" class="Lorg/apache/soap/rpc/Response" />
<return value="x" />
</method>
</class>
<class name="SOAPContext">
<method name="toString" descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
</package>
</classloader>
<classloader name="Application">
<package name="org/apache/commons/logging" ignore="true" />
<package name="org/apache/struts/action">
<class name="Action">
<method name="&lt;init&gt;" descriptor="()V">
<new def="x" class="Lorg/apache/struts/action/ActionServlet" />
<call type="special" name="&lt;init&gt;" class="Lorg/apache/struts/action/ActionServlet" descriptor="()V" arg0="x" />
<call type="virtual" name="setServlet" class="Lorg/apache/struts/action/Action" descriptor="(Lorg/apache/struts/action/ActionServlet;)V" arg0="arg0" arg1="x" />
</method>
</class>
<class name="ActionForward">
<method name="findForward" descriptor="(Ljava/lang/String;)Lorg/apache/struts/action/ActionForward;">
<new def="x" class="Lorg/apache/struts/action/ActionForward" />
<return value="x" />
</method>
</class>
<class name="ActionServlet">
<method name="init" descriptor="()V"></method>
</class>
</package>
<package name="org/apache/struts/upload">
<class name="FormFile">
<method name="destroy" descriptor="()V"></method>
<method name="getFileName" descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="MultipartRequestWrapper">
<method name="getParameterValues" descriptor="(Ljava/lang/String;)[Ljava/lang/String;">
<constant name="size" type="int" value="1" />
<new def="x" class="[Ljava/lang/String" size="size"/>
<new def="y" class="Ljava/lang/String" />
<aastore ref="x" value="y" index="0" />
<return value="x" />
</method>
</class>
</package>
<package name="org/apache/struts/util" ignore="true" />
<package name="org/apache/taglibs/standard/tlv" ignore="true" />
</classloader>
</summary-spec>