mirror of
https://github.com/github/codeql.git
synced 2025-12-20 10:46:30 +01:00
75 lines
1.8 KiB
Java
75 lines
1.8 KiB
Java
// Semmle test cases for rule CWE-209: Information Exposure Through an Error Message
|
|
// https://cwe.mitre.org/data/definitions/209.html
|
|
|
|
|
|
|
|
|
|
package test.cwe209.semmle.tests;
|
|
|
|
import java.io.PrintWriter;
|
|
import java.io.StringWriter;
|
|
import java.io.IOException;
|
|
import javax.servlet.ServletException;
|
|
import javax.servlet.http.Cookie;
|
|
import javax.servlet.http.HttpServlet;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
class Test extends HttpServlet {
|
|
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
|
throws ServletException, IOException {
|
|
try {
|
|
doSomeWork();
|
|
} catch (NullPointerException ex) {
|
|
// BAD: printing a stack trace back to the response
|
|
ex.printStackTrace(response.getWriter());
|
|
return;
|
|
}
|
|
|
|
try {
|
|
doSomeWork();
|
|
} catch (NullPointerException ex) {
|
|
// BAD: printing a stack trace back to the response
|
|
response.sendError(
|
|
HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
|
|
printTrace(ex));
|
|
return;
|
|
}
|
|
|
|
try {
|
|
doSomeWork();
|
|
} catch (NullPointerException ex) {
|
|
// BAD: printing a stack trace back to the response
|
|
response.sendError(
|
|
HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
|
|
printTrace2(ex));
|
|
return;
|
|
}
|
|
|
|
try {
|
|
doSomeWork();
|
|
} catch (Throwable ex) {
|
|
// BAD: printing an exception message back to the response
|
|
response.sendError(
|
|
HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
|
|
ex.getMessage());
|
|
}
|
|
}
|
|
|
|
private void doSomeWork() {
|
|
|
|
}
|
|
|
|
private static String printTrace(Throwable ex) {
|
|
StringWriter content = new StringWriter();
|
|
ex.printStackTrace(new PrintWriter(content));
|
|
return content.toString();
|
|
}
|
|
private static String printTrace2(Throwable ex) {
|
|
StringWriter content = new StringWriter();
|
|
PrintWriter pw = new PrintWriter(content);
|
|
ex.printStackTrace(pw);
|
|
return content.toString();
|
|
}
|
|
}
|