Add UnsafeDeserialization

This commit is contained in:
haby0
2021-05-12 12:18:26 +08:00
parent 0c724a8427
commit 12f47bcf24
38 changed files with 2054 additions and 3 deletions

View File

@@ -14,8 +14,8 @@ may have unforeseen effects, such as the execution of arbitrary code.
</p> </p>
<p> <p>
There are many different serialization frameworks. This query currently There are many different serialization frameworks. This query currently
supports Kryo, XmlDecoder, XStream, SnakeYaml, and Java IO serialization through supports Kryo, XmlDecoder, XStream, SnakeYaml, Hessian, JsonIO, YAMLBeans, Castor, Burlap,
<code>ObjectInputStream</code>/<code>ObjectOutputStream</code>. and Java IO serialization through <code>ObjectInputStream</code>/<code>ObjectOutputStream</code>.
</p> </p>
</overview> </overview>
@@ -75,6 +75,22 @@ Alvaro Muñoz &amp; Christian Schneider, RSAConference 2016:
SnakeYaml documentation on deserialization: SnakeYaml documentation on deserialization:
<a href="https://bitbucket.org/asomov/snakeyaml/wiki/Documentation#markdown-header-loading-yaml">SnakeYaml deserialization</a>. <a href="https://bitbucket.org/asomov/snakeyaml/wiki/Documentation#markdown-header-loading-yaml">SnakeYaml deserialization</a>.
</li> </li>
<li>
Hessian deserialization and related gadget chains:
<a href="https://paper.seebug.org/1137/">Hessian deserialization</a>.
</li>
<li>
Castor and Hessian java deserialization vulnerabilities:
<a href="https://securitylab.github.com/research/hessian-java-deserialization-castor-vulnerabilities/">Castor and Hessian deserialization</a>.
</li>
<li>
Remote code execution in JYaml library:
<a href="https://www.cybersecurity-help.cz/vdb/SB2020022512">JYaml deserialization</a>.
</li>
<li>
JsonIO deserialization vulnerabilities:
<a href="https://klezvirus.github.io/Advanced-Web-Hacking/Serialisation/">JsonIO deserialization</a>.
</li>
</references> </references>
</qhelp> </qhelp>

View File

@@ -21,6 +21,39 @@ class UnsafeDeserializationConfig extends TaintTracking::Configuration {
override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
override predicate isSink(DataFlow::Node sink) { sink instanceof UnsafeDeserializationSink } override predicate isSink(DataFlow::Node sink) { sink instanceof UnsafeDeserializationSink }
override predicate isAdditionalTaintStep(DataFlow::Node prod, DataFlow::Node succ) {
exists(ClassInstanceExpr cie |
cie.getConstructor().getDeclaringType() instanceof JsonReader and
cie.getArgument(0) = prod.asExpr() and
cie = succ.asExpr() and
not exists(SafeJsonIo sji | sji.hasFlowToExpr(cie.getArgument(1)))
)
or
exists(ClassInstanceExpr cie |
cie.getConstructor().getDeclaringType() instanceof YamlReader and
cie.getArgument(0) = prod.asExpr() and
cie = succ.asExpr()
)
or
exists(ClassInstanceExpr cie |
cie.getConstructor().getDeclaringType() instanceof UnSafeHessianInput and
cie.getArgument(0) = prod.asExpr() and
cie = succ.asExpr()
)
or
exists(ClassInstanceExpr cie |
cie.getConstructor().getDeclaringType() instanceof BurlapInput and
cie.getArgument(0) = prod.asExpr() and
cie = succ.asExpr()
)
or
exists(MethodAccess ma |
ma.getMethod() instanceof BurlapInputInitMethod and
ma.getArgument(0) = prod.asExpr() and
ma.getQualifier() = succ.asExpr()
)
}
} }
from DataFlow::PathNode source, DataFlow::PathNode sink, UnsafeDeserializationConfig conf from DataFlow::PathNode source, DataFlow::PathNode sink, UnsafeDeserializationConfig conf

View File

@@ -0,0 +1,20 @@
/**
* Provides classes and predicates for working with the Castor framework.
*/
import java
/**
* The class `org.exolab.castor.xml.Unmarshaller`.
*/
class Unmarshaller extends RefType {
Unmarshaller() { this.hasQualifiedName("org.exolab.castor.xml", "Unmarshaller") }
}
/** A method with the name `unmarshal` declared in `org.exolab.castor.xml.Unmarshaller`. */
class UnmarshalMethod extends Method {
UnmarshalMethod() {
this.getDeclaringType() instanceof Unmarshaller and
this.getName() = "unmarshal"
}
}

View File

@@ -0,0 +1,47 @@
/**
* Provides classes and predicates for working with the Hession framework.
*/
import java
/**
* The class `com.caucho.hessian.io.HessianInput` or `com.caucho.hessian.io.Hessian2Input`.
*/
class UnSafeHessianInput extends RefType {
UnSafeHessianInput() {
this.hasQualifiedName("com.caucho.hessian.io", ["HessianInput", "Hessian2Input"])
}
}
/**
* A HessianInput readObject method. This is either `HessianInput.readObject` or `Hessian2Input.readObject`.
*/
class UnSafeHessianInputReadObjectMethod extends Method {
UnSafeHessianInputReadObjectMethod() {
this.getDeclaringType() instanceof UnSafeHessianInput and
this.getName() = "readObject"
}
}
/**
* The class `com.caucho.burlap.io.BurlapInput`.
*/
class BurlapInput extends RefType {
BurlapInput() { this.hasQualifiedName("com.caucho.burlap.io", "BurlapInput") }
}
/** A method with the name `readObject` declared in `com.caucho.burlap.io.BurlapInput`. */
class BurlapInputReadObjectMethod extends Method {
BurlapInputReadObjectMethod() {
this.getDeclaringType() instanceof BurlapInput and
this.getName() = "readObject"
}
}
/** A method with the name `init` declared in `com.caucho.burlap.io.BurlapInput`. */
class BurlapInputInitMethod extends Method {
BurlapInputInitMethod() {
this.getDeclaringType() instanceof BurlapInput and
this.getName() = "init"
}
}

View File

@@ -0,0 +1,41 @@
/**
* Provides classes and predicates for working with the JYaml framework.
*/
import java
/**
* The class `org.ho.yaml.Yaml`.
*/
class JYaml extends RefType {
JYaml() { this.hasQualifiedName("org.ho.yaml", "Yaml") }
}
/**
* A JYaml unsafe load method. This is either `YAML.load` or
* `YAML.loadType` or `YAML.loadStream` or `YAML.loadStreamOfType`.
*/
class JYamlUnSafeLoadMethod extends Method {
JYamlUnSafeLoadMethod() {
this.getDeclaringType() instanceof JYaml and
this.getName() in ["load", "loadType", "loadStream", "loadStreamOfType"]
}
}
/**
* The class `org.ho.yaml.YamlConfig`.
*/
class JYamlConfig extends RefType {
JYamlConfig() { this.hasQualifiedName("org.ho.yaml", "YamlConfig") }
}
/**
* A JYamlConfig unsafe load method. This is either `YamlConfig.load` or
* `YAML.loadType` or `YamlConfig.loadStream` or `YamlConfig.loadStreamOfType`.
*/
class JYamlConfigUnSafeLoadMethod extends Method {
JYamlConfigUnSafeLoadMethod() {
this.getDeclaringType() instanceof JYamlConfig and
this.getName() in ["load", "loadType", "loadStream", "loadStreamOfType"]
}
}

View File

@@ -0,0 +1,41 @@
/**
* Provides classes and predicates for working with the Json-io framework.
*/
import java
import semmle.code.java.Maps
/**
* The class `com.cedarsoftware.util.io.JsonReader`.
*/
class JsonReader extends RefType {
JsonReader() { this.hasQualifiedName("com.cedarsoftware.util.io", "JsonReader") }
}
/** A method with the name `jsonToJava` declared in `com.cedarsoftware.util.io.JsonReader`. */
class JsonIoJsonToJavaMethod extends Method {
JsonIoJsonToJavaMethod() {
this.getDeclaringType() instanceof JsonReader and
this.getName() = "jsonToJava"
}
}
/** A method with the name `readObject` declared in `com.cedarsoftware.util.io.JsonReader`. */
class JsonIoReadObjectMethod extends Method {
JsonIoReadObjectMethod() {
this.getDeclaringType() instanceof JsonReader and
this.getName() = "readObject"
}
}
/**
* A call to `Map.put` method, set the value of the `USE_MAPS` key to `true`.
*/
class JsonIoSafeOptionalArgs extends MethodAccess {
JsonIoSafeOptionalArgs() {
this.getMethod().getDeclaringType().getASourceSupertype*() instanceof MapType and
this.getMethod().hasName("put") and
this.getArgument(0).(CompileTimeConstantExpr).getStringValue() = "USE_MAPS" and
this.getArgument(1).(CompileTimeConstantExpr).getBooleanValue() = true
}
}

View File

@@ -0,0 +1,20 @@
/**
* Provides classes and predicates for working with the YamlBeans framework.
*/
import java
/**
* The class `com.esotericsoftware.yamlbeans.YamlReader`.
*/
class YamlReader extends RefType {
YamlReader() { this.hasQualifiedName("com.esotericsoftware.yamlbeans", "YamlReader") }
}
/** A method with the name `read` declared in `com.esotericsoftware.yamlbeans.YamlReader`. */
class YamlReaderReadMethod extends Method {
YamlReaderReadMethod() {
this.getDeclaringType() instanceof YamlReader and
this.getName() = "read"
}
}

View File

@@ -2,6 +2,11 @@ import semmle.code.java.frameworks.Kryo
import semmle.code.java.frameworks.XStream import semmle.code.java.frameworks.XStream
import semmle.code.java.frameworks.SnakeYaml import semmle.code.java.frameworks.SnakeYaml
import semmle.code.java.frameworks.FastJson import semmle.code.java.frameworks.FastJson
import semmle.code.java.frameworks.JYaml
import semmle.code.java.frameworks.JsonIo
import semmle.code.java.frameworks.YamlBeans
import semmle.code.java.frameworks.Hessian
import semmle.code.java.frameworks.Castor
import semmle.code.java.frameworks.apache.Lang import semmle.code.java.frameworks.apache.Lang
class ObjectInputStreamReadObjectMethod extends Method { class ObjectInputStreamReadObjectMethod extends Method {
@@ -50,6 +55,29 @@ class SafeKryo extends DataFlow2::Configuration {
} }
} }
class SafeJsonIo extends DataFlow2::Configuration {
SafeJsonIo() { this = "UnsafeDeserialization::SafeJsonIo" }
override predicate isSource(DataFlow::Node src) {
exists(MethodAccess ma |
ma instanceof JsonIoSafeOptionalArgs and
src.asExpr() = ma.getQualifier()
)
}
override predicate isSink(DataFlow::Node sink) {
exists(MethodAccess ma |
ma.getMethod() instanceof JsonIoJsonToJavaMethod and
sink.asExpr() = ma.getArgument(1)
)
or
exists(ClassInstanceExpr cie |
cie.getConstructor().getDeclaringType() instanceof JsonReader and
sink.asExpr() = cie.getArgument(1)
)
}
}
predicate unsafeDeserialization(MethodAccess ma, Expr sink) { predicate unsafeDeserialization(MethodAccess ma, Expr sink) {
exists(Method m | m = ma.getMethod() | exists(Method m | m = ma.getMethod() |
m instanceof ObjectInputStreamReadObjectMethod and m instanceof ObjectInputStreamReadObjectMethod and
@@ -81,6 +109,27 @@ predicate unsafeDeserialization(MethodAccess ma, Expr sink) {
ma.getMethod() instanceof FastJsonParseMethod and ma.getMethod() instanceof FastJsonParseMethod and
not fastJsonLooksSafe() and not fastJsonLooksSafe() and
sink = ma.getArgument(0) sink = ma.getArgument(0)
or
ma.getMethod() instanceof JYamlUnSafeLoadMethod and
sink = ma.getArgument(0)
or
ma.getMethod() instanceof JYamlConfigUnSafeLoadMethod and
sink = ma.getArgument(0)
or
ma.getMethod() instanceof JsonIoJsonToJavaMethod and
sink = ma.getArgument(0) and
not exists(SafeJsonIo sji | sji.hasFlowToExpr(ma.getArgument(1)))
or
ma.getMethod() instanceof JsonIoReadObjectMethod and
sink = ma.getQualifier()
or
ma.getMethod() instanceof YamlReaderReadMethod and sink = ma.getQualifier()
or
ma.getMethod() instanceof UnSafeHessianInputReadObjectMethod and sink = ma.getQualifier()
or
ma.getMethod() instanceof UnmarshalMethod and sink = ma.getAnArgument()
or
ma.getMethod() instanceof BurlapInputReadObjectMethod and sink = ma.getQualifier()
) )
} }

View File

@@ -0,0 +1,98 @@
import java.util.HashMap;
import java.io.StringReader;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import com.cedarsoftware.util.io.JsonReader;
import com.esotericsoftware.yamlbeans.YamlReader;
import org.ho.yaml.Yaml;
import org.ho.yaml.YamlConfig;
import org.exolab.castor.xml.Unmarshaller;
import com.caucho.hessian.io.Hessian2Input;
import com.caucho.hessian.io.HessianInput;
import com.caucho.burlap.io.BurlapInput;
import com.caucho.hessian.io.Hessian2Input;
import com.caucho.hessian.io.HessianInput;
import java.io.ByteArrayInputStream;
@Controller
public class C {
@GetMapping(value = "jyaml")
public void bad1(HttpServletRequest request) throws Exception {
String data = request.getParameter("data");
Yaml.load(data); //bad
Yaml.loadStream(data); //bad
Yaml.loadStreamOfType(data, Object.class); //bad
Yaml.loadType(data, Object.class); //bad
org.ho.yaml.YamlConfig yamlConfig = new YamlConfig();
yamlConfig.load(data); //bad
yamlConfig.loadStream(data); //bad
yamlConfig.loadStreamOfType(data, Object.class); //bad
yamlConfig.loadType(data, Object.class); //bad
}
@GetMapping(value = "jsonio")
public void bad2(HttpServletRequest request) {
String data = request.getParameter("data");
HashMap hashMap = new HashMap();
hashMap.put("USE_MAPS", true);
JsonReader.jsonToJava(data); //bad
JsonReader.jsonToJava(data, hashMap); //good
JsonReader jr = new JsonReader(data, null); //bad
jr.readObject();
JsonReader jr1 = new JsonReader(data, hashMap); //good
jr1.readObject();
}
@GetMapping(value = "yamlbeans")
public void bad3(HttpServletRequest request) throws Exception {
String data = request.getParameter("data");
YamlReader r = new YamlReader(data);
r.read(); //bad
r.read(Object.class); //bad
r.read(Object.class, Object.class); //bad
}
@GetMapping(value = "hessian")
public void bad4(HttpServletRequest request) throws Exception {
byte[] bytes = request.getParameter("data").getBytes();
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
HessianInput hessianInput = new HessianInput(bis);
hessianInput.readObject(); //bad
hessianInput.readObject(Object.class); //bad
}
@GetMapping(value = "hessian2")
public void bad5(HttpServletRequest request) throws Exception {
byte[] bytes = request.getParameter("data").getBytes();
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
Hessian2Input hessianInput = new Hessian2Input(bis);
hessianInput.readObject(); //bad
hessianInput.readObject(Object.class); //bad
}
@GetMapping(value = "castor")
public void bad6(HttpServletRequest request) throws Exception {
Unmarshaller unmarshaller = new Unmarshaller();
unmarshaller.unmarshal(new StringReader(request.getParameter("data"))); //bad
}
@GetMapping(value = "burlap")
public void bad7(HttpServletRequest request) throws Exception {
byte[] serializedData = request.getParameter("data").getBytes();
ByteArrayInputStream is = new ByteArrayInputStream(serializedData);
BurlapInput burlapInput = new BurlapInput(is);
burlapInput.readObject(); //bad
BurlapInput burlapInput1 = new BurlapInput();
burlapInput1.init(is);
burlapInput1.readObject(); //bad
}
}

View File

@@ -25,6 +25,26 @@ edges
| B.java:12:31:12:51 | getInputStream(...) : InputStream | B.java:15:23:15:27 | bytes | | B.java:12:31:12:51 | getInputStream(...) : InputStream | B.java:15:23:15:27 | bytes |
| B.java:19:31:19:51 | getInputStream(...) : InputStream | B.java:23:29:23:29 | s | | B.java:19:31:19:51 | getInputStream(...) : InputStream | B.java:23:29:23:29 | s |
| B.java:27:31:27:51 | getInputStream(...) : InputStream | B.java:31:23:31:23 | s | | B.java:27:31:27:51 | getInputStream(...) : InputStream | B.java:31:23:31:23 | s |
| C.java:23:17:23:44 | getParameter(...) : String | C.java:24:13:24:16 | data |
| C.java:23:17:23:44 | getParameter(...) : String | C.java:25:19:25:22 | data |
| C.java:23:17:23:44 | getParameter(...) : String | C.java:26:25:26:28 | data |
| C.java:23:17:23:44 | getParameter(...) : String | C.java:27:17:27:20 | data |
| C.java:23:17:23:44 | getParameter(...) : String | C.java:30:19:30:22 | data |
| C.java:23:17:23:44 | getParameter(...) : String | C.java:31:25:31:28 | data |
| C.java:23:17:23:44 | getParameter(...) : String | C.java:32:31:32:34 | data |
| C.java:23:17:23:44 | getParameter(...) : String | C.java:33:23:33:26 | data |
| C.java:38:17:38:44 | getParameter(...) : String | C.java:43:25:43:28 | data |
| C.java:38:17:38:44 | getParameter(...) : String | C.java:48:3:48:4 | jr |
| C.java:56:17:56:44 | getParameter(...) : String | C.java:58:3:58:3 | r |
| C.java:56:17:56:44 | getParameter(...) : String | C.java:59:3:59:3 | r |
| C.java:56:17:56:44 | getParameter(...) : String | C.java:60:3:60:3 | r |
| C.java:65:18:65:45 | getParameter(...) : String | C.java:68:3:68:14 | hessianInput |
| C.java:65:18:65:45 | getParameter(...) : String | C.java:69:3:69:14 | hessianInput |
| C.java:74:18:74:45 | getParameter(...) : String | C.java:77:3:77:14 | hessianInput |
| C.java:74:18:74:45 | getParameter(...) : String | C.java:78:3:78:14 | hessianInput |
| C.java:84:43:84:70 | getParameter(...) : String | C.java:84:26:84:71 | new StringReader(...) |
| C.java:89:27:89:54 | getParameter(...) : String | C.java:92:3:92:13 | burlapInput |
| C.java:89:27:89:54 | getParameter(...) : String | C.java:96:3:96:14 | burlapInput1 |
| TestMessageBodyReader.java:20:55:20:78 | entityStream : InputStream | TestMessageBodyReader.java:22:18:22:52 | new ObjectInputStream(...) | | TestMessageBodyReader.java:20:55:20:78 | entityStream : InputStream | TestMessageBodyReader.java:22:18:22:52 | new ObjectInputStream(...) |
nodes nodes
| A.java:13:31:13:51 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | | A.java:13:31:13:51 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream |
@@ -65,6 +85,33 @@ nodes
| B.java:23:29:23:29 | s | semmle.label | s | | B.java:23:29:23:29 | s | semmle.label | s |
| B.java:27:31:27:51 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | | B.java:27:31:27:51 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream |
| B.java:31:23:31:23 | s | semmle.label | s | | B.java:31:23:31:23 | s | semmle.label | s |
| C.java:23:17:23:44 | getParameter(...) : String | semmle.label | getParameter(...) : String |
| C.java:24:13:24:16 | data | semmle.label | data |
| C.java:25:19:25:22 | data | semmle.label | data |
| C.java:26:25:26:28 | data | semmle.label | data |
| C.java:27:17:27:20 | data | semmle.label | data |
| C.java:30:19:30:22 | data | semmle.label | data |
| C.java:31:25:31:28 | data | semmle.label | data |
| C.java:32:31:32:34 | data | semmle.label | data |
| C.java:33:23:33:26 | data | semmle.label | data |
| C.java:38:17:38:44 | getParameter(...) : String | semmle.label | getParameter(...) : String |
| C.java:43:25:43:28 | data | semmle.label | data |
| C.java:48:3:48:4 | jr | semmle.label | jr |
| C.java:56:17:56:44 | getParameter(...) : String | semmle.label | getParameter(...) : String |
| C.java:58:3:58:3 | r | semmle.label | r |
| C.java:59:3:59:3 | r | semmle.label | r |
| C.java:60:3:60:3 | r | semmle.label | r |
| C.java:65:18:65:45 | getParameter(...) : String | semmle.label | getParameter(...) : String |
| C.java:68:3:68:14 | hessianInput | semmle.label | hessianInput |
| C.java:69:3:69:14 | hessianInput | semmle.label | hessianInput |
| C.java:74:18:74:45 | getParameter(...) : String | semmle.label | getParameter(...) : String |
| C.java:77:3:77:14 | hessianInput | semmle.label | hessianInput |
| C.java:78:3:78:14 | hessianInput | semmle.label | hessianInput |
| C.java:84:26:84:71 | new StringReader(...) | semmle.label | new StringReader(...) |
| C.java:84:43:84:70 | getParameter(...) : String | semmle.label | getParameter(...) : String |
| C.java:89:27:89:54 | getParameter(...) : String | semmle.label | getParameter(...) : String |
| C.java:92:3:92:13 | burlapInput | semmle.label | burlapInput |
| C.java:96:3:96:14 | burlapInput1 | semmle.label | burlapInput1 |
| TestMessageBodyReader.java:20:55:20:78 | entityStream : InputStream | semmle.label | entityStream : InputStream | | TestMessageBodyReader.java:20:55:20:78 | entityStream : InputStream | semmle.label | entityStream : InputStream |
| TestMessageBodyReader.java:22:18:22:52 | new ObjectInputStream(...) | semmle.label | new ObjectInputStream(...) | | TestMessageBodyReader.java:22:18:22:52 | new ObjectInputStream(...) | semmle.label | new ObjectInputStream(...) |
#select #select
@@ -94,4 +141,24 @@ nodes
| B.java:15:12:15:28 | parse(...) | B.java:12:31:12:51 | getInputStream(...) : InputStream | B.java:15:23:15:27 | bytes | Unsafe deserialization of $@. | B.java:12:31:12:51 | getInputStream(...) | user input | | B.java:15:12:15:28 | parse(...) | B.java:12:31:12:51 | getInputStream(...) : InputStream | B.java:15:23:15:27 | bytes | Unsafe deserialization of $@. | B.java:12:31:12:51 | getInputStream(...) | user input |
| B.java:23:12:23:30 | parseObject(...) | B.java:19:31:19:51 | getInputStream(...) : InputStream | B.java:23:29:23:29 | s | Unsafe deserialization of $@. | B.java:19:31:19:51 | getInputStream(...) | user input | | B.java:23:12:23:30 | parseObject(...) | B.java:19:31:19:51 | getInputStream(...) : InputStream | B.java:23:29:23:29 | s | Unsafe deserialization of $@. | B.java:19:31:19:51 | getInputStream(...) | user input |
| B.java:31:12:31:24 | parse(...) | B.java:27:31:27:51 | getInputStream(...) : InputStream | B.java:31:23:31:23 | s | Unsafe deserialization of $@. | B.java:27:31:27:51 | getInputStream(...) | user input | | B.java:31:12:31:24 | parse(...) | B.java:27:31:27:51 | getInputStream(...) : InputStream | B.java:31:23:31:23 | s | Unsafe deserialization of $@. | B.java:27:31:27:51 | getInputStream(...) | user input |
| C.java:24:3:24:17 | load(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:24:13:24:16 | data | Unsafe deserialization of $@. | C.java:23:17:23:44 | getParameter(...) | user input |
| C.java:25:3:25:23 | loadStream(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:25:19:25:22 | data | Unsafe deserialization of $@. | C.java:23:17:23:44 | getParameter(...) | user input |
| C.java:26:3:26:43 | loadStreamOfType(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:26:25:26:28 | data | Unsafe deserialization of $@. | C.java:23:17:23:44 | getParameter(...) | user input |
| C.java:27:3:27:35 | loadType(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:27:17:27:20 | data | Unsafe deserialization of $@. | C.java:23:17:23:44 | getParameter(...) | user input |
| C.java:30:3:30:23 | load(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:30:19:30:22 | data | Unsafe deserialization of $@. | C.java:23:17:23:44 | getParameter(...) | user input |
| C.java:31:3:31:29 | loadStream(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:31:25:31:28 | data | Unsafe deserialization of $@. | C.java:23:17:23:44 | getParameter(...) | user input |
| C.java:32:3:32:49 | loadStreamOfType(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:32:31:32:34 | data | Unsafe deserialization of $@. | C.java:23:17:23:44 | getParameter(...) | user input |
| C.java:33:3:33:41 | loadType(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:33:23:33:26 | data | Unsafe deserialization of $@. | C.java:23:17:23:44 | getParameter(...) | user input |
| C.java:43:3:43:29 | jsonToJava(...) | C.java:38:17:38:44 | getParameter(...) : String | C.java:43:25:43:28 | data | Unsafe deserialization of $@. | C.java:38:17:38:44 | getParameter(...) | user input |
| C.java:48:3:48:17 | readObject(...) | C.java:38:17:38:44 | getParameter(...) : String | C.java:48:3:48:4 | jr | Unsafe deserialization of $@. | C.java:38:17:38:44 | getParameter(...) | user input |
| C.java:58:3:58:10 | read(...) | C.java:56:17:56:44 | getParameter(...) : String | C.java:58:3:58:3 | r | Unsafe deserialization of $@. | C.java:56:17:56:44 | getParameter(...) | user input |
| C.java:59:3:59:22 | read(...) | C.java:56:17:56:44 | getParameter(...) : String | C.java:59:3:59:3 | r | Unsafe deserialization of $@. | C.java:56:17:56:44 | getParameter(...) | user input |
| C.java:60:3:60:36 | read(...) | C.java:56:17:56:44 | getParameter(...) : String | C.java:60:3:60:3 | r | Unsafe deserialization of $@. | C.java:56:17:56:44 | getParameter(...) | user input |
| C.java:68:3:68:27 | readObject(...) | C.java:65:18:65:45 | getParameter(...) : String | C.java:68:3:68:14 | hessianInput | Unsafe deserialization of $@. | C.java:65:18:65:45 | getParameter(...) | user input |
| C.java:69:3:69:39 | readObject(...) | C.java:65:18:65:45 | getParameter(...) : String | C.java:69:3:69:14 | hessianInput | Unsafe deserialization of $@. | C.java:65:18:65:45 | getParameter(...) | user input |
| C.java:77:3:77:27 | readObject(...) | C.java:74:18:74:45 | getParameter(...) : String | C.java:77:3:77:14 | hessianInput | Unsafe deserialization of $@. | C.java:74:18:74:45 | getParameter(...) | user input |
| C.java:78:3:78:39 | readObject(...) | C.java:74:18:74:45 | getParameter(...) : String | C.java:78:3:78:14 | hessianInput | Unsafe deserialization of $@. | C.java:74:18:74:45 | getParameter(...) | user input |
| C.java:84:3:84:72 | unmarshal(...) | C.java:84:43:84:70 | getParameter(...) : String | C.java:84:26:84:71 | new StringReader(...) | Unsafe deserialization of $@. | C.java:84:43:84:70 | getParameter(...) | user input |
| C.java:92:3:92:26 | readObject(...) | C.java:89:27:89:54 | getParameter(...) : String | C.java:92:3:92:13 | burlapInput | Unsafe deserialization of $@. | C.java:89:27:89:54 | getParameter(...) | user input |
| C.java:96:3:96:27 | readObject(...) | C.java:89:27:89:54 | getParameter(...) : String | C.java:96:3:96:14 | burlapInput1 | Unsafe deserialization of $@. | C.java:89:27:89:54 | getParameter(...) | user input |
| TestMessageBodyReader.java:22:18:22:65 | readObject(...) | TestMessageBodyReader.java:20:55:20:78 | entityStream : InputStream | TestMessageBodyReader.java:22:18:22:52 | new ObjectInputStream(...) | Unsafe deserialization of $@. | TestMessageBodyReader.java:20:55:20:78 | entityStream | user input | | TestMessageBodyReader.java:22:18:22:65 | readObject(...) | TestMessageBodyReader.java:20:55:20:78 | entityStream : InputStream | TestMessageBodyReader.java:22:18:22:52 | new ObjectInputStream(...) | Unsafe deserialization of $@. | TestMessageBodyReader.java:20:55:20:78 | entityStream | user input |

View File

@@ -1 +1 @@
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/snakeyaml-1.21:${testdir}/../../../stubs/xstream-1.4.10:${testdir}/../../../stubs/kryo-4.0.2:${testdir}/../../../stubs/jsr311-api-1.1.1:${testdir}/../../../stubs/fastjson-1.2.74 //semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/snakeyaml-1.21:${testdir}/../../../stubs/xstream-1.4.10:${testdir}/../../../stubs/kryo-4.0.2:${testdir}/../../../stubs/jsr311-api-1.1.1:${testdir}/../../../stubs/fastjson-1.2.74:${testdir}/../../../stubs/springframework-5.2.3:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/jyaml-1.3:${testdir}/../../../stubs/json-io-4.10.0:${testdir}/../../../stubs/yamlbeans-1.09:${testdir}/../../../stubs/hessian-4.0.38:${testdir}/../../../stubs/castor-1.4.1

View File

@@ -0,0 +1,11 @@
package org.exolab.castor.types;
import java.io.Serializable;
public final class AnyNode implements Serializable {
private static final long serialVersionUID = -4104117996051705975L;
public AnyNode() { }
}

View File

@@ -0,0 +1,12 @@
package org.exolab.castor.xml;
import org.xml.sax.DocumentHandler;
import org.xml.sax.SAXException;
/** @deprecated */
public interface EventProducer {
void setDocumentHandler(DocumentHandler var1);
void start() throws SAXException;
}

View File

@@ -0,0 +1,8 @@
package org.exolab.castor.xml;
import org.xml.sax.ErrorHandler;
public interface SAX2EventAndErrorProducer extends SAX2EventProducer {
void setErrorHandler(ErrorHandler var1);
}

View File

@@ -0,0 +1,11 @@
package org.exolab.castor.xml;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
public interface SAX2EventProducer {
void setContentHandler(ContentHandler var1);
void start() throws SAXException;
}

View File

@@ -0,0 +1,74 @@
package org.exolab.castor.xml;
import java.io.Reader;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.Source;
import org.exolab.castor.types.AnyNode;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.Parser;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
public class Unmarshaller {
public Unmarshaller() { }
public Object unmarshal(Reader reader) {
return null;
}
public Object unmarshal(EventProducer eventProducer) {
return null;
}
public Object unmarshal(SAX2EventProducer eventProducer) {
return null;
}
public Object unmarshal(AnyNode anyNode) {
return null;
}
public Object unmarshal(InputSource source) {
return null;
}
public Object unmarshal(Node node) {
return null;
}
public Object unmarshal(XMLEventReader eventReader) {
return null;
}
public Object unmarshal(XMLStreamReader streamReader) {
return null;
}
public Object unmarshal(SAX2EventAndErrorProducer eventProducer) {
return null;
}
public Object unmarshal(Source source) {
return null;
}
public static Object unmarshal(Class c, Reader reader) {
return null;
}
private static Unmarshaller createUnmarshaller(Class clazz) {
return null;
}
public static Object unmarshal(Class c, InputSource source) {
return null;
}
public static Object unmarshal(Class c, Node node) {
return null;
}
}

View File

@@ -0,0 +1,9 @@
package com.caucho.burlap.io;
import com.caucho.hessian.io.AbstractHessianInput;
public abstract class AbstractBurlapInput extends AbstractHessianInput {
public AbstractBurlapInput() {
}
}

View File

@@ -0,0 +1,110 @@
package com.caucho.hessian.io;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import org.w3c.dom.Node;
public abstract class AbstractHessianInput {
public AbstractHessianInput() {
}
public void init(InputStream is) {
}
public abstract String getMethod();
public void setSerializerFactory(SerializerFactory ser) {
}
public abstract int readCall() throws IOException;
public void skipOptionalCall() throws IOException {
}
public abstract String readHeader() throws IOException;
public abstract String readMethod() throws IOException;
public int readMethodArgLength() throws IOException {
return -1;
}
public abstract void startCall() throws IOException;
public abstract void completeCall() throws IOException;
public abstract Object readReply(Class var1) throws Throwable;
public abstract void startReply() throws Throwable;
public void startReplyBody() throws Throwable {
}
public abstract void completeReply() throws IOException;
public abstract boolean readBoolean() throws IOException;
public abstract void readNull() throws IOException;
public abstract int readInt() throws IOException;
public abstract long readLong() throws IOException;
public abstract double readDouble() throws IOException;
public abstract long readUTCDate() throws IOException;
public abstract String readString() throws IOException;
public Node readNode() throws IOException {
return null;
}
public abstract Reader getReader() throws IOException;
public abstract InputStream readInputStream() throws IOException;
public boolean readToOutputStream(OutputStream os) throws IOException {
return true;
}
public abstract byte[] readBytes() throws IOException;
public abstract Object readObject(Class var1) throws IOException;
public abstract Object readObject() throws IOException;
public abstract Object readRemote() throws IOException;
public abstract Object readRef() throws IOException;
public abstract int addRef(Object var1) throws IOException;
public abstract void setRef(int var1, Object var2) throws IOException;
public void resetReferences() {
}
public abstract int readListStart() throws IOException;
public abstract int readLength() throws IOException;
public abstract int readMapStart() throws IOException;
public abstract String readType() throws IOException;
public abstract boolean isEnd() throws IOException;
public abstract void readEnd() throws IOException;
public abstract void readMapEnd() throws IOException;
public abstract void readListEnd() throws IOException;
public void close() throws IOException {
}
}

View File

@@ -0,0 +1,11 @@
package com.caucho.hessian.io;
public abstract class AbstractSerializerFactory {
public AbstractSerializerFactory() {
}
public abstract Serializer getSerializer(Class var1) throws HessianProtocolException;
public abstract Deserializer getDeserializer(Class var1) throws HessianProtocolException;
}

View File

@@ -0,0 +1,274 @@
package com.caucho.burlap.io;
import com.caucho.hessian.io.SerializerFactory;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.TimeZone;
import org.w3c.dom.Node;
public class BurlapInput extends AbstractBurlapInput {
public BurlapInput() { }
public BurlapInput(InputStream is) { }
public void setSerializerFactory(SerializerFactory factory) { }
public SerializerFactory getSerializerFactory() {
return null;
}
public void init(InputStream is) { }
public String getMethod() {
return null;
}
public Throwable getReplyFault() {
return null;
}
public void startCall() throws IOException { }
public int readCall() throws IOException {
return 1;
}
public String readMethod() throws IOException {
return null;
}
public void completeCall() throws IOException { }
public Object readReply(Class expectedClass) throws Throwable {
return null;
}
public void startReply() throws Throwable { }
private Throwable prepareFault() throws IOException {
return null;
}
public void completeReply() throws IOException { }
public String readHeader() throws IOException {
return null;
}
public void readNull() throws IOException { }
public boolean readBoolean() throws IOException {
return true;
}
public byte readByte() throws IOException {
return 1;
}
public short readShort() throws IOException {
return 1;
}
public int readInt() throws IOException {
return 1;
}
public long readLong() throws IOException {
return 1L;
}
public float readFloat() throws IOException {
return 1.1F;
}
public double readDouble() throws IOException {
return 1.1;
}
public long readUTCDate() throws IOException {
return 1L;
}
public long readLocalDate() throws IOException {
return 1L;
}
public String readString() throws IOException {
return null;
}
public Node readNode() throws IOException {
return null;
}
public byte[] readBytes() throws IOException {
return null;
}
public int readLength() throws IOException {
return 1;
}
private HashMap readFault() throws IOException {
return null;
}
public Object readObject(Class cl) throws IOException {
return null;
}
public Object readObject() throws IOException {
return null;
}
public Object readRemote() throws IOException {
return null;
}
public Object readRef() throws IOException {
return null;
}
public int readListStart() throws IOException {
return 1;
}
public int readMapStart() throws IOException {
return 1;
}
public boolean isEnd() throws IOException {
return true;
}
public void readEnd() throws IOException { }
public void readMapEnd() throws IOException { }
public void readListEnd() throws IOException { }
public int addRef(Object ref) {
return 1;
}
public void setRef(int i, Object ref) { }
public Object resolveRemote(String type, String url) throws IOException {
return null;
}
public String readType() throws IOException {
return null;
}
private int parseInt() throws IOException {
return 1;
}
private long parseLong() throws IOException {
return 1L;
}
private double parseDouble() throws IOException {
return 1.1;
}
protected long parseDate() throws IOException {
return 1L;
}
protected long parseDate(Calendar calendar) throws IOException {
return 1L;
}
protected String parseString() throws IOException {
return null;
}
protected StringBuffer parseString(StringBuffer sbuf) throws IOException {
return null;
}
Node parseXML() throws IOException {
return null;
}
int readChar() throws IOException {
return 1;
}
protected byte[] parseBytes() throws IOException {
return null;
}
protected ByteArrayOutputStream parseBytes(ByteArrayOutputStream bos) throws IOException {
return null;
}
public void expectTag(int expectTag) throws IOException { }
protected int parseTag() throws IOException {
return 1;
}
private boolean isTagChar(int ch) {
return true;
}
protected int skipWhitespace() throws IOException {
return 1;
}
protected boolean isWhitespace(int ch) throws IOException {
return true;
}
int read(byte[] buffer, int offset, int length) throws IOException {
return 1;
}
int read() throws IOException {
return 1;
}
public Reader getReader() {
return null;
}
public InputStream readInputStream() {
return null;
}
public InputStream getInputStream() {
return null;
}
protected IOException expectBeginTag(String expect, String tag) {
return null;
}
protected IOException expectedChar(String expect, int ch) {
return null;
}
protected IOException expectedTag(String expect, int tag) {
return null;
}
protected IOException error(String message) {
return null;
}
protected static String tagName(int tag) {
return null;
}
}

View File

@@ -0,0 +1,26 @@
package com.caucho.hessian.io;
import java.io.IOException;
public interface Deserializer {
Class<?> getType();
boolean isReadResolve();
Object readObject(AbstractHessianInput var1) throws IOException;
Object readList(AbstractHessianInput var1, int var2) throws IOException;
Object readLengthList(AbstractHessianInput var1, int var2) throws IOException;
Object readMap(AbstractHessianInput var1) throws IOException;
Object[] createFields(int var1);
Object createField(String var1);
Object readObject(AbstractHessianInput var1, Object[] var2) throws IOException;
Object readObject(AbstractHessianInput var1, String[] var2) throws IOException;
}

View File

@@ -0,0 +1,24 @@
package com.caucho.hessian.io;
import java.io.IOException;
public class HessianProtocolException extends IOException {
public HessianProtocolException() {
}
public HessianProtocolException(String message) { }
public HessianProtocolException(String message, Throwable rootCause) { }
public HessianProtocolException(Throwable rootCause) { }
public Throwable getRootCause() {
return null;
}
public Throwable getCause() {
return null;
}
}

View File

@@ -0,0 +1,8 @@
package com.caucho.hessian.io;
import java.io.IOException;
public interface Serializer {
}

View File

@@ -0,0 +1,12 @@
package com.caucho.hessian.io;
public class SerializerFactory extends AbstractSerializerFactory {
public Serializer getSerializer(Class cl) throws HessianProtocolException {
return null;
}
public Deserializer getDeserializer(Class cl) throws HessianProtocolException {
return null;
}
}

View File

@@ -0,0 +1,111 @@
package com.caucho.hessian.io;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
public abstract class AbstractHessianInput {
public AbstractHessianInput() {
}
public void init(InputStream is) {
}
public abstract String getMethod();
public void setRemoteResolver(HessianRemoteResolver resolver) { }
public HessianRemoteResolver getRemoteResolver() {
return null;
}
public void setSerializerFactory(SerializerFactory ser) {
}
public abstract int readCall() throws IOException;
public void skipOptionalCall() throws IOException {
}
public abstract String readHeader() throws IOException;
public abstract String readMethod() throws IOException;
public int readMethodArgLength() throws IOException {
return -1;
}
public abstract void startCall() throws IOException;
public abstract void completeCall() throws IOException;
public abstract Object readReply(Class var1) throws Throwable;
public abstract void startReply() throws Throwable;
public void startReplyBody() throws Throwable {
}
public abstract void completeReply() throws IOException;
public abstract boolean readBoolean() throws IOException;
public abstract void readNull() throws IOException;
public abstract int readInt() throws IOException;
public abstract long readLong() throws IOException;
public abstract double readDouble() throws IOException;
public abstract long readUTCDate() throws IOException;
public abstract String readString() throws IOException;
public abstract Reader getReader() throws IOException;
public abstract InputStream readInputStream() throws IOException;
public boolean readToOutputStream(OutputStream os) throws IOException {
return true;
}
public abstract byte[] readBytes() throws IOException;
public abstract Object readObject(Class var1) throws IOException;
public abstract Object readObject() throws IOException;
public abstract Object readRemote() throws IOException;
public abstract Object readRef() throws IOException;
public abstract int addRef(Object var1) throws IOException;
public abstract void setRef(int var1, Object var2) throws IOException;
public void resetReferences() {
}
public abstract int readListStart() throws IOException;
public abstract int readLength() throws IOException;
public abstract int readMapStart() throws IOException;
public abstract String readType() throws IOException;
public abstract boolean isEnd() throws IOException;
public abstract void readEnd() throws IOException;
public abstract void readMapEnd() throws IOException;
public abstract void readListEnd() throws IOException;
public void close() throws IOException {
}
}

View File

@@ -0,0 +1,297 @@
package com.caucho.hessian.io;
import java.io.ByteArrayOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Hessian2Input extends AbstractHessianInput {
public Hessian2Input() { }
public Hessian2Input(InputStream is) { }
public String getMethod() {
return null;
}
public Throwable getReplyFault() {
return null;
}
public int readCall() throws IOException {
return 1;
}
public int readEnvelope() throws IOException {
return 1;
}
public void completeEnvelope() throws IOException { }
public String readMethod() throws IOException {
return null;
}
public int readMethodArgLength() throws IOException {
return 1;
}
public void startCall() throws IOException { }
public Object[] readArguments() throws IOException {
return null;
}
public void completeCall() throws IOException { }
public Object readReply(Class expectedClass) throws Throwable {
return null;
}
public void startReply() throws Throwable { }
private Throwable prepareFault(HashMap fault) throws IOException {
return null;
}
public void completeReply() throws IOException { }
public void completeValueReply() throws IOException { }
public String readHeader() throws IOException {
return null;
}
public int startMessage() throws IOException {
return 1;
}
public void completeMessage() throws IOException { }
public void readNull() throws IOException { }
public boolean readBoolean() throws IOException {
return true;
}
public short readShort() throws IOException {
return 11111;
}
public final int readInt() throws IOException {
return 1;
}
public long readLong() throws IOException {
return 1L;
}
public float readFloat() throws IOException {
return 1.1F;
}
public double readDouble() throws IOException {
return 1.1;
}
public long readUTCDate() throws IOException {
return 1L;
}
public int readChar() throws IOException {
return 1;
}
public int readString(char[] buffer, int offset, int length) throws IOException {
return 1;
}
public String readString() throws IOException {
return null;
}
public byte[] readBytes() throws IOException {
return null;
}
public int readByte() throws IOException {
return 1;
}
public int readBytes(byte[] buffer, int offset, int length) throws IOException {
return 1;
}
private HashMap readFault() throws IOException {
return null;
}
public Object readObject(Class cl) throws IOException {
return null;
}
public Object readObject() throws IOException {
return null;
}
private void readObjectDefinition(Class<?> cl) throws IOException { }
private Object readObjectInstance(Class<?> cl, Hessian2Input.ObjectDefinition def) throws IOException {
return null;
}
public Object readRemote() throws IOException {
return null;
}
public Object readRef() throws IOException {
return null;
}
public int readListStart() throws IOException {
return 1;
}
public int readMapStart() throws IOException {
return 1;
}
public boolean isEnd() throws IOException {
return true;
}
public void readEnd() throws IOException { }
public void readMapEnd() throws IOException { }
public void readListEnd() throws IOException { }
public int addRef(Object ref) {
return 1;
}
public void setRef(int i, Object ref) { }
public void resetReferences() { }
public void reset() { }
public void resetBuffer() { }
public Object readStreamingObject() throws IOException {
return null;
}
public Object resolveRemote(String type, String url) throws IOException {
return null;
}
public String readType() throws IOException {
return null;
}
public int readLength() throws IOException {
return 1;
}
private int parseInt() throws IOException {
return 1;
}
private long parseLong() throws IOException {
return 1L;
}
private double parseDouble() throws IOException {
return 1.1;
}
private void parseString(StringBuilder sbuf) throws IOException { }
private int parseChar() throws IOException {
return 1;
}
private boolean parseChunkLength() throws IOException {
return true;
}
private int parseUTF8Char() throws IOException {
return 1;
}
private int parseByte() throws IOException {
return 1;
}
public InputStream readInputStream() throws IOException {
return null;
}
int read(byte[] buffer, int offset, int length) throws IOException {
return 1;
}
public final int read() throws IOException {
return 1;
}
protected void unread() { }
private final boolean readBuffer() throws IOException {
return true;
}
public Reader getReader() {
return null;
}
protected IOException expect(String expect, int ch) throws IOException {
return null;
}
private String buildDebugContext(byte[] buffer, int offset, int length, int errorOffset) {
return null;
}
private void addDebugChar(StringBuilder sb, int ch) { }
protected String codeName(int ch) {
return null;
}
protected IOException error(String message) {
return null;
}
public void free() { }
public void close() throws IOException { }
static final class ObjectDefinition {
}
class ReadInputStream extends InputStream {
ReadInputStream() { }
public int read() throws IOException {
return 1;
}
public int read(byte[] buffer, int offset, int length) throws IOException {
return 1;
}
public void close() throws IOException { }
}
}

View File

@@ -0,0 +1,229 @@
package com.caucho.hessian.io;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
public class HessianInput extends AbstractHessianInput {
public HessianInput() {
}
public HessianInput(InputStream is) { }
public void init(InputStream is) { }
public String getMethod() {
return null;
}
public Throwable getReplyFault() {
return null;
}
public int readCall() throws IOException {
return 0;
}
public void skipOptionalCall() throws IOException { }
public String readMethod() throws IOException {
return null;
}
public void startCall() throws IOException { }
public void completeCall() throws IOException { }
public Object readReply(Class expectedClass) throws Throwable {
return null;
}
public void startReply() throws Throwable { }
public void startReplyBody() throws Throwable { }
private Throwable prepareFault() throws IOException {
return null;
}
public void completeReply() throws IOException { }
public void completeValueReply() throws IOException { }
public String readHeader() throws IOException {
return null;
}
public void readNull() throws IOException { }
public boolean readBoolean() throws IOException {
return true;
}
public short readShort() throws IOException {
return 11111;
}
public int readInt() throws IOException {
return 1;
}
public long readLong() throws IOException {
return 1L;
}
public float readFloat() throws IOException {
return 1.1F;
}
public double readDouble() throws IOException {
return 1.1;
}
public long readUTCDate() throws IOException {
return 1L;
}
public int readChar() throws IOException {
return 1;
}
public int readString(char[] buffer, int offset, int length) throws IOException {
return 1;
}
public String readString() throws IOException {
return null;
}
public byte[] readBytes() throws IOException {
return null;
}
public int readByte() throws IOException {
return 1;
}
public int readBytes(byte[] buffer, int offset, int length) throws IOException {
return 1;
}
private HashMap readFault() throws IOException {
return null;
}
public Object readObject(Class cl) throws IOException {
return null;
}
public Object readObject() throws IOException {
return null;
}
public Object readRemote() throws IOException {
return null;
}
public Object readRef() throws IOException {
return null;
}
public int readListStart() throws IOException {
return 1;
}
public int readMapStart() throws IOException {
return 1;
}
public boolean isEnd() throws IOException {
return true;
}
public void readEnd() throws IOException { }
public void readMapEnd() throws IOException { }
public void readListEnd() throws IOException { }
public int addRef(Object ref) {
return 1;
}
public void setRef(int i, Object ref) { }
public void resetReferences() { }
public Object resolveRemote(String type, String url) throws IOException {
return null;
}
public String readType() throws IOException {
return null;
}
public int readLength() throws IOException {
return 1;
}
private int parseInt() throws IOException {
return 1;
}
private long parseLong() throws IOException {
return 1L;
}
private double parseDouble() throws IOException {
return 1.1;
}
private int parseChar() throws IOException {
return 1;
}
private int parseUTF8Char() throws IOException {
return 1;
}
private int parseByte() throws IOException {
return 1;
}
public InputStream readInputStream() throws IOException {
return null;
}
int read(byte[] buffer, int offset, int length) throws IOException {
return 1;
}
final int read() throws IOException {
return 1;
}
public void close() { }
public Reader getReader() {
return null;
}
protected IOException expect(String expect, int ch) {
return null;
}
protected String codeName(int ch) {
return null;
}
protected IOException error(String message) {
return null;
}
}

View File

@@ -0,0 +1,8 @@
package com.caucho.hessian.io;
import java.io.IOException;
public interface HessianRemoteResolver {
Object lookup(String var1, String var2) throws IOException;
}

View File

@@ -0,0 +1,5 @@
package com.caucho.hessian.io;
public class SerializerFactory {
}

View File

@@ -0,0 +1,41 @@
package com.cedarsoftware.util.io;
import java.io.Closeable;
import java.io.InputStream;
import java.util.Map;
public class JsonReader implements Closeable {
public static Object jsonToJava(String json) {
return null;
}
public static Object jsonToJava(String json, Map<String, Object> optionalArgs) {
return null;
}
public static Object jsonToJava(InputStream inputStream, Map<String, Object> optionalArgs) {
return null;
}
public JsonReader() { }
public JsonReader(InputStream inp) { }
public JsonReader(Map<String, Object> optionalArgs) { }
public JsonReader(InputStream inp, boolean useMaps) { }
public JsonReader(InputStream inp, Map<String, Object> optionalArgs) { }
public JsonReader(String inp, Map<String, Object> optionalArgs) { }
public JsonReader(byte[] inp, Map<String, Object> optionalArgs) { }
public Object readObject() {
return null;
}
public void close() { }
}

View File

@@ -0,0 +1,77 @@
package org.ho.yaml;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.Reader;
public class Yaml {
public Yaml() {
}
public static Object load(Reader var0) {
return null;
}
public static Object load(InputStream var0) {
return null;
}
public static Object load(File var0) throws FileNotFoundException {
return null;
}
public static Object load(String var0) {
return null;
}
public static <T> T loadType(Reader var0, Class<T> var1) {
return null;
}
public static <T> T loadType(InputStream var0, Class<T> var1) throws FileNotFoundException {
return null;
}
public static <T> T loadType(File var0, Class<T> var1) throws FileNotFoundException {
return null;
}
public static <T> T loadType(String var0, Class<T> var1) {
return null;
}
public static YamlStream loadStream(Reader var0) {
return null;
}
public static YamlStream loadStream(InputStream var0) {
return null;
}
public static YamlStream loadStream(File var0) throws FileNotFoundException {
return null;
}
public static YamlStream loadStream(String var0) {
return null;
}
public static <T> YamlStream<T> loadStreamOfType(Reader var0, Class<T> var1) {
return null;
}
public static <T> YamlStream<T> loadStreamOfType(InputStream var0, Class<T> var1) {
return null;
}
public static <T> YamlStream<T> loadStreamOfType(File var0, Class<T> var1) throws FileNotFoundException {
return null;
}
public static <T> YamlStream<T> loadStreamOfType(String var0, Class<T> var1) throws FileNotFoundException {
return null;
}
}

View File

@@ -0,0 +1,122 @@
package org.ho.yaml;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.util.Iterator;
public class YamlConfig implements YamlOperations, Cloneable {
public YamlConfig() { }
public Object load(YamlDecoder var1) {
return null;
}
public Object load(InputStream var1) {
return null;
}
public Object load(Reader var1) {
return null;
}
public Object load(File var1) throws FileNotFoundException {
return null;
}
public Object load(String var1) {
return null;
}
public <T> T loadType(YamlDecoder var1, Class<T> var2) {
return null;
}
public <T> T loadType(InputStream var1, Class<T> var2) {
return null;
}
public <T> T loadType(Reader var1, Class<T> var2) {
return null;
}
public <T> T loadType(File var1, Class<T> var2) throws FileNotFoundException {
return null;
}
public <T> T loadType(String var1, Class<T> var2) {
return null;
}
public YamlStream loadStream(YamlDecoder var1) {
return null;
}
public YamlStream loadStream(Reader var1) {
return null;
}
public YamlStream loadStream(InputStream var1) {
return null;
}
public YamlStream loadStream(File var1) throws FileNotFoundException {
return null;
}
public YamlStream loadStream(String var1) {
return null;
}
public <T> YamlStream<T> loadStreamOfType(YamlDecoder var1, Class<T> var2) {
return null;
}
public <T> YamlStream<T> loadStreamOfType(Reader var1, Class<T> var2) {
return null;
}
public <T> YamlStream<T> loadStreamOfType(InputStream var1, Class<T> var2) {
return null;
}
public <T> YamlStream<T> loadStreamOfType(File var1, Class<T> var2) throws FileNotFoundException {
return null;
}
public <T> YamlStream<T> loadStreamOfType(String var1, Class<T> var2) {
return null;
}
public void dump(Object var1, File var2) throws FileNotFoundException { }
public void dump(Object var1, File var2, boolean var3) throws FileNotFoundException { }
public String dump(Object var1) {
return null;
}
public String dump(Object var1, boolean var2) {
return null;
}
public void dump(Object var1, OutputStream var2, boolean var3) { }
public void dump(Object var1, OutputStream var2) { }
public void dumpStream(Iterator var1, File var2, boolean var3) throws FileNotFoundException { }
public void dumpStream(Iterator var1, File var2) throws FileNotFoundException { }
public String dumpStream(Iterator var1) {
return null;
}
public String dumpStream(Iterator var1, boolean var2) {
return null;
}
}

View File

@@ -0,0 +1,16 @@
package org.ho.yaml;
import java.io.InputStream;
import java.io.Reader;
public class YamlDecoder {
YamlDecoder(InputStream var1, YamlConfig var2) { }
public YamlDecoder(InputStream var1) { }
public YamlDecoder(Reader var1) { }
public YamlDecoder(Reader var1, YamlConfig var2) { }
}

View File

@@ -0,0 +1,63 @@
package org.ho.yaml;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.util.Iterator;
public interface YamlOperations {
Object load(InputStream var1);
Object load(Reader var1);
Object load(File var1) throws FileNotFoundException;
Object load(String var1);
<T> T loadType(InputStream var1, Class<T> var2);
<T> T loadType(Reader var1, Class<T> var2);
<T> T loadType(File var1, Class<T> var2) throws FileNotFoundException;
<T> T loadType(String var1, Class<T> var2);
YamlStream loadStream(InputStream var1);
YamlStream loadStream(Reader var1);
YamlStream loadStream(File var1) throws FileNotFoundException;
YamlStream loadStream(String var1);
<T> YamlStream<T> loadStreamOfType(InputStream var1, Class<T> var2);
<T> YamlStream<T> loadStreamOfType(Reader var1, Class<T> var2);
<T> YamlStream<T> loadStreamOfType(File var1, Class<T> var2) throws FileNotFoundException;
<T> YamlStream<T> loadStreamOfType(String var1, Class<T> var2);
void dump(Object var1, File var2) throws FileNotFoundException;
void dump(Object var1, File var2, boolean var3) throws FileNotFoundException;
String dump(Object var1);
String dump(Object var1, boolean var2);
void dumpStream(Iterator var1, File var2) throws FileNotFoundException;
void dumpStream(Iterator var1, File var2, boolean var3) throws FileNotFoundException;
String dumpStream(Iterator var1);
String dumpStream(Iterator var1, boolean var2);
void dump(Object var1, OutputStream var2);
void dump(Object var1, OutputStream var2, boolean var3);
}

View File

@@ -0,0 +1,7 @@
package org.ho.yaml;
import java.util.Iterator;
public interface YamlStream<T> extends Iterable<T>, Iterator<T> {
}

View File

@@ -0,0 +1,7 @@
package com.esotericsoftware.yamlbeans;
public class YamlConfig {
public YamlConfig() { }
}

View File

@@ -0,0 +1,18 @@
package com.esotericsoftware.yamlbeans;
import java.io.IOException;
public class YamlException extends IOException {
public YamlException() {
}
public YamlException(String message, Throwable cause) {
}
public YamlException(String message) {
}
public YamlException(Throwable cause) {
}
}

View File

@@ -0,0 +1,28 @@
package com.esotericsoftware.yamlbeans;
import java.io.Reader;
public class YamlReader {
public YamlReader(Reader reader) { }
public YamlReader(Reader reader, YamlConfig config) { }
public YamlReader(String yaml) { }
public YamlReader(String yaml, YamlConfig config) { }
public Object read() throws YamlException {
return null;
}
public <T> T read(Class<T> type) throws YamlException {
return null;
}
public <T> T read(Class<T> type, Class elementType) throws YamlException {
return null;
}
}