File tree Expand file tree Collapse file tree 6 files changed +24
-1
lines changed
ql/test/library-tests/MalformedPackageJson Expand file tree Collapse file tree 6 files changed +24
-1
lines changed Original file line number Diff line number Diff line change 1919import java .util .regex .Pattern ;
2020
2121import com .google .gson .Gson ;
22+ import com .google .gson .JsonParseException ;
23+
2224import com .semmle .js .dependencies .packument .Packument ;
2325
2426import 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
Original file line number Diff line number Diff 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.
Original file line number Diff line number Diff line change 1+ files
2+ | nullContents/package.json:0:0:0:0 | nullContents/package.json |
3+ | tst.js:0:0:0:0 | tst.js |
4+ packageJsons
Original file line number Diff line number Diff line change 1+ import javascript
2+
3+ query File files ( ) { any ( ) }
4+
5+ query PackageJSON packageJsons ( ) { any ( ) }
Original file line number Diff line number Diff line change 1+ null
Original file line number Diff line number Diff line change 1+ // This file is just here to ensure some JS code is extracted
2+ let x = 'hey' ;
You can’t perform that action at this time.
0 commit comments