Skip to content

Commit e825af2

Browse files
authored
Merge pull request #4548 from asgerf/js/handle-empty-package-json
Approved by erik-krogh
2 parents 68876b0 + c353f61 commit e825af2

File tree

6 files changed

+24
-1
lines changed

6 files changed

+24
-1
lines changed

javascript/extractor/src/com/semmle/js/dependencies/Fetcher.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import java.util.regex.Pattern;
2020

2121
import com.google.gson.Gson;
22+
import com.google.gson.JsonParseException;
23+
2224
import com.semmle.js.dependencies.packument.Packument;
2325

2426
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
@@ -84,7 +86,13 @@ public Packument getPackument(String packageName) throws IOException {
8486
}
8587
System.out.println("Fetching package metadata for " + packageName);
8688
try (Reader reader = new BufferedReader(new InputStreamReader(fetch("https://registry.npmjs.org/" + packageName)))) {
87-
return new Gson().fromJson(reader, Packument.class);
89+
Packument packument = new Gson().fromJson(reader, Packument.class);
90+
if (packument == null) {
91+
throw new IOException("Malformed packument for " + packageName);
92+
}
93+
return packument;
94+
} catch (JsonParseException ex) {
95+
throw new IOException("Malformed packument for " + packageName, ex);
8896
}
8997
}
9098

javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,9 @@ protected DependencyInstallationResult preparePackagesAndDependencies(Set<Path>
746746
if (file.getFileName().toString().equals("package.json")) {
747747
try {
748748
PackageJson packageJson = new Gson().fromJson(new WholeIO().read(file), PackageJson.class);
749+
if (packageJson == null) {
750+
continue;
751+
}
749752
file = file.toAbsolutePath();
750753
if (tryRelativize(sourceRoot, file) == null) {
751754
continue; // Ignore package.json files outside the source root.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
files
2+
| nullContents/package.json:0:0:0:0 | nullContents/package.json |
3+
| tst.js:0:0:0:0 | tst.js |
4+
packageJsons
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import javascript
2+
3+
query File files() { any() }
4+
5+
query PackageJSON packageJsons() { any() }
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
null
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// This file is just here to ensure some JS code is extracted
2+
let x = 'hey';

0 commit comments

Comments
 (0)