diff --git a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java
index 210daa32b71..e87dcea27da 100644
--- a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java
+++ b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java
@@ -689,6 +689,19 @@ public class AutoBuild {
return null;
}
+ /**
+ * Gets a relative path from from to to provided
+ * the latter is contained in the former. Otherwise returns null.
+ * @return a path or null
+ */
+ public static Path tryRelativize(Path from, Path to) {
+ Path relative = from.relativize(to);
+ if (relative.startsWith("..") || relative.isAbsolute()) {
+ return null;
+ }
+ return relative;
+ }
+
/**
* Installs dependencies for use by the TypeScript type checker.
*
@@ -727,6 +740,9 @@ public class AutoBuild { if (!(json instanceof JsonObject)) continue; JsonObject jsonObject = (JsonObject) json; file = file.toAbsolutePath(); + if (tryRelativize(sourceRoot, file) == null) { + continue; // Ignore package.json files outside the source root. + } packageJsonFiles.put(file, jsonObject); String name = getChildAsString(jsonObject, "name");