Skip to content

Commit

Permalink
clean and link everything
Browse files Browse the repository at this point in the history
  • Loading branch information
jandro996 committed May 8, 2024
1 parent 27c1122 commit 68c410b
Show file tree
Hide file tree
Showing 25 changed files with 98 additions and 431 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.datadog.iast.overhead.OverheadController;
import datadog.trace.api.Config;
import datadog.trace.api.iast.IastContext;
import datadog.trace.instrumentation.iastinstrumenter.IastJSPClassListener;
import datadog.trace.instrumentation.iastinstrumenter.StratumListener;
import datadog.trace.util.stacktrace.StackWalker;
import javax.annotation.Nonnull;

Expand All @@ -14,7 +14,7 @@ public class Dependencies {
private final OverheadController overheadController;
private final StackWalker stackWalker;

private final IastJSPClassListener iastJSPClassListener;
private final StratumListener iastJSPClassListener;

final IastContext.Provider contextProvider;

Expand All @@ -24,13 +24,13 @@ public Dependencies(
@Nonnull final OverheadController overheadController,
@Nonnull final StackWalker stackWalker,
@Nonnull final IastContext.Provider contextProvider,
@Nonnull final IastJSPClassListener iastJSPClassListener) {
@Nonnull final StratumListener stratumListener) {
this.config = config;
this.reporter = reporter;
this.overheadController = overheadController;
this.stackWalker = stackWalker;
this.contextProvider = contextProvider;
this.iastJSPClassListener = iastJSPClassListener;
this.iastJSPClassListener = stratumListener;
}

public Config getConfig() {
Expand All @@ -49,7 +49,7 @@ public StackWalker getStackWalker() {
return stackWalker;
}

public IastJSPClassListener getIastJSPClassListener() {
public StratumListener getIastJSPClassListener() {
return iastJSPClassListener;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
import datadog.trace.api.iast.InstrumentationBridge;
import datadog.trace.api.iast.telemetry.IastMetricCollector;
import datadog.trace.api.iast.telemetry.Verbosity;
import datadog.trace.instrumentation.iastinstrumenter.IastJSPClassListener;
import datadog.trace.instrumentation.iastinstrumenter.StratumListener;
import datadog.trace.util.AgentTaskScheduler;
import datadog.trace.util.stacktrace.StackWalkerFactory;
import java.lang.reflect.Constructor;
Expand Down Expand Up @@ -104,7 +104,7 @@ public static void start(
overheadController,
StackWalkerFactory.INSTANCE,
contextProvider,
IastJSPClassListener.INSTANCE);
StratumListener.INSTANCE);
final boolean addTelemetry = config.getIastTelemetryVerbosity() != Verbosity.OFF;
iastModules(iast, dependencies).forEach(InstrumentationBridge::registerIastModule);
registerRequestStartedCallback(ss, addTelemetry, dependencies);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
import datadog.trace.instrumentation.iastinstrumenter.IastExclusionTrie;
import datadog.trace.instrumentation.iastinstrumenter.IastJSPClassListener;
import datadog.trace.instrumentation.iastinstrumenter.SourceMapperImpl;
import datadog.trace.util.stacktrace.StackWalker;
import java.util.Iterator;
import java.util.stream.Stream;
Expand All @@ -42,13 +42,10 @@ public abstract class SinkModuleBase {
protected final Reporter reporter;
protected final StackWalker stackWalker;

protected final IastJSPClassListener iastJSPClassListener;

protected SinkModuleBase(@Nonnull final Dependencies dependencies) {
overheadController = dependencies.getOverheadController();
reporter = dependencies.getReporter();
stackWalker = dependencies.getStackWalker();
iastJSPClassListener = dependencies.getIastJSPClassListener();
}

protected void report(final Vulnerability vulnerability) {
Expand Down Expand Up @@ -308,18 +305,13 @@ protected Location buildLocation(
protected final StackTraceElement getCurrentStackTrace() {
StackTraceElement stackTraceElement =
stackWalker.walk(SinkModuleBase::findValidPackageForVulnerability);
// TODO Call the listener to get the JSP class and line number
Pair<String, Integer> pair =
iastJSPClassListener.getFileAndLine(
SourceMapperImpl.INSTANCE.getFileAndLine(
stackTraceElement.getClassName(), stackTraceElement.getLineNumber());
if (pair != null) {
return new StackTraceElement(
stackTraceElement.getClassName(),
stackTraceElement.getMethodName(),
pair.getLeft(),
pair.getRight());
pair.getLeft(), stackTraceElement.getMethodName(), pair.getLeft(), pair.getRight());
}

return stackTraceElement;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package datadog.trace.agent.tooling.iast.stratum;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class EmbeddedStratum extends AbstractStratum implements Cloneable {
public class EmbeddedStratum extends AbstractStratum {
private final List<SourceMap> sourceMapList = new ArrayList<SourceMap>();

public EmbeddedStratum() {
Expand All @@ -15,15 +14,6 @@ public EmbeddedStratum(final String name) {
super(name);
}

@Override
public Object clone() {
EmbeddedStratum embeddedStratum = new EmbeddedStratum(getName());
for (Iterator<SourceMap> iter = sourceMapList.iterator(); iter.hasNext(); ) {
embeddedStratum.getSourceMapList().add((SourceMap) iter.next().clone());
}
return embeddedStratum;
}

public List<SourceMap> getSourceMapList() {
return sourceMapList;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* The fileInfo describes the translated-source file names
* https://jakarta.ee/specifications/debugging/2.0/jdsol-spec-2.0#filesection
*/
public class FileInfo implements Cloneable {
public class FileInfo {
private int fileId = -1;

private String inputFileName;
Expand All @@ -19,11 +19,6 @@ public FileInfo(final int fileId, final String inputFileName, final String input
this.inputFilePath = inputFilePath;
}

@Override
public Object clone() {
return new FileInfo(fileId, inputFileName, inputFilePath);
}

public int getFileId() {
return fileId;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
*
* <p>https://jakarta.ee/specifications/debugging/2.0/jdsol-spec-2.0#stratumsection
*/
public class LineInfo implements Cloneable {
public class LineInfo {
private int fileId = -1;

int inputStartLine;
Expand Down Expand Up @@ -55,15 +55,6 @@ public LineInfo(
this.outputLineIncrement = outputLineIncrement;
}

@Override
public Object clone() {
LineInfo lineInfo =
new LineInfo(fileId, inputStartLine, repeatCount, outputStartLine, outputLineIncrement);

lineInfo.setFileInfo(fileInfo);
return lineInfo;
}

public int getFileId() {
return fileId;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,25 @@

public class Resolver {
public SourceMap resolve(final SourceMap sourceMap) {
SourceMap result = (SourceMap) sourceMap.clone();
for (EmbeddedStratum stratum : result.getEmbeddedStratumList()) {
StratumExt outerStratum = result.getStratum(stratum.getName());
for (EmbeddedStratum stratum : sourceMap.getEmbeddedStratumList()) {
StratumExt outerStratum = sourceMap.getStratum(stratum.getName());
if (outerStratum != null) {
for (SourceMap embeddedSourceMap : stratum.getSourceMapList()) {
SourceMap resolvedEmbeddedSourceMap = resolve(embeddedSourceMap);
String outerFileName = resolvedEmbeddedSourceMap.getOutputFileName();
for (StratumExt embeddedStratum : resolvedEmbeddedSourceMap.getStratumList()) {
StratumExt resolvedStratum = result.getStratum(embeddedStratum.getName());
StratumExt resolvedStratum = sourceMap.getStratum(embeddedStratum.getName());
if (resolvedStratum == null) {
resolvedStratum = new StratumExt(embeddedStratum.getName());
result.getStratumList().add(resolvedStratum);
sourceMap.getStratumList().add(resolvedStratum);
}
resolve(new Context(outerStratum, outerFileName, resolvedStratum, embeddedStratum));
}
}
}
}
result.getEmbeddedStratumList().clear();
return result;
sourceMap.getEmbeddedStratumList().clear();
return sourceMap;
}

private void resolve(final Context context) {
Expand All @@ -50,7 +49,7 @@ private void resolve(final Context context, final LineInfo eli) {
getByPath(
context.resolvedStratum.getFileInfo(), eli.getFileInfo().getInputFilePath());
if (fileInfo == null) {
fileInfo = (FileInfo) eli.getFileInfo().clone();
fileInfo = eli.getFileInfo();
context.resolvedStratum.getFileInfo().add(fileInfo);
}
if (completeCount > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import java.util.Iterator;
import java.util.List;

public class SourceMap implements Cloneable {
public class SourceMap {
private String outputFileName;

private String defaultStratumName;
Expand All @@ -20,18 +20,6 @@ public SourceMap(final String outputFileName, final String defaultStratumName) {
this.defaultStratumName = defaultStratumName;
}

@Override
public Object clone() {
SourceMap sourceMap = new SourceMap(outputFileName, defaultStratumName);
for (Iterator<StratumExt> iter = stratumList.iterator(); iter.hasNext(); ) {
sourceMap.getStratumList().add((StratumExt) iter.next().clone());
}
for (Iterator<EmbeddedStratum> iter = embeddedStratumList.iterator(); iter.hasNext(); ) {
sourceMap.getEmbeddedStratumList().add((EmbeddedStratum) iter.next().clone());
}
return sourceMap;
}

public boolean isResolved() {
return embeddedStratumList.isEmpty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,17 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class StratumExt extends AbstractStratum implements Cloneable, Stratum {
public class StratumExt extends AbstractStratum implements Stratum {
private final List<FileInfo> fileInfo = new ArrayList<FileInfo>();

private int[] lineStart = null;

private final List<LineInfo> lineInfo = new ArrayList<LineInfo>();

private final List<VendorInfo> vendorInfo = new ArrayList<VendorInfo>();

private final List<UnknownInfo> unknownInfo = new ArrayList<UnknownInfo>();

private static final Logger LOG = LoggerFactory.getLogger(StratumExt.class);

public StratumExt() {
Expand Down Expand Up @@ -71,36 +64,6 @@ public String getSourceFile() {
return fileInfo.get(0).getInputFilePath();
}

@Override
public Object clone() {
StratumExt stratum = new StratumExt(getName());
for (Iterator<VendorInfo> iter = vendorInfo.iterator(); iter.hasNext(); ) {
stratum.getVendorInfo().add((VendorInfo) iter.next().clone());
}
for (Iterator<UnknownInfo> iter = unknownInfo.iterator(); iter.hasNext(); ) {
stratum.getUnknownInfo().add((UnknownInfo) iter.next().clone());
}
Map<FileInfo, FileInfo> fileInfoMap = new HashMap<FileInfo, FileInfo>();
for (Iterator<FileInfo> iter = fileInfo.iterator(); iter.hasNext(); ) {
FileInfo fileInfoOrig = iter.next();
FileInfo fileInfoClone = (FileInfo) fileInfoOrig.clone();
fileInfoMap.put(fileInfoOrig, fileInfoClone);
stratum.getFileInfo().add(fileInfoClone);
}

for (Iterator<LineInfo> iter = lineInfo.iterator(); iter.hasNext(); ) {
LineInfo lineInfo = iter.next();
FileInfo fileInfo = lineInfo.getFileInfo();
if (fileInfo != null) {
fileInfo = fileInfoMap.get(fileInfo);
lineInfo.setFileInfo(fileInfo);
}
stratum.addLineInfo(lineInfo);
}

return stratum;
}

public List<FileInfo> getFileInfo() {
return fileInfo;
}
Expand Down Expand Up @@ -139,38 +102,8 @@ public int[] getLineStart() {
return lineStart;
}

public List<VendorInfo> getVendorInfo() {
return vendorInfo;
}

public void setVendorInfo(final List<VendorInfo> vendorInfoList) {
vendorInfo.clear();
if (vendorInfoList != null) {
vendorInfo.addAll(vendorInfoList);
}
}

public List<UnknownInfo> getUnknownInfo() {
return unknownInfo;
}

public void setUnknownInfo(final List<UnknownInfo> unknownInfoList) {
unknownInfo.clear();
if (unknownInfoList != null) {
unknownInfo.addAll(unknownInfoList);
}
}

@Override
public String toString() {
return "Stratum [fileInfoList="
+ fileInfo
+ ", lineInfoList="
+ lineInfo
+ ", vendorInfoList="
+ vendorInfo
+ ", unknownInfoList="
+ unknownInfo
+ "]";
return "Stratum [fileInfoList=" + fileInfo + ", lineInfoList=" + lineInfo + "]";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
* Manages SMAP information for classes
* https://jakarta.ee/specifications/debugging/2.0/jdsol-spec-2.0#stratumsection
*/
public class StratumManager {
public class StratumManagerImpl {

private static final Logger LOG = LoggerFactory.getLogger(StratumManager.class);
private static final Logger LOG = LoggerFactory.getLogger(StratumManagerImpl.class);

private StratumManager() {
private StratumManagerImpl() {
// Prevent instantiation
}

Expand All @@ -26,7 +26,7 @@ private StratumManager() {

private boolean EMPTY_DEBUG_INFO;

public static final StratumManager INSTANCE = new StratumManager();
public static final StratumManagerImpl INSTANCE = new StratumManagerImpl();

public static boolean shouldBeAnalyzed(final String internalClassName) {
return internalClassName.contains("jsp")
Expand Down

This file was deleted.

Loading

0 comments on commit 68c410b

Please sign in to comment.