Compare commits

..

2046 Commits

Author SHA1 Message Date
Jeremy Long
88a97769de added additional fine grained logging
Former-commit-id: 782dca3f3ed72da8e6c0b4eb9ee38783dd5690c8
2014-12-08 06:39:51 -05:00
Jeremy Long
589c761cb0 resolved null pointer exception
Former-commit-id: 3cc97c878a2bcc09c8a2cea3802278974d56b954
2014-12-08 05:41:58 -05:00
Jeremy Long
3e6787fd61 fixed null pointer exception
Former-commit-id: d66364e752e80fc90fb2fe226b272ba63879d104
2014-12-07 16:30:00 -05:00
Jeremy Long
aff52ee3f5 version 1.2.7
Former-commit-id: 9e666f3f6e65b67e7e144e6fc9ac75a3754c3ebb
2014-12-07 10:13:30 -05:00
Jeremy Long
4555b02592 checkstyle, findbugs, and pmd corrections
Former-commit-id: 85573816e82855343af1d41576ffc2479e8595ed
2014-12-06 13:16:06 -05:00
Jeremy Long
e1d4599a93 added test cases for issue #82
Former-commit-id: e823eb5eb2d19b252cb5bd65c3f74891478a69ee
2014-12-06 11:35:49 -05:00
Jeremy Long
1a1e141cb8 added jmockit
Former-commit-id: 385bef77dce7476ac0983c573b5909b4667e7899
2014-12-06 11:35:20 -05:00
Jeremy Long
33218f41e8 minor changes to support testing
Former-commit-id: ef1a8934c2a118216a06aeba786be0f732a6060a
2014-12-06 11:34:50 -05:00
Jeremy Long
8772cda47a added property to resolve issue #82
Former-commit-id: 711d6f538901aff6a9467fba460b62905dce75b4
2014-12-06 10:20:46 -05:00
Jeremy Long
512eb713e4 added EngineVersionCheck to resolve issue #82
Former-commit-id: ffc483a673187cf7f4a1c3a0ba8a46eb86532316
2014-12-06 10:18:46 -05:00
Jeremy Long
0f90d48c62 added EngineVersionCheck to service loader
Former-commit-id: 8047a173070d8ccaff0e5401472d885245b9ffba
2014-12-06 10:18:03 -05:00
Jeremy Long
658860e396 added new save properties method to support changes for issue #82
Former-commit-id: 56480f2d0233a03aed83ec0e8c8092f599cd0a62
2014-12-06 10:15:28 -05:00
Jeremy Long
7522dae557 changed settings to use a keys instead of hard-coded strings
Former-commit-id: a7c06468b17bd063ac7cf54bbd4982f29fcf529f
2014-12-06 10:14:31 -05:00
Jeremy Long
e34e65a3ba added filtered site resource
Former-commit-id: b6e3475b23a304841a655c4656ec753c9a81b707
2014-12-06 10:13:22 -05:00
Jeremy Long
5a001a2c32 moved withinRange to a utility class
Former-commit-id: d7bd22e42e6a96306e17229e449b9b052ddcb627
2014-12-06 07:44:07 -05:00
Jeremy Long
13a03eb250 moved withinRange to a utility class
Former-commit-id: aab76247ebf674c0e8cdeba56abedb1d510de41c
2014-12-06 07:37:47 -05:00
Jeremy Long
cd863b6cca added additional settings keys
Former-commit-id: 232c1cee317c0c7b7775dd111c82f1ad44882ab9
2014-12-06 07:36:42 -05:00
Jeremy Long
83b182dda5 modified Settings.getString to use a key instead of hard-coded string
Former-commit-id: 6c047637c1e2bb865d4bb504ff67851398a0d88e
2014-12-06 07:36:15 -05:00
Jeremy Long
3b90d1a564 updates to ensure that the logger is initialized correctly
Former-commit-id: c468df5c8dbd16edefae8e65ac28eed394c1fa87
2014-12-03 15:54:03 -05:00
Jeremy Long
d724855dfc minor updates and addition of JavaDoc
Former-commit-id: ac465b9c252dec453f8528b7e466bd61f8d7adb4
2014-12-03 15:53:22 -05:00
Jeremy Long
78008330fe changed order of operations to ensure the Maven engine doesn't call initialize twice
Former-commit-id: bbf613387adc87b605d0003b923421274979313d
2014-12-03 15:44:29 -05:00
Jeremy Long
e716aad224 corrected catch to use a more specific exception
Former-commit-id: 8bcd641d5be83f7ec8d182a55e0b5b52a73136d6
2014-12-03 05:57:10 -05:00
Jeremy Long
aa0d7cb4e9 added initialize method to resolve issue with initializing the logger
Former-commit-id: 9123f1243375c4443e6617db1de69bbcceaf1130
2014-12-03 05:56:33 -05:00
Jeremy Long
0cd43ce35c updates to reduce load times in multi-module projects per issue #168
Former-commit-id: adfaaaddffffa9b078d6b78a1ac031e6d8343f21
2014-12-02 06:43:54 -05:00
Jeremy Long
ac98c8e395 corrected the order of operations so that report aggregation can include the last module
Former-commit-id: 4169dedceee6f35c5357ee9841e94123acec575d
2014-12-01 06:51:57 -05:00
Jeremy Long
70a8fc09c6 Merge branch 'master' of github.com:jeremylong/DependencyCheck
Former-commit-id: f91bf00c7865a26cff5e6d4c8d3ea67d8c472a70
2014-11-30 07:47:14 -05:00
Jeremy Long
5b00d05e2e resolved issue #171
Former-commit-id: 28a30d4d76b2bb44247e26fae4601d32c2df12df
2014-11-30 07:46:28 -05:00
Steve Springett
28c1730a02 Merge remote-tracking branch 'origin/master'
Former-commit-id: 43610b7be6f438085abee3054254daedd7c09177
2014-11-26 15:03:37 +02:00
Steve Springett
c54483d36f Adding missing central analyzer config to scan agent
Former-commit-id: 948e67459ba06c7a4f76efaba16d0dfbbba1aa44
2014-11-26 15:03:10 +02:00
Jeremy Long
2dd02ff8cb Merge branch 'master' of github.com:jeremylong/DependencyCheck
Former-commit-id: 17a1b6ffc03aea4c52760a0e8f721f2a017f9c18
2014-11-26 07:03:42 -05:00
Jeremy Long
46c5501b7a changed ensureDataExists method to resolve startup time delays as part of a fix for issue #168
Former-commit-id: 15e85be9e5e01253f4864d18178da4c395b008eb
2014-11-25 05:58:16 -05:00
Jeremy Long
f154826749 added additionial verbose logging
Former-commit-id: 5d65d0186914d7045b6e5d51c10bc2feb8b2aab4
2014-11-25 05:57:02 -05:00
Jeremy Long
96383ef985 added a check to the open function to prevent losing a reference to an open database connection
Former-commit-id: 62e8386dce392d8c7fbc58febc4f5d4bc35e84f0
2014-11-25 05:55:59 -05:00
Jeremy Long
ab4b19dbab added a database check to ensure data exists - this replaces an older method and reduces startup time to help resolve issue #168
Former-commit-id: 4a8b2db9adf91cef2d89148f0c9b9c2327240221
2014-11-25 05:55:01 -05:00
Steve Springett
cdc53ac570 Minor changes to allow for more flexible use of ReportGenerator outside of the core.
Former-commit-id: ce728f6d7a229571d093ed93e829b6597d084507
2014-11-21 17:29:52 -06:00
Steve Springett
143cc1912e Merge remote-tracking branch 'origin/master'
Former-commit-id: 056feebeb11b34d5da1fb40f90cd1bd9aabeeb9a
2014-11-21 16:21:28 -06:00
Jeremy Long
0d90b676bc changed logging message that indicates default state was moved to the log file rather then standard console output
Former-commit-id: e67218ff539a0c2b34cc78d0208f42d815248d7e
2014-11-21 06:36:28 -05:00
Jeremy Long
5fadbb3d25 changed logging level indicating that the central analyzer is being used instead of NexusAnalyzer - since this is the standard use case it clutters the output, the message now only goes to the log
Former-commit-id: d3faf76c59cf5a80070299a99410b1593c91187c
2014-11-21 06:16:05 -05:00
Steve Springett
0ec99a3e12 Merge remote-tracking branch 'origin/master'
Former-commit-id: 9dab9bc03f82335c16dce4026f6a3a4fc860e5d1
2014-11-17 17:04:24 -06:00
Jeremy Long
1efbc44cc4 reformated
Former-commit-id: 60c32e7e0ccd8d1586e1c691ff1671d192646895
2014-11-17 06:45:19 -05:00
Steve Springett
735fcfeee2 Merge remote-tracking branch 'origin/master'
Former-commit-id: 5eb272a53b94c6346b7c43ee5f0acd45c2e2911c
2014-11-16 12:53:37 -06:00
Jeremy Long
4a77150566 version 1.2.7-SNAPSHOT
Former-commit-id: dfd0fd2bfa6929271e82c833ae5f3abc231219a6
2014-11-16 12:46:46 -05:00
Jeremy Long
180a420219 changed checkstyle off on markers
Former-commit-id: 1a6a854e34d834cf7532439279f55e5538eb1b5d
2014-11-16 12:46:28 -05:00
Jeremy Long
d12ba8f3ef version 1.2.7-SNAPSHOT
Former-commit-id: 8721c2c03a5ecb7f81ebaab4febefda2ff968991
2014-11-16 12:45:51 -05:00
Jeremy Long
f333ef76d9 version 1.2.6
Former-commit-id: d32ff0d840fc1d1a3153da73158adc125a589efc
2014-11-16 09:44:11 -05:00
Jeremy Long
af5ba6854e minor format change
Former-commit-id: 138be9fe55a362d21021b428b36ac65e621fd88a
2014-11-16 09:43:26 -05:00
Jeremy Long
8b7ce06793 initial version
Former-commit-id: efb4fec83ee9d788b3a5b21c683f52dd91113ec0
2014-11-16 08:25:13 -05:00
Jeremy Long
297a5e516f switched to using commons.io.FileUtils to delete files
Former-commit-id: e63309f20e7af759233db5486acc85f2c5c6806d
2014-11-16 08:24:55 -05:00
Jeremy Long
92b11526be updated log messages
Former-commit-id: 4f58ed64efbee2a2d604bdc5bd51394e152bd408
2014-11-16 08:24:17 -05:00
Jeremy Long
299350f655 correctly closed streams when extracting a gzip archive
Former-commit-id: 0a0c917cc3e4c4a004823fba9b7f8ab53f90d557
2014-11-16 06:21:02 -05:00
Jeremy Long
127eafc9b3 removed unused field
Former-commit-id: f44e6398f946abe2faa8ab1b2e3813a6831b9c66
2014-11-16 06:20:27 -05:00
Jeremy Long
ad1ad3a997 turned off checkstyle for a few lines
Former-commit-id: 62bf63649427363c0d86bd72acbb76a9772d1da3
2014-11-16 06:20:07 -05:00
Jeremy Long
82151c5b3f initial version of the test for DownloadTask
Former-commit-id: 5c82a5dda739525be25eed5ee763effe839758d0
2014-11-15 08:23:54 -05:00
Jeremy Long
90457c89ff updated NVD CVE URLs to use gzipped files
Former-commit-id: ca3c5ec40458f200a19cfcda36d518cf4de5a65a
2014-11-15 08:23:13 -05:00
Jeremy Long
3f3ac86d38 minor change to test cases
Former-commit-id: bbfc241e7576b508af819f7fe66892da0511e549
2014-11-15 08:22:43 -05:00
Jeremy Long
aa126039e5 updated NVD CVE URLs to use gzipped files
Former-commit-id: 25c0c2e5df3a6626fae5401209fac93b105b3392
2014-11-15 08:21:44 -05:00
Jeremy Long
662815b1ee added an extract phase if the downloaded file is a .gz
Former-commit-id: 0385e9a7922bc18eccb3b3075cc866c462ae6f2b
2014-11-15 08:21:03 -05:00
Jeremy Long
243c36849c noop
Former-commit-id: e155fa37527c62925bdb7e52d539329e3f9ebabe
2014-11-15 08:20:15 -05:00
Jeremy Long
52d5baaf3f reformated and added checkstyle corrections
Former-commit-id: c68e06287fdd09768c9fade7e534ca421899c9c5
2014-11-12 16:04:23 -05:00
Jeremy Long
89217f778e added package-info
Former-commit-id: 78bd4ce6243fadc58524ec48bb0d964205e044cd
2014-11-12 15:44:43 -05:00
Jeremy Long
9bc9bc9169 made enabled final
Former-commit-id: ded2d5de559091d8383ec26941f166018c33bb7a
2014-11-12 15:44:18 -05:00
Jeremy Long
6b73430473 added javadoc and changes suggested by checkstyle
Former-commit-id: 5f216b873b2d1845747fa4a77159399e818aef5a
2014-11-12 15:43:36 -05:00
Jeremy Long
5ca5bca3df updated javadoc
Former-commit-id: 7b00991a0cf90ca34c8c54b8297014b01e676b04
2014-11-11 15:13:01 -05:00
Jeremy Long
89ab382a18 added additional tests for compareto(version)
Former-commit-id: 0a02681251a30e6b675461b7487198a1cc7eb850
2014-11-11 14:43:47 -05:00
Jeremy Long
bad425c0d7 added test for isAffected
Former-commit-id: 36a6d28ff03e41307574ee40381b0833c5c4ab01
2014-11-11 14:43:15 -05:00
Jeremy Long
cdbbb1b94c made isAffected protected instead of private so that tests could be added
Former-commit-id: e7fd58900b4c8ebbaf06d476870defa4fc921628
2014-11-11 14:42:34 -05:00
Jeremy Long
0a9d8a9b22 reformated and changed logging level from info to fine
Former-commit-id: 035ca7c4d83322734f16f0b51f695bf7e4caa7b0
2014-11-11 14:41:40 -05:00
Jeremy Long
e662041d06 reformated and changed isEnabled to a getter by adding checkEnabled that is called during initialization
Former-commit-id: 3bfb0dd2da37d718708d047e425fb8b125dddf34
2014-11-11 14:41:08 -05:00
Jeremy Long
155464bc87 reformated and changed isEnabled to a getter by adding checkEnabled that is called during initialization
Former-commit-id: d5c1224709469fccacfad7e22cf5a44eecdcab36
2014-11-11 14:40:48 -05:00
Jeremy Long
06cd811ae4 fixed xlint unchecked call warnings
Former-commit-id: b74ee0e63568b7b222f0459ad66a7e281b2f2e2f
2014-11-11 13:41:20 -05:00
Steve Springett
1b2cd354db Merge remote-tracking branch 'origin/master'
Former-commit-id: 9856f3f26b7c6e53d8497b5ef87d7a070abe4e06
2014-11-10 11:32:52 -06:00
Jeremy Long
1b31268f59 Merge branch 'colezlaw-master'
Former-commit-id: fdb3a7414550752692ed807d71782f54cabbdac6
2014-11-10 05:41:10 -05:00
Will Stranathan
b57ef7291f No more separate proxy configuration for Central search. Renamed everything to do with Solr to Central.
Former-commit-id: 4bcee86abf4415bfafc386d10018d9fcb2f6cec4
2014-11-09 21:07:26 -05:00
Jeremy Long
c3bf6aa3f8 updated documentation to reflect change with NexusAnalyzer
Former-commit-id: 6a16bb3fc9f45a77d030d4d0f9999b764fd6fa12
2014-11-09 20:07:22 -05:00
Jeremy Long
d2fa14bbe2 updated documentation to reflect change with NexusAnalyzer
Former-commit-id: bbe1286d3ff9e4886b2eb52fe0ff04962922dd06
2014-11-09 20:06:32 -05:00
Jeremy Long
9b6e55e90c Merge branch 'colezlaw-master'
Former-commit-id: 80adf73356e1a2d24a53cf0f20af1356638084d8
2014-11-09 19:54:03 -05:00
Jeremy Long
afb07b651f Merge branch 'master' of github.com:colezlaw/DependencyCheck into colezlaw-master
Former-commit-id: 1158591ef47032ceed72654ebde6ef5f20782f75
2014-11-09 19:53:26 -05:00
Jeremy Long
e6806fdf2b patch to resolve issue #137 - the output path can be a file name if the format is not ALL
Former-commit-id: 05c638b21f09842781e105259ff58819e4bd3e8c
2014-11-09 19:52:42 -05:00
Will Stranathan
e5ff2cff4e Squashed commits for the new Solr/Central Search capability
Former-commit-id: 28ca3ca0ff5de4e097082f6f73003c0a67455efd
2014-11-08 10:54:02 -05:00
Will Stranathan
17d7d47b9a Renamed Solr to Central search
Former-commit-id: b8bdca6be89497f9baf29c8762803b4652e4974b
2014-11-08 10:53:17 -05:00
Will Stranathan
64e32061ab Re-making due to merge conflict from origin
Former-commit-id: 34a9f3410131b51048ee7f89e8aed2189dafe7fb
2014-11-08 08:50:53 -05:00
Will Stranathan
931110ba6c Initial checkin of work on a Solr analyzer which will replace Nexus on Internet checks
Former-commit-id: 09337f6416fa3140c00413426e17e39c4a1fadc6
2014-11-08 08:47:42 -05:00
Jeremy Long
d90e7820cd improved file path validation and error handling
Former-commit-id: 20d4011b031ac956e9803e807de75e7e505172ae
2014-11-08 06:08:21 -05:00
Jeremy Long
824898dba5 patch for issue #155
Former-commit-id: 57b144d94354c48c9bebabae2cc3d0c120fd2138
2014-11-07 06:42:54 -05:00
Jeremy Long
761dd61ed4 added additional test jar for issue #155
Former-commit-id: 0f8bf0a058eb263f13bd5d0d4262255153201eb5
2014-11-07 06:42:00 -05:00
Jeremy Long
89c63e6d87 checkstyle corrections
Former-commit-id: 77b519236f1afe7ad8eab0407d055e7f9ab4745f
2014-11-05 21:52:52 -05:00
Jeremy Long
a2361f9327 checkstyle corrections
Former-commit-id: b0ad94a8b1ce31891f788fd44e1a9df59775a691
2014-11-05 21:42:32 -05:00
Jeremy Long
ea15205be8 pmd corrections
Former-commit-id: 7cdc5b009285b9b428d4e731cb4b493a24453a9f
2014-11-05 21:31:00 -05:00
Jeremy Long
0a45048535 checkstyle corrections
Former-commit-id: 8807237a0a38f390298a19507ed55d9df156663f
2014-11-05 21:24:34 -05:00
Jeremy Long
1c51655ce3 checkstyle corrections
Former-commit-id: b7acf0b29d86a17f03f996d8d4b7a47e3a9f5eb9
2014-11-05 21:08:34 -05:00
Jeremy Long
7749f0da7c updated to exclude apache ant code from checkstyle
Former-commit-id: 06ab2cb9c3b15c182dac3cd1d0580f6002d607f8
2014-11-05 21:07:08 -05:00
Jeremy Long
5695238f95 updated to exclude apache ant code from PMD and findbugs
Former-commit-id: ce8b95e5f7ba4a98036cce46edc066ff2f2afb79
2014-11-05 21:06:23 -05:00
Jeremy Long
e1feeb7e21 removed failing test case
Former-commit-id: ab7f81d133a7c8cbfed52300e3f31a92121206b7
2014-11-05 19:18:41 -05:00
Jeremy Long
84fecaf040 updated documentation to show that Ant style paths and excludes can now be used
Former-commit-id: be99efc13478905e282d292986821a1851d0f389
2014-11-05 06:26:58 -05:00
Jeremy Long
da77727673 changes to support Ant style paths to resolve issue #153
Former-commit-id: b1666d6652891c4b012457fd5de7f8230938fb45
2014-11-05 06:20:15 -05:00
Jeremy Long
f8c913a3e8 small modification to warnings
Former-commit-id: 1ee729d27fdd7f394df0ea00efcb9f5e2bf663cd
2014-11-05 06:19:43 -05:00
Jeremy Long
2024881ee1 fixed logging level when files cannot be deleted
Former-commit-id: d62acbe447b5cc78b992d910c9431c006e658b2e
2014-11-05 06:19:14 -05:00
Jeremy Long
35ed3a51e5 initial version of InvalidScanPathException
Former-commit-id: a1f909f4e3988ae2f5f00fe72033bfdd7ef89676
2014-11-05 06:17:27 -05:00
Jeremy Long
24b1c4d0a4 removed wild card pattern matching during scan
Former-commit-id: 183963237c378641467f7277f68ba74156442485
2014-11-04 05:50:58 -05:00
Jeremy Long
7ec2458fb5 moved CliParser
Former-commit-id: 69ea743196109849d078df8f7071af0a3027fe99
2014-11-04 05:33:18 -05:00
Jeremy Long
175feaea23 added a modified copy of DirectoryScanner from Apache Ant to resolve issue #153
Former-commit-id: e37eb42cc574e4255533a0e7fbe78f5ed0c83146
2014-11-04 05:27:46 -05:00
Jeremy Long
dda6cf728b added suppression for opendj-ldap-sdk to fix issue #165
Former-commit-id: e8dc84bea2350eb5539475cf77650fafb118f3a4
2014-11-01 07:08:00 -04:00
Jeremy Long
a7fd410b01 stopped trimming org and com off of the groupid so it is consistent with other analyzers
Former-commit-id: c22d3b7af9af00c28ee0df80ba706f70399b80ef
2014-11-01 06:51:05 -04:00
Jeremy Long
d281c36733 updated suppression rule for jersey-client
Former-commit-id: 81920e19da3c29de46207c2132f225cb8c77a840
2014-11-01 06:35:28 -04:00
Jeremy Long
dc91e44c0a added jersey-client 1.11.1 as an optional test dependency
Former-commit-id: d837418656cbfd857adb90662a4d2604fd77a78e
2014-11-01 06:35:05 -04:00
Jeremy Long
7967a858f4 Merge branch 'ctrl-alt-dev-master'
Former-commit-id: 18b9ce0c578195a3275c4cb54ed14f6aff953d2b
2014-10-25 08:10:14 -04:00
Jeremy Long
2081407e38 added pom evidence to dependency - yes, this moves some analysis to the plugin; but in this case that is okay and will allow future enhancements
Former-commit-id: f69fd0701a8db1ab729199c4090dee1cd023d114
2014-10-25 08:09:45 -04:00
Jeremy Long
976eabd527 noop
Former-commit-id: 8c867c80dfb8180ba308837a09b33ac17fd8273a
2014-10-25 08:08:26 -04:00
Jeremy Long
b6d6a5de2b minor changes to clean up test cases
Former-commit-id: 62d409fa6f50d3bbec881277a4604acca7278faa
2014-10-25 08:07:56 -04:00
Jeremy Long
2d58cfe0ce fixed link to the NVD
Former-commit-id: 73ca530e569d4376999c155a8bc1256d935209bf
2014-10-25 08:07:20 -04:00
Jeremy Long
9df8bdff5f cleaned up code to use isEmpty instead of "".equals(string)
Former-commit-id: 8469f91a948ab2ab5b0ce61865a0b11cd6d11717
2014-10-25 08:06:56 -04:00
Jeremy Long
c86b821951 suppressed warning on unchecked cast
Former-commit-id: 633151a31b613071c7bd3e939c6a5c16864b8b88
2014-10-25 08:06:15 -04:00
Jeremy Long
4def086bf9 removed comments
Former-commit-id: 2c48f5b93a97a0642fbc37edd603b0d0baca4368
2014-10-25 08:05:26 -04:00
Jeremy Long
885c890d7d changed the analyzer to use the actual file name rather then the display name
Former-commit-id: 9cc348aaef8fac5e6c64220d94428f168ea8855b
2014-10-25 08:05:01 -04:00
Jeremy Long
06060a6694 improved error handling of invalid search strings
Former-commit-id: 97250e44b27e009b2480d25f8c2ebb7566038086
2014-10-25 08:04:33 -04:00
Jeremy Long
70667814f6 changed display name of files contained in archives so that it doesn't look like an invalid path
Former-commit-id: db3a7edadef81dd7e66c68cf0f4cdf43e12936b6
2014-10-25 08:03:47 -04:00
Jeremy Long
766b7a940c changed scan methods to return a list of dependencies instead of void
Former-commit-id: f0fd1e06708de3159acff0147968b5508a54fc05
2014-10-25 08:02:36 -04:00
Jeremy Long
0c37586357 added Xlint:unchecked
Former-commit-id: e26970bf2cd4606b777bddfc806ba74227da9cba
2014-10-25 08:00:11 -04:00
Jeremy Long
b4aa55ce1f Merge branch 'master' of github.com:ctrl-alt-dev/DependencyCheck into ctrl-alt-dev-master
Former-commit-id: 4d1ab5ecacf0ca7354f57d3a49accd5a173e0a26
2014-10-24 05:36:40 -04:00
Jeremy Long
109443ce77 changed the name property of dependencies identified within an archive
Former-commit-id: 5d778afea68c881efea628d9ecc28596d3cbc9d6
2014-10-23 06:09:39 -04:00
Will Stranathan
5f38741831 Initial checkin of work on a Solr analyzer which will replace Nexus on Internet checks
Former-commit-id: 7b51d0cb1d23122bc73261424b66df24f72370cd
2014-10-22 22:35:03 -04:00
Jeremy Long
c6f391501d added test case for patch to issue #156
Former-commit-id: 8fa1de0566760a41d65614921f4bb764178151f8
2014-10-22 21:43:23 -04:00
Jeremy Long
d1f3105fbd added appropriate sorting to resolve issue #156
Former-commit-id: b5d0dd3e9d337417ea3483b491035009269eaa5c
2014-10-22 21:42:51 -04:00
Jeremy Long
8f88ca9d3d corrected compareTo to use file path, not just file name
Former-commit-id: 98e19c402cd5824aed4b3b4923b7ef72359752cf
2014-10-22 21:12:40 -04:00
Erik Hooijmeijer
f9e4ca0cc2 corrected javadoc
Former-commit-id: 3e0533a8a36afcacb647610f352bfd854e505272
2014-10-22 19:10:54 +02:00
Erik Hooijmeijer
5caf023677 added excludeInternalGroupIds configuration parameter that allows the exclusion of groupIds of internal projects. This is to speed up analysis as internal projects have no public vulnerabilites nor a sonatype listing but do frequently have names that collide with other libraries. The parameter can have multiple values, e.g. <excludeInternalGroupIds><groupId>nl.someinteral.project</groupId><groupId>org.another.one</groupId></excludeInternalGroupIds>
Former-commit-id: ffa0716366c6c7b65d1181f2bd945472b75b5483
2014-10-22 19:08:33 +02:00
Erik Hooijmeijer
35c2f4873c values from the project pom.xml are now taken into account as well
Former-commit-id: ca6c5b40f09959f162b337f2cb4268a57ce46d3d
2014-10-21 20:09:54 +02:00
Jeremy Long
1ed7bab375 additional updates for issue #162, if no pom is present in the jar, but it exists in the repo the pom from the repo will be used
Former-commit-id: 0d1603f45420b57b00149764acca1fe5bd3f3c83
2014-10-17 20:55:58 -04:00
Jeremy Long
f0d1bfb777 added an additional suppression for issue #162
Former-commit-id: 9c3403814b15cbcdebdc9e0d43253016548efb23
2014-10-16 06:57:24 -04:00
Jeremy Long
42519ac843 version 1.2.6-SNAPSHOT
Former-commit-id: 0b301bfa4a942e43976a34195a32982000f34d12
2014-10-14 06:28:14 -04:00
Jeremy Long
8869e13385 Merge pull request #161 from hansjoachim/exceptionTests
Uses ExpectedException to test for exceptions

Former-commit-id: 38f9b007311032db7edec0e1c345130409518855
2014-10-13 05:47:54 -04:00
Hans Joachim Desserud
8f9cbfe806 Unrelated: remove unused before/after
Former-commit-id: 68524208b8c0a197e9682aceec25cff0bc30ff56
2014-10-12 18:29:27 +02:00
Hans Joachim Desserud
6481938626 Test for exceptions with ExpectedException
Former-commit-id: 47c6c559196b4c10a5deb3698805ff7276f0aa83
2014-10-12 18:27:03 +02:00
Jeremy Long
9c7cc2acbf corrected the documentation
Former-commit-id: 428b6b3e07ed250ac11fb6c917c90888c0d20246
2014-10-10 20:03:36 -04:00
Jeremy Long
89a57d4ed3 removed velocity-tools to close issue #160
Former-commit-id: 5ca46405a5aa7521bd0a0de54500d848156491a6
2014-10-10 06:36:47 -04:00
Jeremy Long
732378592b corrected link to the unfortunate realities pdf
Former-commit-id: 285bcfd78f00fa514d3f96b5dcbac2fd18384177
2014-10-08 06:47:27 -04:00
Jeremy Long
19dc46660b corrected link to the unfortunate realities pdf
Former-commit-id: 75332bd18e6ac3ecac5dddda2f3945ae4003bd06
2014-10-08 06:21:55 -04:00
Jeremy Long
4aad3471af fixed javadoc
Former-commit-id: 2402251f2157864ee3c51dd571cb9d21e17856e6
2014-10-08 06:21:20 -04:00
Steve Springett
533b455356 Merge remote-tracking branch 'origin/master'
Former-commit-id: da6ffef3c01da250ecbceadac8a6e955bb47f83f
2014-09-16 18:52:44 -05:00
Jeremy Long
92bd305b00 version 1.2.5
Former-commit-id: b3fe4ea80c4286684eda15a3b9f46cebc4f09ee8
2014-09-16 19:47:17 -04:00
Jeremy Long
f71eb09f74 updated sample report
Former-commit-id: 1de33769f71be8c86116b4a17d8282c69e0abed6
2014-09-16 19:47:07 -04:00
Jeremy Long
83d4a7bc18 moved test case dependency,jersey client, to the allTests profile
Former-commit-id: 58da4d9c21803362133f74c168aea256c51a5824
2014-09-16 05:24:43 -04:00
Steve Springett
58807d9021 Merge remote-tracking branch 'origin/master'
Former-commit-id: d3c49db24c64c2869257d1b3f9a8493e7925e7a7
2014-09-15 01:11:34 -05:00
Jeremy Long
29595324c4 added suppression rules for jersey-client
Former-commit-id: cb8f4081c6d0fc2128a3a3dfda294a541c16adec
2014-09-13 07:10:17 -04:00
Jeremy Long
f9064e526f added test jar to the extended profile test dependencies
Former-commit-id: b24966e3936afd9337dbea5476a696ddf46efc65
2014-09-13 07:09:54 -04:00
Jeremy Long
93ec2e8639 fixed javadoc
Former-commit-id: d06907a74a6fd4cf9ac5e5774af63eda5aba02b3
2014-09-13 05:50:49 -04:00
Jeremy Long
0e2a31709a added test cases to ensure setting the base flag will prevent the identifier from being added to the suppressedIdentifiers collection
Former-commit-id: d369797a3b14fc2c42621d273d6f314e968848b9
2014-09-13 05:45:05 -04:00
Jeremy Long
c785b39eda added assertion to validate that the base flag is being processed
Former-commit-id: 0364e57af8f548d010f17f948492e9472433c675
2014-09-13 05:44:09 -04:00
Jeremy Long
8fab2f58da added the base property and skipped adding the vulnerability or identifier to the suppressed collection if this is a base suppression rule
Former-commit-id: a668d7d8b9345b6ad44bfff1ced4ab783a1f90d8
2014-09-13 05:43:16 -04:00
Jeremy Long
e44ee3bfe1 added parsing of the base flag
Former-commit-id: 02f533177846bcd4a98b31f851e91f438e1ddeaa
2014-09-13 05:42:01 -04:00
Jeremy Long
62065c9d28 corrected the removal of an identifier so that iterator.remove was correctly used
Former-commit-id: 252507772242cc7ff42ef9f310cfca3bec7cb075
2014-09-13 05:41:26 -04:00
Jeremy Long
c76275275f added the base=true flag to all base suppressions
Former-commit-id: ac77f3fc4ff80c182b7736554a1960e186e67d69
2014-09-13 05:40:37 -04:00
Jeremy Long
257f78879d added base attribute to suppression rules
Former-commit-id: bcadbd75b99471a56d604c2f158570305e9b4010
2014-09-13 05:40:06 -04:00
Jeremy Long
894263809c added base flag to one suppression entry
Former-commit-id: 7d6bbf36e5e35c2ee2fe8c901281996a34706036
2014-09-13 05:39:38 -04:00
Steve Springett
bc9458101c Merge remote-tracking branch 'origin/master'
Former-commit-id: 16fb5a44d47fb699282b6babd112848276cb6bab
2014-09-12 10:50:08 -05:00
Jeremy Long
c503935d6a updated to correctly close the ObjectOutputStream based on guidance from the CERT Java Secure Coding Standard
Former-commit-id: 1c7b929055f273d49b1203c117d7bb12162cfdb2
2014-09-12 06:36:00 -04:00
Jeremy Long
d4756c9eb8 updated base suppression list to include sandbox:sandbox - a php app
Former-commit-id: 087a4c5af2afd03a1d4703d2e1e5a1607a2e7ac9
2014-09-12 06:34:23 -04:00
Jeremy Long
0004767775 added fix for issue #147 to address springsource, non-core spring, jars being idenified as cpe://a:springsource:springframwork
Former-commit-id: 0a3182123be78a3f450cdef0bcc395907d27730a
2014-09-10 17:55:04 -04:00
Jeremy Long
74908642c7 added test dependency
Former-commit-id: fa4846dfa384639114f32ed3b7a0d91347b8dabf
2014-09-10 17:39:31 -04:00
Jeremy Long
aadfb71c98 fixed test case by removing a temporary test entry in DetermineCPE_full
Former-commit-id: 0f91c7b8e1d536c9d15176dc2d9a439da4e8ccdc
2014-09-10 17:37:54 -04:00
Jeremy Long
1244af649d updated to improve CPE matching so that if a broad match occured (cpe with no version number) we use the highest confidence version when generating the CPE identifier
Former-commit-id: 6e8c87a71522b1ca7cfa9d72ca419a792d1b17e7
2014-09-09 15:10:08 -04:00
Jeremy Long
7bd48cc811 updated version analysis to reduce false positives and increase accurate detection
Former-commit-id: 6097160434b7e98182738706790d82cdbd867175
2014-09-09 15:07:28 -04:00
Jeremy Long
8f3ce38418 re-ordered operations so that a new lucene index is no longer created on each call to calDetermineCPE_full
Former-commit-id: e2af1d893b47afe1ed36d1ab1e6840d47757b509
2014-09-07 08:28:44 -04:00
Jeremy Long
1b2d9b4245 fixed minor display bug
Former-commit-id: 65e1adcdc7677490907ee6eca68bf1174d355a3c
2014-09-07 07:20:45 -04:00
Jeremy Long
c6b2b34fde removed duplicative test of downloading XML
Former-commit-id: 97d1371609af2cc9583b0ac071a8606c93a34fbe
2014-09-07 06:59:50 -04:00
Jeremy Long
e58fc13fdb additional looping corrections in determineCPE() to break early if an identifier is found
Former-commit-id: 4ec4ffe598d9870a793da8980bb863633c1967d7
2014-09-06 19:09:38 -04:00
Jeremy Long
922d53d2e4 Increased the confidence on the pom artifact and groupid
Former-commit-id: b052b50353197e0f7cb419e6f618f2320da11183
2014-09-06 19:08:22 -04:00
Jeremy Long
fec53b3951 corrected looping in determineCPE()
Former-commit-id: 329f20687223f38273b2e23601b05fcea2b9122f
2014-09-06 06:37:12 -04:00
Jeremy Long
e72e2c6a02 corrected documention error with the reporting sets
Former-commit-id: ab503e5a710a69624a3216edea880e614b003ba8
2014-09-01 08:19:46 -04:00
Jeremy Long
08d001ee05 checkstyle corrections
Former-commit-id: ecc262c75890ef4c8760cb41e7948cb6decdf5d5
2014-09-01 08:13:53 -04:00
Jeremy Long
99d8a07f4a updated documentation as part of resolution for issue #144
Former-commit-id: f47171e52e22e75c582bed47c9d0e9df3945e148
2014-09-01 08:13:34 -04:00
Jeremy Long
eef565134b update to correct issue #79 - the internal report format is no longer supported
Former-commit-id: 4dc9a83008a75d97f3838aa1a41f1d93eb39f2de
2014-09-01 07:39:54 -04:00
Jeremy Long
9d78293437 fix for issue #128 - the application will no longer throw an exception on large files when generating the hash digest
Former-commit-id: aae811e5d10ca0ee5ac7316fa992b5c45e43d2be
2014-09-01 07:30:04 -04:00
Jeremy Long
fc0a556e5f checkstyle and findbugs corrections
Former-commit-id: 2bf90876b7c88bccb93135a0be43f01e49c3cd30
2014-08-30 15:51:24 -04:00
Jeremy Long
b6b070584f checkstyle corrections, added javadoc, etc.
Former-commit-id: 2b806cb8527a627d400644465bcf9f04d687d729
2014-08-30 15:19:52 -04:00
Jeremy Long
e13225eee6 initial version of aggreation completed for issue #19 - some cleanup still needs to happen before final release
Former-commit-id: 98c9af3004e2c725d0dca5d6847b65a4646c6a73
2014-08-30 07:50:27 -04:00
Jeremy Long
da20fb2922 added velocity-tools to base suppression as it should not be reported as struts
Former-commit-id: 4649d95a091def05ae249da42aa7d6f845b14d59
2014-08-30 07:48:02 -04:00
Jeremy Long
459c2beb12 noop
Former-commit-id: a51d953d0c60c39d845d69d66c87db8b904382c4
2014-08-29 05:41:31 -04:00
Jeremy Long
f1cc44dead removed the externalReport option
Former-commit-id: 4cc3ec2638140f8320eb8946d2154dae330786b0
2014-08-29 05:38:40 -04:00
Jeremy Long
d24cfdc382 resolved merge conflict
Former-commit-id: 4806c0c99bd35d64135ee22a12018e6a92c54059
2014-08-16 07:41:55 -04:00
Jeremy Long
ae4cc543f6 corrected outputFile name to correctly use the target directory from project.getBuild().getDirectory()
Former-commit-id: 7ef2ca45e502e945e7356f9c63845eb4e7b532fc
2014-08-16 07:30:34 -04:00
Jeremy Long
abdb3d17f9 added initial plumbing to support report aggregation per issue #19 - report aggregation is still not complete
Former-commit-id: df248d0c1a7f3628653717029f034a46afde742b
2014-08-16 07:29:35 -04:00
Jeremy Long
4095c5da38 made serializable
Former-commit-id: 27d8084ea981766791df05c5e9ef61dbe40ba32c
2014-08-16 07:27:28 -04:00
Jeremy Long
78fab728e4 added an additional generate method
Former-commit-id: 44b78b525da45918f3b4bc77b368f88e49361c95
2014-08-15 06:22:54 -04:00
Jeremy Long
52097a6867 initial version of the ReportAggregationMojo
Former-commit-id: e15575413d625c6b5c5f3d73f5a739e1890eec27
2014-08-15 06:02:04 -04:00
Jeremy Long
cb990b55b5 added the apache 2.0 license to the header
Former-commit-id: f7d5558f565abe9c3e1a04f79666137e4f67e017
2014-08-15 06:00:30 -04:00
Jeremy Long
5070fe303a added the configuration value mavenSettingsProxyId to inform users that if you have multiple proxies defined in settings.xml you can choose which one should be used
Former-commit-id: 20fa4a92d446fd30a882e07c37897907fb1638b1
2014-08-15 05:59:39 -04:00
Jeremy Long
b4405ebf3e minor changes to the TOC table - removed # of related dependencies and renamed CVE Impact to Highest Severity to clear up ambiguity
Former-commit-id: b8b14ab120d889057864eb6f93cadad9773b9171
2014-08-15 05:58:10 -04:00
Jeremy Long
d9e6bf5068 Merge pull request #145 from erik-wramner/fix-maven-proxy-bug
Modified Maven plugin to use proxy host as is, not as an URL. This works...

Former-commit-id: 53e28e6799ef13ca3d88ed00aaa1e0c3f24aa04b
2014-08-15 05:37:14 -04:00
erik-wramner
6822188f52 Modified Maven plugin to use proxy host as is, not as an URL. This works correctly for our proxy server with Maven 3.
Former-commit-id: 02e97e359b1c5d6d9f1dc9149c9fbed510d31559
2014-08-10 12:15:00 +02:00
Jeremy Long
15858d03ff moved reporting functions from the core maven plugin to a utility class
Former-commit-id: d63d2a7a5031038b9f86bbe94fc4a198374bd9f3
2014-08-08 14:44:26 -04:00
Jeremy Long
814a733258 moved reporting functions from the core maven plugin to a utility class
Former-commit-id: 0d8507b8534320189ea5f36d0fc1cac7d0843c0f
2014-08-08 14:43:00 -04:00
Jeremy Long
3ce85d8ca9 rework of report generation and added fix for proxy (patch for proxy was from Erik Wramner) to close issue #136
Former-commit-id: afc81123b31189618ade397b830bf421db2918f8
2014-08-08 14:42:23 -04:00
Jeremy Long
d3bff2f39d version 1.2.5-SNAPSHOT
Former-commit-id: 85ed1238022348f1e9496ffe3c95d4ff8e3d09c3
2014-08-05 18:55:30 -04:00
Jeremy Long
f2272730ac version 1.2.4
Former-commit-id: 4de7e508eb1885bb72e866960fa5402f72bf8e49
2014-08-05 18:45:36 -04:00
Jeremy Long
fe19c97d86 corrected link syntax
Former-commit-id: 01b9ea03864248a9c5427af6d7238c435c0a4fa7
2014-08-05 18:45:25 -04:00
Steve Springett
d49556bf3d Merge remote-tracking branch 'origin/master'
Former-commit-id: 1ed0b6e8621fb68a823b8127775fc5f86932cc00
2014-08-05 14:25:20 -05:00
Jeremy Long
56b447493e added additional error messages about the proxy if the download fails per issue #136
Former-commit-id: 7a5dcc58ab959a70b7e086a984f5d9289d749b99
2014-08-05 10:58:43 -04:00
Jeremy Long
e45b68eda7 fixed issue #140 - false positive is now suppressed
Former-commit-id: 4b584884e1eb5efa214b1af87d555e6866db917a
2014-08-05 10:44:33 -04:00
Jeremy Long
8df1ef5986 removed unused values for variables and fixed javadoc
Former-commit-id: 1fb0be5d88301c5a1043d88b93c052edcebe3c5c
2014-08-05 09:26:04 -04:00
Jeremy Long
dac34cda82 checkstyle corrections
Former-commit-id: a888649ce7d75b721e053d305a406ecddbdcdbc4
2014-08-05 09:25:08 -04:00
Jeremy Long
9925e30c8b removed useless parens
Former-commit-id: 00ddea8b437494cc32e47e3066a448015d95467b
2014-08-05 09:24:48 -04:00
Jeremy Long
dc5566b5ae updated the exclusion list for generated code
Former-commit-id: eeaccab472347cc5fcfe21552c7fc1e9ab8ea1de
2014-08-05 09:24:16 -04:00
Jeremy Long
8132ee651a added documentation for issue #139
Former-commit-id: 95fdcf4d95cbe50ba884be561fbec0e9977578a0
2014-08-05 09:23:47 -04:00
Jeremy Long
f49a134a3d updated sample report
Former-commit-id: 7f312fec5ffbd8daa609299efdc53b83e83e6bd6
2014-08-05 09:22:54 -04:00
Jeremy Long
bd955cda06 improved TOC per issue #138
Former-commit-id: 7cc7ccb9d0dd8257588438220bf61d78caa2bcec
2014-08-05 09:22:28 -04:00
Jeremy Long
c6dbc01912 ensured FileInputStream is correctly closed
Former-commit-id: 6e0362476f456e5af07e686fdccf04e600a97de8
2014-08-05 09:19:35 -04:00
Jeremy Long
fabe1aa940 checkstyle corrections
Former-commit-id: d23c5d17629f8484c1c07d328c9c1b74a678e062
2014-08-05 09:19:00 -04:00
Jeremy Long
ba5dbb94b8 removed fully qualified class name from jaxb instantiation
Former-commit-id: 15d5f9e2013daba62f7e32618958743e87e8ea79
2014-08-05 09:18:35 -04:00
Jeremy Long
6ccc053d7e added more documentation
Former-commit-id: 87a761ffe89d36fb2011d5a38d607c35178d70ec
2014-08-05 09:16:38 -04:00
Jeremy Long
cf21dfaa3a changed warning log message
Former-commit-id: 9a7fd59cd15e627ed103a6e797bc47518805276b
2014-08-04 08:05:31 -04:00
Jeremy Long
54ceb630de fixed project descriptions and corrected site deployment issues
Former-commit-id: 39373b0805b84b99c3e84dbad1c8a2301f277221
2014-08-04 06:24:00 -04:00
Jeremy Long
0a0c302cb2 re-orered the module listing
Former-commit-id: 1ec7ccbc98463c5b2af09c973a1bc83319630ec8
2014-08-04 06:22:11 -04:00
Jeremy Long
f6eef54566 added fix for issue #136
Former-commit-id: c259a419769b41e138d3cbb3811f1c24652601d5
2014-08-01 15:09:41 -04:00
Jeremy Long
a69804f84d updated documentation
Former-commit-id: e8b6c86e47cff66f72ffb53ccba4bef18479b43e
2014-08-01 14:31:19 -04:00
Jeremy Long
0b06b194b0 added XmlRootElement attribute
Former-commit-id: a3263e63c8c7b12c90ad388c8eda1ab09e43786c
2014-08-01 14:22:40 -04:00
Jeremy Long
73f6ce304c corrected jaxb newInstance
Former-commit-id: 32a1b759ad1e127784ae9bff902cca01c6faaad7
2014-08-01 14:21:55 -04:00
Jeremy Long
195818a432 minor changes to logger and added a catch for throwable
Former-commit-id: 0ca337442a3f60db9655c3527711ba16af3096a6
2014-08-01 06:02:22 -04:00
Jeremy Long
47c817de1c performance improvement for checksum calculations - using MappedByteBuffer
Former-commit-id: 5024926737f1abbae47da5e95615dd2f2bddbcc6
2014-07-20 07:54:54 -04:00
Jeremy Long
8b3894f213 removed version from maven usage
Former-commit-id: 234d0bc0e147cdb9ebf7d1c59e5ef53421589d42
2014-07-20 06:49:31 -04:00
Jeremy Long
a411252f07 Merge branch 'bkimminich-patch-1'
Former-commit-id: abe645b3693a6a387de9b36ffedf32382bd24f58
2014-07-20 06:39:13 -04:00
Jeremy Long
d7626aeb3f Merge branch 'patch-1' of github.com:bkimminich/DependencyCheck into bkimminich-patch-1
Former-commit-id: aa6a0fc0a9352a1a2d3d4a0dfceb428242b455fd
2014-07-20 06:38:58 -04:00
Jeremy Long
3565098650 converted abstract class to a final class with a private constructor
Former-commit-id: 582a421e69eac2bfc008ca8ee2fe88c7734c9a31
2014-07-20 06:36:33 -04:00
Jeremy Long
803fcf146b minor fix to test case
Former-commit-id: bf20319aed4f100d124cdeb7abeafe6598778891
2014-07-19 13:58:30 -04:00
Jeremy Long
d9d646c5fb fixed connection string property
Former-commit-id: 951cf212c80a52909cc2dd66e843b63b35991045
2014-07-19 13:57:36 -04:00
Jeremy Long
034a274b07 fixed copy paste error
Former-commit-id: 83c51cb5b43c635088025a2076121911af32a7ec
2014-07-19 13:57:15 -04:00
Jeremy Long
718d7af8bc updated to use the new getConnectionString implementation
Former-commit-id: c5bd68b3d2fb4c2470d6c50dc5f8f9f6036b9fce
2014-07-19 07:38:51 -04:00
Jeremy Long
860d3d9c8b made the ensureDBExists method perform a correct check rather then the previous hack
Former-commit-id: 5fae859fa7531761e78022eb2e8c4c41e6d5d150
2014-07-19 07:38:08 -04:00
Jeremy Long
f28b566992 added data.file_name and data.version
Former-commit-id: e692a13a216ec6808e3fd92397fd3c50854cfa56
2014-07-19 07:37:11 -04:00
Jeremy Long
1c261c7463 added more tests
Former-commit-id: 75a4e44d06838221b060c0569716e85e1c6fc996
2014-07-19 07:36:35 -04:00
Jeremy Long
226b2482b1 added data.file_name and data.version
Former-commit-id: 6f33c306170f96f344bb85aa7820cc94cd4d5eeb
2014-07-19 07:36:16 -04:00
Jeremy Long
ff346dc429 changed getConnectionString to allow a more dynamically constructed string based on more setting keys
Former-commit-id: 1fb18720ab1a1c6d947bc94366b8ee2ca9cb711e
2014-07-19 07:35:48 -04:00
Jeremy Long
2dcef25175 performance improvements for large files
Former-commit-id: 6a49a7066cb01c613b5c6f07c8497601a88e7f8d
2014-07-19 07:34:50 -04:00
Jeremy Long
46702bbb5c moved checkSumTest.file, checksum.java, and checksumTest.java to dependency-check-utils
Former-commit-id: 0c05e466b5fe071ca55552660d471431572c0558
2014-07-17 06:03:21 -04:00
Jeremy Long
5600c9bc69 removed commented out property
Former-commit-id: 2a07ced007c986d3ab127d8ff216f49c332f41c3
2014-07-17 06:01:59 -04:00
Jeremy Long
d7e46b1693 corrected the connection string in the test properties
Former-commit-id: 1c37d4bd4de49cddc34b92a27875e0a07eee600f
2014-07-17 06:00:59 -04:00
Jeremy Long
fe8c60ade1 added additional setting keys and methods getDataDirectory and getConnectionString
Former-commit-id: 5e8a55c498fa7ae5331ba4fbeb86cd68b9fd8eda
2014-07-17 06:00:06 -04:00
Jeremy Long
288892441f corrected javadoc
Former-commit-id: c0c7d8da486a08dfc3e9232b57166d4c496bb798
2014-07-17 05:59:10 -04:00
Jeremy Long
e1179a8e22 moved getConnectionString to the Settings class
Former-commit-id: d35df6d103505888ac4d87f964d8d615996ce614
2014-07-13 06:56:40 -04:00
Jeremy Long
4b06d0fd87 upgraded version on commons-compress to 1.8.1
Former-commit-id: 2dc8698035e18764e101b36b11faf9e5c7188c5b
2014-07-13 06:54:59 -04:00
Jeremy Long
464d91f45a fixed resource leaks found by coverity
Former-commit-id: 0e2d3b866853e2b906b9683e27602fd244298e55
2014-07-08 06:17:36 -04:00
Björn Kimminich
5cc7aa25cc Update README.md
- set version in POM snippet from 1.0.2 to 1.2.3
- set URL to Ant Task docs to http://jeremylong.github.io/DependencyCheck/dependency-check-ant/installation.html

Former-commit-id: 8a2176aee9948b5bfd0c1f08c6c7bb9fdadc45a1
2014-07-04 14:17:57 +02:00
Jeremy Long
20ec224070 updated version to 1.2.4-SNAPSHOT
Former-commit-id: 65d0e1ba5ed781e9f70ec7fd0c115a027e3bbc00
2014-06-28 08:14:49 -04:00
Jeremy Long
9cbcc29ddb added utils to the parent site
Former-commit-id: 2a80ad86f5ab94fb21131786d9dce3439269f8cb
2014-06-28 08:14:35 -04:00
Jeremy Long
0badbfc4a0 version 1.2.3
Former-commit-id: c355adf9813220c4b3dac3450e80a83a245209a6
2014-06-28 06:06:33 -04:00
Jeremy Long
e042148c62 Merge branch 'colezlaw-master'
Former-commit-id: 5654a0e5cd8b8524ac317a55a2af5a52408bc8ca
2014-06-26 20:33:45 -04:00
Jeremy Long
d8ba04ae7f Merge branch 'master' of github.com:colezlaw/DependencyCheck into colezlaw-master
Former-commit-id: 27bac793e5284df49c0804361c07d4ef559cb251
2014-06-26 20:33:35 -04:00
Jeremy Long
314d5fdad2 Merge branch 'colezlaw-suppression-fix'
Former-commit-id: 1e7d9df774347ea043fef8ef3f5d6ca4aebaa15a
2014-06-26 20:32:07 -04:00
Will Stranathan
5c874cafd1 Fixed suppression analyzer to load from input stream fixing failure
Former-commit-id: 4e6f8d7fddcf7ed26ad60b7aa8bc3a6b22ae19cc
2014-06-26 15:14:55 -04:00
Will Stranathan
8cafc14d09 Updated to 1.1 of GrokAssembly.exe to deal with exceptions
Former-commit-id: 8c1d6ad04e378f2a19e2fcdc9ebc1eab12be9aef
2014-06-24 10:16:53 -04:00
Jeremy Long
25ac5033fc snapshot version 1.2.3
Former-commit-id: 58f96e7ef71987a53626287f95b332f04b60a6f6
2014-06-22 21:33:58 -04:00
Jeremy Long
848be0db6c version 1.2.2
Former-commit-id: 8da06e1a2f4b41bccc22105d7bc758442bb14e57
2014-06-22 21:31:58 -04:00
Jeremy Long
0f9da0731e updated text
Former-commit-id: 7749b9ec6b0ce9502e1c7129bdec902ce5b43595
2014-06-22 21:22:32 -04:00
Jeremy Long
8bc2364cce added site information to the dependency-check utils
Former-commit-id: 7d8c4c3c2b98e0d492f4447e5f1dc1f071a2241a
2014-06-22 19:56:14 -04:00
Jeremy Long
b64916ce3f added file analyzer documentation
Former-commit-id: c0c29021cd1197f26942ff36c8b63220d1267c21
2014-06-22 19:55:21 -04:00
Jeremy Long
452955667c checkstyle correction
Former-commit-id: e5a891ea5b438e64e8a3aa5e697cb859d1a1f09a
2014-06-22 19:54:25 -04:00
Jeremy Long
f38bbf4cc7 minor javadoc correction
Former-commit-id: 45e621682304820fe17c17e92bd0aa5ac5dfd023
2014-06-22 19:53:59 -04:00
Jeremy Long
25eaa11a52 updated description
Former-commit-id: c8cb8b041ce351c2d33a3621f772e75d02950193
2014-06-22 19:53:38 -04:00
Jeremy Long
4b4da8d467 checkstyle/pmd/etc. corrections
Former-commit-id: 59883bd0b03c8690ce9a20120eafefe7c61384cd
2014-06-22 19:03:33 -04:00
Jeremy Long
13116c5381 added support for suppression by GAV (issue #124), created base suppression.xml (issue #123), and fixed false positives related to spring security (issue #130)
Former-commit-id: 330134211d022fec336dc1ca39205a94a088ee84
2014-06-22 16:34:39 -04:00
Jeremy Long
d2cd406a62 added additional test resources
Former-commit-id: b788c7420b82d8a108cd2335c536be667c2ab293
2014-06-22 16:32:48 -04:00
Jeremy Long
acbce05fbf updated to support suppression by maven coordinates (GAV) per issue #124
Former-commit-id: 3cff74ded9b0c352fb1d45e784d89c3c20f55467
2014-06-20 06:47:46 -04:00
Jeremy Long
bee4d3a338 fixed bug that left false positive, previously fixed, due to the file name modifications that the archive analyzer makes - regex needed updating to not just look for the start of the filename
Former-commit-id: 922a9edaf9123524585b97e6cb9f8efd4a389031
2014-06-14 07:04:02 -04:00
Steve Springett
b9003a2f02 Merge remote-tracking branch 'origin/master'
Conflicts:
	dependency-check-ant/src/main/java/org/owasp/dependencycheck/taskdefs/DependencyCheckTask.java
	dependency-check-ant/src/site/markdown/configuration.md
	dependency-check-cli/src/main/java/org/owasp/dependencycheck/App.java
	dependency-check-cli/src/main/java/org/owasp/dependencycheck/cli/CliParser.java
	dependency-check-cli/src/site/markdown/arguments.md
	dependency-check-core/src/main/java/org/owasp/dependencycheck/agent/DependencyCheckScanAgent.java
	dependency-check-core/src/main/java/org/owasp/dependencycheck/analyzer/AssemblyAnalyzer.java
	dependency-check-core/src/main/java/org/owasp/dependencycheck/data/nexus/NexusSearch.java
	dependency-check-core/src/main/resources/dependencycheck-resources.properties
	dependency-check-maven/src/main/java/org/owasp/dependencycheck/maven/DependencyCheckMojo.java
	dependency-check-maven/src/site/markdown/configuration.md
	dependency-check-utils/src/main/java/org/owasp/dependencycheck/utils/Downloader.java
	dependency-check-utils/src/main/java/org/owasp/dependencycheck/utils/Settings.java
	dependency-check-utils/src/main/java/org/owasp/dependencycheck/utils/URLConnectionFactory.java
	dependency-check-utils/src/test/java/org/owasp/dependencycheck/utils/DownloaderIntegrationTest.java
	src/test/resources/data.zip

Former-commit-id: 65443535a6c7cc240eb3999f60ea82044e9fff6a
2014-06-10 10:57:45 -05:00
Jeremy Long
bce226002b added data.zip back after cleaning up history
Former-commit-id: 6d227bf38e8023eeb134c965f48fbf859aeb9600
2014-06-01 11:31:09 -04:00
Jeremy Long
a417db7c7a updated documentation to replace deprecated proxyUrl with proxyServer
Former-commit-id: 165e14fcb6b57d8a522875eaa65f5ee766c9b1af
2014-05-31 06:43:07 -04:00
Jeremy Long
0ffef12a8b deprecated the proxyUrl field replacing it with proxyServer; getter and setter for proxyUrl now just wrap proxyServer
Former-commit-id: 5f1fbdf2eda6f05252f81dd8bf7acd44c01b7b6f
2014-05-31 06:42:27 -04:00
Jeremy Long
4539b040e0 deprecated proxyUrl and replaced it with proxyServer
Former-commit-id: 3330de9b2c36742a0b93d478b7dadaccea00cd4a
2014-05-31 06:39:36 -04:00
Jeremy Long
f85014a86d deprecated proxyUrl and replaced it with proxyServer - using the deprecated configuration will still work but will generate a warning
Former-commit-id: d9ff32d6b6e2f4d088f95d52ee33f1d0df3457fd
2014-05-31 06:38:50 -04:00
Jeremy Long
d90d07c68b added code to disable the analyzer if initialization fails
Former-commit-id: 202baa329f07fb24921ce83660d596d46b71b663
2014-05-30 05:26:03 -04:00
Jeremy Long
ce292b84fa fixed spelling error in property name
Former-commit-id: 106e8e9128bc371ff78f3a73c3f0da6012761cba
2014-05-30 05:25:20 -04:00
Jeremy Long
01690860db renamed PROXY_URL to PROXY_SERVER to avoid confusion
Former-commit-id: 1fbc025fba68aff644a8b8582657e5ef30024a24
2014-05-24 07:06:59 -04:00
Jeremy Long
89fb2d4915 fixed error messages and added status code checks
Former-commit-id: d21ff11466908f07ca02a50269f08d76f16a243e
2014-05-24 07:06:46 -04:00
Jeremy Long
5cc3a42832 renamed PROXY_URL to PROXY_SERVER to avoid confusion
Former-commit-id: 730eebed21baddfbd90c42a95769f8781de95b56
2014-05-24 07:05:05 -04:00
Jeremy Long
6b303410d1 added a new initialize method that accepts a properties file path to load to make the class more versatile
Former-commit-id: b6bee9569b075380b656faf9d2f1bf1c9aae849a
2014-05-21 06:42:43 -04:00
Jeremy Long
60b0145e04 added a new initialize method that accepts a properties file path to load to make the class more versatile
Former-commit-id: 00ec19b51a20c4ce3329a7c3c075a1f3ba16859e
2014-05-21 06:42:43 -04:00
Jeremy Long
8cae2f24b1 Moved some of the utility classes from core to a new utils module
Former-commit-id: 6c2ba353e41c6a43fef326896ea77ede300591ec
2014-05-21 06:29:46 -04:00
Jeremy Long
ce48823d38 Moved some of the utility classes from core to a new utils module
Former-commit-id: 2e6ff9631ff4c843f10db1e022e41e728394e420
2014-05-21 06:29:46 -04:00
Jeremy Long
0a04d753ea renamed CallableDownloadTask to DownloadTask
Former-commit-id: b4f805b231d3706c63a718ad23bc9b28a08cbb5f
2014-05-20 21:08:15 -04:00
Jeremy Long
d43fee5585 renamed CallableDownloadTask to DownloadTask
Former-commit-id: 4ed8987945722d99e0f23b2f379321a652f76348
2014-05-20 21:08:15 -04:00
Jeremy Long
35402c7bd3 fixed test cases
Former-commit-id: d76e5ba0431fdfc80847e7adbff9f0216ee7a191
2014-05-17 08:04:20 -04:00
Jeremy Long
5dc9e51dd4 fixed test cases
Former-commit-id: 081ea17023cef3313ce59dbf8ce7f2a8cff706eb
2014-05-17 08:04:20 -04:00
Jeremy Long
847a97f61c if maven identifier already exists we now update it with a hyperlink instead of adding a new one - the Jar analyzer may add a maven identifier based on the pom.xml
Former-commit-id: 00b8ca069e60a8fed72e767748380d0d6fa6908d
2014-05-17 08:04:03 -04:00
Jeremy Long
235fcccbd7 if maven identifier already exists we now update it with a hyperlink instead of adding a new one - the Jar analyzer may add a maven identifier based on the pom.xml
Former-commit-id: db0ae1145d000089fb10e0357566f03632a559b9
2014-05-17 08:04:03 -04:00
Jeremy Long
fac27a6120 cleaned up pom evidence collection and added a maven identifier if the GAV is available from the pom.xml
Former-commit-id: 83974c844dc91237ab3f174971f218e1678f47b4
2014-05-17 08:03:04 -04:00
Jeremy Long
91c971b8fd cleaned up pom evidence collection and added a maven identifier if the GAV is available from the pom.xml
Former-commit-id: 0400863fea2cfe86a5601b3ae134e7e98a4b29c7
2014-05-17 08:03:04 -04:00
Jeremy Long
2e24eda00d fixed false positives related to Apache POI and MS Office CPE/CVE per issue #126
Former-commit-id: 8cc26dc25ef613dd308388452c08a9f5852843ad
2014-05-14 19:17:47 -04:00
Jeremy Long
e43003cadc fixed false positives related to Apache POI and MS Office CPE/CVE per issue #126
Former-commit-id: cfde8d86cb339a9f2cf0b8c1f72f5ca198efab8a
2014-05-14 19:17:47 -04:00
Jeremy Long
7a653abf22 Update JarAnalyze to resolve issue #127
Updated JarAnalyzer to resolve issue #127 - duplicate package and package name evidence in the report.

Former-commit-id: ed40398c0b00e5fd5065705772ad15afaf5c7e0c
2014-05-14 18:01:12 -04:00
Jeremy Long
9a96165655 Update JarAnalyze to resolve issue #127
Updated JarAnalyzer to resolve issue #127 - duplicate package and package name evidence in the report.

Former-commit-id: 067643f7e99a7a4f36438b18c07e92a5e8544089
2014-05-14 18:01:12 -04:00
Jeremy Long
ae09229107 updated version to 1.2.2-SNAPSHOT
Former-commit-id: affbbe1f04a1e3de600e7498faa4f11c0d6d93c1
2014-05-10 08:41:37 -04:00
Jeremy Long
994aef411c updated version to 1.2.2-SNAPSHOT
Former-commit-id: e1b07457515dcab0f00c6a0b36fadb58ecc3deeb
2014-05-10 08:41:37 -04:00
Jeremy Long
be35f48bdd updated to release version 1.2.1
Former-commit-id: 1564da513f47b9256cb2e79918fcd2d6dd0091bb
2014-05-10 08:32:34 -04:00
Jeremy Long
094a180935 updated to release version 1.2.1
Former-commit-id: d908eed4538f0928c8b108348d9d46ce6d2f57e0
2014-05-10 08:32:34 -04:00
Jeremy Long
846173844e updated sample report
Former-commit-id: 35d6cb454ad1c6440d60c4717f33cf1eed733c2b
2014-05-10 07:25:42 -04:00
Jeremy Long
74e9de6370 updated sample report
Former-commit-id: c55ddb623e21f046c90493b0724f7eb34225ea29
2014-05-10 07:25:42 -04:00
Jeremy Long
59c28d8e51 fixed typo in log statement
Former-commit-id: 9109a644f1360571d83ff39d4ff5b05898c791ac
2014-05-10 07:23:18 -04:00
Jeremy Long
c7f31b3d79 fixed typo in log statement
Former-commit-id: 08192210f3c5bb322160fba678a56acb36af3198
2014-05-10 07:23:18 -04:00
Jeremy Long
abdfa3ccf6 pmd correction to logger
Former-commit-id: 500aa687bfa3dd9c126898e79121425e5e7e2e9d
2014-05-10 07:16:50 -04:00
Jeremy Long
98d0239d03 pmd correction to logger
Former-commit-id: 3c3b26ec8fbf4d2602c681ff02f460fe7e712914
2014-05-10 07:16:50 -04:00
Jeremy Long
99ad6634c4 checkstyle corrections
Former-commit-id: f0470062a3123825041e4db04fa128398a35994d
2014-05-10 07:13:07 -04:00
Jeremy Long
ffeab147ce checkstyle corrections
Former-commit-id: f9ae61d41ba01b6931892a339a9b701ae3c91ce2
2014-05-10 07:13:07 -04:00
Jeremy Long
84556fb055 updated version of presentation
Former-commit-id: 9660d3fb6b20e43c9b677f97f8756e2c341ae66d
2014-05-10 07:12:56 -04:00
Jeremy Long
90bdbd6b84 updated version of presentation
Former-commit-id: ec47594f35f5cca92888e6c8578b0d123d31b898
2014-05-10 07:12:56 -04:00
Jeremy Long
26e14e0151 added additional test file
Former-commit-id: e3a9aee97727ad8e60fc1a2a7c9a8abd7dc71e88
2014-05-10 07:01:24 -04:00
Jeremy Long
e29dd3cd33 added additional test file
Former-commit-id: 8487a2f4ba7287f54f0b5f69bc39e63bee455172
2014-05-10 07:01:24 -04:00
Jeremy Long
3df2daa5cb updated to remove archive files from the list of dependencies - additionally, if a zip file appears to be a jar it will now make a copy of the zip and scan it as a jar
Former-commit-id: e3b30cc5eaee14aa4ee7626adf2411972b26376a
2014-05-10 07:00:43 -04:00
Jeremy Long
23b95178ff updated to remove archive files from the list of dependencies - additionally, if a zip file appears to be a jar it will now make a copy of the zip and scan it as a jar
Former-commit-id: d927daea530abad2d578dbe0ff38b97d044b4775
2014-05-10 07:00:43 -04:00
Jeremy Long
c55efddc81 patch to remove additional false positives due to SCM entries in the pom
Former-commit-id: 7f889606bf9ece29121a14167b01ad6f5b93df76
2014-05-10 06:59:34 -04:00
Jeremy Long
9bde80357f patch to remove additional false positives due to SCM entries in the pom
Former-commit-id: 6101fae1b5957254ddbece5afc2db8edeb7bf9b8
2014-05-10 06:59:34 -04:00
Jeremy Long
a59c8908f0 updated to use displayFileName field instead of FileName when writing information about dependencies
Former-commit-id: 1ee4a19dda8de0678329c6d43a759696b16d363c
2014-05-10 06:58:51 -04:00
Jeremy Long
1485733715 updated to use displayFileName field instead of FileName when writing information about dependencies
Former-commit-id: bd3383ac4831bc44db6b63083e47802cce04b520
2014-05-10 06:58:51 -04:00
Jeremy Long
a421c5f952 added displayFileName field to the dependency class
Former-commit-id: 0b4af6346a1bfd1034a3b65e766c11a42dfcdf65
2014-05-10 06:57:44 -04:00
Jeremy Long
d125a7f09d added displayFileName field to the dependency class
Former-commit-id: 248f5397d37ea6e2f333dc0fe357188865bdb446
2014-05-10 06:57:44 -04:00
Jeremy Long
37b0612d45 removed additional false positives as part of patch for issue #93 and #119
Former-commit-id: 1d9275cc6f466beaa18a362515be98bafe9608b3
2014-05-10 06:56:53 -04:00
Jeremy Long
77486dffd4 removed additional false positives as part of patch for issue #93 and #119
Former-commit-id: 86f48b30150f2ba4db99dfc2eb15a0ac50a6e383
2014-05-10 06:56:53 -04:00
Jeremy Long
07bc94f9f6 fixed spelling error
Former-commit-id: 0bc1ec7d8a265a37751c23aa00733a9f002e6231
2014-05-07 19:33:59 -04:00
Jeremy Long
c84bcb433f fixed spelling error
Former-commit-id: d3aed24d6691b58ef132e00f9827e27fceb9fc73
2014-05-07 19:33:59 -04:00
Jeremy Long
82511880ac Merge pull request #122 from colezlaw/master
Fixed logging order of GrokAssembly for bad assemblies. Using resources ...

Former-commit-id: 78c484c7803b80bcb21b15351989805a627d38fd
2014-05-07 19:31:59 -04:00
Jeremy Long
f1e5221257 Merge pull request #122 from colezlaw/master
Fixed logging order of GrokAssembly for bad assemblies. Using resources ...

Former-commit-id: 65a41d23df6ccfa8c4f05235da3d7c613e4290a0
2014-05-07 19:31:59 -04:00
Jeremy Long
2f5cc6a8a4 added checks before warning that a file could not be deleted
Former-commit-id: b98d25e875e7523288df2cb0fed0b4518e4b52f4
2014-05-07 19:31:21 -04:00
Jeremy Long
b8bf01acc3 added checks before warning that a file could not be deleted
Former-commit-id: 098ea1889b49ade0c73385919906398c86627ab2
2014-05-07 19:31:21 -04:00
Jeremy Long
f9a0f5e7a1 fixed display bug when only one CPE exists for a given CVE
Former-commit-id: c1a96d619ce9bcbf78d91322d95168333a76fea9
2014-05-07 19:30:45 -04:00
Jeremy Long
65aa7bd1de fixed display bug when only one CPE exists for a given CVE
Former-commit-id: 18535dc408a51e516626ec4c43a3e72b01fd28f0
2014-05-07 19:30:45 -04:00
Jeremy Long
47b083eaca fixed display bug when only one CPE exists for a given CVE
Former-commit-id: 970b24e3f4d3203f17dc1269cec4156c98479d3a
2014-05-07 19:29:52 -04:00
Jeremy Long
6f511444a7 fixed display bug when only one CPE exists for a given CVE
Former-commit-id: 3b791d0a0fbe2587390e048cffc4453567ddf74a
2014-05-07 19:29:52 -04:00
Jeremy Long
8fcf5ee760 fixed bug causing vulnerabilities to be missed
Former-commit-id: e625225c6be3be1b471fab48c6eda0a616febfb9
2014-05-07 07:05:37 -04:00
Jeremy Long
ef5174d89f fixed bug causing vulnerabilities to be missed
Former-commit-id: 5c6421ea8475db16f7184340fa5b8b2033d53b29
2014-05-07 07:05:37 -04:00
Jeremy Long
f2006206d3 moved duplicated code to a method
Former-commit-id: ad0575ad74b7b5b3f420e466ca9a79f0ee2a2d69
2014-05-07 07:03:38 -04:00
Jeremy Long
e2a97e75d8 moved duplicated code to a method
Former-commit-id: f6cb80dc56ef86294f2490729bb84658d98e6c9a
2014-05-07 07:03:38 -04:00
Jeremy Long
c32361a428 fixed off by one string truncation issue
Former-commit-id: deead918832638cf9c7aadec194dad38f976946b
2014-05-07 07:03:02 -04:00
Jeremy Long
9fc6e265eb fixed off by one string truncation issue
Former-commit-id: f25894627402e9e2d310b25163dae7d7db1457d9
2014-05-07 07:03:02 -04:00
Will Stranathan
ac83c2bc3c Fixed logging order of GrokAssembly for bad assemblies. Using resources for logging
Former-commit-id: f2f833e67e20468ded70394ab71b481708c63d2a
2014-05-03 19:12:39 -04:00
Will Stranathan
f81c42b1fd Fixed logging order of GrokAssembly for bad assemblies. Using resources for logging
Former-commit-id: 611d665c7f5312462c19c8dcf8e87dc672184f67
2014-05-03 19:12:39 -04:00
Jeremy Long
32808c16e7 updates to help resolve issue 119
Former-commit-id: 89dd3034c595b658693a3cde0dac7259403bcf14
2014-05-03 14:46:48 -04:00
Jeremy Long
8594e146eb updates to help resolve issue 119
Former-commit-id: c8778008b91b7999cb8d88382efe8a83ebe87102
2014-05-03 14:46:48 -04:00
Jeremy Long
e4e2433396 updated test case and related data
Former-commit-id: ef8350d1502f69dd7c677fd688e76855f7d9985a
2014-05-03 12:30:29 -04:00
Jeremy Long
cda0dfdafe updated test case and related data
Former-commit-id: 513602f48b6d599b43848f0a88537190084e9cbf
2014-05-03 12:30:29 -04:00
Jeremy Long
8196b6e69e updated to begin fixes for issue #90 and #119
Former-commit-id: 36248efb48af1a7cfc174b8d23be673fe7ca93e8
2014-05-03 12:30:07 -04:00
Jeremy Long
363568b02c updated to begin fixes for issue #90 and #119
Former-commit-id: 1ceae6236ecd83e15f91ddab549027082e269e0b
2014-05-03 12:30:07 -04:00
Jeremy Long
8dd49b6156 added local copies of the NVD CVE data to speed up some of the test cases
Former-commit-id: 04f220ef62303f672afb10ba44fdb4c44af35a09
2014-05-03 11:02:23 -04:00
Jeremy Long
443ab02788 added local copies of the NVD CVE data to speed up some of the test cases
Former-commit-id: 54a264872bf151034706f6ed52de3a99ed961b04
2014-05-03 11:02:23 -04:00
Jeremy Long
c4ab83a801 updated to use local copy of data files to speedup the test case
Former-commit-id: 896363f35802484057cfcb3cefe8b6cd1782a02c
2014-05-03 11:01:31 -04:00
Jeremy Long
65784d6dc4 updated to use local copy of data files to speedup the test case
Former-commit-id: 5bb1d67156500ba74124ced18bcae599e4c5dc7a
2014-05-03 11:01:31 -04:00
Jeremy Long
2c51b7b835 removed duplicative test
Former-commit-id: 6b8ccf6c0e94827b165d6cabc935086905858675
2014-05-03 11:00:48 -04:00
Jeremy Long
da805d037f removed duplicative test
Former-commit-id: e403e85cef541416ccb3cf13704d019f4c2b5f92
2014-05-03 11:00:48 -04:00
Jeremy Long
bab49d04b7 added additional informational log statements
Former-commit-id: 25218345994ffef6506f38f8aa517abd78ceec2c
2014-05-03 11:00:21 -04:00
Jeremy Long
d383776245 added additional informational log statements
Former-commit-id: 9dfe02f737cffc05838dcffeec1cfca77c3100e1
2014-05-03 11:00:21 -04:00
Jeremy Long
6963d66240 updated settings cleanup to prevent issue with the update process
Former-commit-id: deba93c236f7f441df73e44ec57a4fc52260f965
2014-05-03 10:59:47 -04:00
Jeremy Long
51eba8da73 updated settings cleanup to prevent issue with the update process
Former-commit-id: e883b7d37c583b581b41da368dbe9b8d1bafae89
2014-05-03 10:59:47 -04:00
Jeremy Long
8cbf3ffc6b updated the URL for the NVD CVE external link
Former-commit-id: 7bb12ada0d54613f4067b96fb94a47e874384183
2014-05-03 10:58:41 -04:00
Jeremy Long
14b4d64244 updated the URL for the NVD CVE external link
Former-commit-id: 18cd71abd7a1f0d94dde8dba2a3076b28405ab00
2014-05-03 10:58:41 -04:00
Jeremy Long
2a4693f6ed updated the URL for the NVD CVE external link
Former-commit-id: 506296925066d0ea1def5035b45dfb21302e9559
2014-05-03 10:58:16 -04:00
Jeremy Long
7cb7f68cda updated the URL for the NVD CVE external link
Former-commit-id: 83ad77fb9fe6029fdb95ba7ffc96663d88234631
2014-05-03 10:58:16 -04:00
Jeremy Long
217256746c updated the URL for the NVD CVE external link
Former-commit-id: e44b70462275d0f0ab71c56b24d60dba8ea84a42
2014-05-03 10:57:44 -04:00
Jeremy Long
83300d028b updated the URL for the NVD CVE external link
Former-commit-id: 7527c31dab810145d8aebc1225ba302aca9fc80e
2014-05-03 10:57:44 -04:00
Jeremy Long
6c90225024 updated settings cleanup to prevent issue with the update process
Former-commit-id: eed7771b12afdf7e7bdb506dee5798062b326cab
2014-05-03 10:55:56 -04:00
Jeremy Long
e891ce39c0 updated settings cleanup to prevent issue with the update process
Former-commit-id: 3452aec55b778224e10879175e1aba8060da4e42
2014-05-03 10:55:56 -04:00
Jeremy Long
92d8a894e3 updated settings cleanup to prevent issue with the update process
Former-commit-id: 7b290d8aacb8f78c1064fd210b1e100da5cb86b8
2014-05-03 10:55:15 -04:00
Jeremy Long
e58b7782ac updated settings cleanup to prevent issue with the update process
Former-commit-id: 07122c535d47f3f414659013555fa826ce0e9b9c
2014-05-03 10:55:15 -04:00
Jeremy Long
c89d619808 applied part of PR for issue #121 - classpath issue with some invocations of the ant client
Former-commit-id: 7c0a0531c753e2ccfb0bdb15a1b179697b9f8905
2014-05-03 09:54:11 -04:00
Jeremy Long
1ddb468a08 applied part of PR for issue #121 - classpath issue with some invocations of the ant client
Former-commit-id: 129a5fd9cd55c8a0abf393d0ae8405ddec412d51
2014-05-03 09:54:11 -04:00
Jeremy Long
31dd4f6305 added additional dependencies for testing
Former-commit-id: 9d15401c471ff20d1bac1e46073c79fac435e335
2014-05-03 09:52:57 -04:00
Jeremy Long
95e3f0e0d9 added additional dependencies for testing
Former-commit-id: 99be1ef0f35f040ca13b204e2a1689cbaa3cf41a
2014-05-03 09:52:57 -04:00
Jeremy Long
ff9715ede7 patched for issue #120 - duplicate evidence listed in reports
Former-commit-id: 172fe4eff369938d904ed5af871e96c281cc2b04
2014-05-03 08:52:45 -04:00
Jeremy Long
0edf017ddc patched for issue #120 - duplicate evidence listed in reports
Former-commit-id: 3cdc1854af586029911b70fb4b8ff54669bac022
2014-05-03 08:52:45 -04:00
Jeremy Long
ffd1e383c2 Merge branch 'bkimminich-master'
Former-commit-id: 5f2abec6e7aa3a88dcd9c6882b039d0d5d70b165
2014-04-30 19:23:23 -04:00
Jeremy Long
ad601fd1ee Merge branch 'bkimminich-master'
Former-commit-id: d4f3bd1ebe5237060251b1f81111b26b5f653f65
2014-04-30 19:23:23 -04:00
Jeremy Long
2cc4f8c2fe Merge branch 'master' of github.com:bkimminich/DependencyCheck into bkimminich-master
Former-commit-id: a514663f23bf03a247afd3e4edc54e32334a2249
2014-04-30 19:23:13 -04:00
Jeremy Long
e7eaccb5e0 Merge branch 'master' of github.com:bkimminich/DependencyCheck into bkimminich-master
Former-commit-id: 7fe67ea5fa1b94824d2f2c8df5bd099d89dbaf85
2014-04-30 19:23:13 -04:00
Jeremy Long
6f513eb359 version 1.2.1-SNAPSHOT
Former-commit-id: d5b3c6acf6a66d2577385a24c76f7b2a47ec350d
2014-04-30 18:30:46 -04:00
Jeremy Long
6b201da3ff version 1.2.1-SNAPSHOT
Former-commit-id: 62ed08de9077505ef8e5350b0470eb5c61089dc3
2014-04-30 18:30:46 -04:00
Jeremy Long
b235a5bb49 fixed issue #118
Former-commit-id: 2c9775a966f153a1cd0de5690547f0392899b744
2014-04-30 18:13:04 -04:00
Jeremy Long
a85a47bc20 fixed issue #118
Former-commit-id: dceb807f182be921c2d85338c1d8192361dc2c1f
2014-04-30 18:13:04 -04:00
Jeremy Long
25f1912573 fixed issue #118
Former-commit-id: 7866ad2b3a62c0dfeff69172657e16efa18827ae
2014-04-30 18:10:56 -04:00
Jeremy Long
69b8f51319 fixed issue #118
Former-commit-id: 6f7b38b0945c6bcf47ffae0b8a6be53b144269cc
2014-04-30 18:10:56 -04:00
Björn Kimminich
d24d6f6b52 Update AbstractSuppressionAnalyzerTest.java
Former-commit-id: 717f9e605912ff42843a8b150db191eb4bb79c90
2014-04-29 14:37:52 +02:00
Björn Kimminich
0d943ba805 Update AbstractSuppressionAnalyzerTest.java
Former-commit-id: 640d50086e6b5cd9302ca4a24ffed881c614fd54
2014-04-29 14:37:52 +02:00
Björn Kimminich
afdb156c84 simplified exception testing
Former-commit-id: cf543a3ec397e593e7de2249820bd48159132413
2014-04-29 14:29:46 +02:00
Björn Kimminich
56fe3b5892 simplified exception testing
Former-commit-id: f43f211c4cc3133e5dfc466a4badfb3606a3be0c
2014-04-29 14:29:46 +02:00
Björn Kimminich
643d3600b8 added test case for classpath suppression file and missing file
Former-commit-id: a423b1289f39757645adf4dae0122bc4cee2d1b6
2014-04-29 11:48:07 +02:00
Björn Kimminich
c177f12e1d added test case for classpath suppression file and missing file
Former-commit-id: 975cbe1f480ad52b0e527148c4fd30b76d5baa0e
2014-04-29 11:48:07 +02:00
Jeremy Long
9c51bff55b version 1.2.0
Former-commit-id: 328c54a365a210bfe9e664f4ae292af4666cbf8e
2014-04-28 08:58:09 -04:00
Jeremy Long
72f9564757 version 1.2.0
Former-commit-id: b678810925b242d0ab9c17cc43c7edc4583ef8e3
2014-04-28 08:58:09 -04:00
Jeremy Long
81c91b3877 excluded HelpMojo from PMD
Former-commit-id: dbd8aa2995ca6f652cb2bef522a5e74d995e87a0
2014-04-28 08:20:11 -04:00
Jeremy Long
ab1a80152d excluded HelpMojo from PMD
Former-commit-id: 01cd292267305c6b6ed017dfcbe40ea53d4313e8
2014-04-28 08:20:11 -04:00
Jeremy Long
3d365eb258 checkstyle correction
Former-commit-id: aa79d696daa8e21ba2f3004916e97e213bf0fca1
2014-04-28 08:19:54 -04:00
Jeremy Long
a87c677a35 checkstyle correction
Former-commit-id: 542c5817a18cc0f372dabd8e8010c4c93b5ef34b
2014-04-28 08:19:54 -04:00
Jeremy Long
6857f6d8f8 checkstyle corrections... javadoc, final variables, etc.
Former-commit-id: 6a37a968f805a218316d5acc60f2edc85ea68e2f
2014-04-27 17:16:49 -04:00
Jeremy Long
9e0ed57cec checkstyle corrections... javadoc, final variables, etc.
Former-commit-id: 87905c8a957efb5b57e1c142eda9e7c2e7312f78
2014-04-27 17:16:49 -04:00
Jeremy Long
81bd9991bb moved checkstyle configuration to match pmd
Former-commit-id: 63681c165564341bfff2579ef6eb2f8cd502bb45
2014-04-27 09:31:16 -04:00
Jeremy Long
767f4797b0 moved checkstyle configuration to match pmd
Former-commit-id: ef4ac52a2fa483d776b6191356ce98486832a250
2014-04-27 09:31:16 -04:00
Jeremy Long
056fa9ded2 updated to reduce exception messages during build when mono isn't available
Former-commit-id: 734c3b41743c1ed60c6dbc737050b7add409206f
2014-04-27 09:18:50 -04:00
Jeremy Long
8f8c9c4582 updated to reduce exception messages during build when mono isn't available
Former-commit-id: b6701c012669d3b5fc9e8b7cc168ac8d5df4d8f0
2014-04-27 09:18:50 -04:00
Jeremy Long
a3792c474b Merge branch 'master' of github.com:jeremylong/DependencyCheck
Former-commit-id: 34458ee1dd984113551fa25a1ccc309d86587a9e
2014-04-27 08:51:31 -04:00
Jeremy Long
9acfe3afdb Merge branch 'master' of github.com:jeremylong/DependencyCheck
Former-commit-id: 45916cc4a0b3334ac9d0fe5d849032556db59f8e
2014-04-27 08:51:31 -04:00
Jeremy Long
ec233dbb46 Merge branch 'master' of github.com:bkimminich/DependencyCheck into bkimminich-master
Former-commit-id: 1fda0dd76d7a20dba2edf63595eabb10ba7ce0bd
2014-04-27 08:50:59 -04:00
Jeremy Long
9c03962c26 Merge branch 'master' of github.com:bkimminich/DependencyCheck into bkimminich-master
Former-commit-id: a25a71286aed7adb384e7efde40278006e67d847
2014-04-27 08:50:59 -04:00
Jeremy Long
d89cd789ac moved pmd rules to follow the maven directory structure
Former-commit-id: bfe648b8a48a85b677ffd665386d317eb249e289
2014-04-27 08:50:03 -04:00
Jeremy Long
a135460caa moved pmd rules to follow the maven directory structure
Former-commit-id: 71f80a18aad5c92662a2eab142009f243e7416bf
2014-04-27 08:50:03 -04:00
Jeremy Long
69088e162d removed code duplication ensuring temporary directory exists
Former-commit-id: daa54e59b488a1d6646e652e124c9e7f62012f79
2014-04-27 08:42:02 -04:00
Jeremy Long
7f72ef88e0 removed code duplication ensuring temporary directory exists
Former-commit-id: fba6dfcd3a133378c5f46f4126fa97c02ab110be
2014-04-27 08:42:02 -04:00
Steve Springett
ec53bd4125 Cleaning up Velocity. Minor change to Engine and ServiceLoaders to optionally use custom ClassLoader.
Former-commit-id: c0a96b36f4959a8b28b6b73e24ad884845140bd6
2014-04-26 01:25:56 -05:00
Steve Springett
fa1adc5294 Cleaning up Velocity. Minor change to Engine and ServiceLoaders to optionally use custom ClassLoader.
Former-commit-id: 8c1a58247faeaa032ca7389106378b095ac45edf
2014-04-26 01:25:56 -05:00
Björn Kimminich
35a264d21c organized imports
extracted exception handling


Former-commit-id: 2ec171b680d77c0db1dca9ec667e72040040eab9
2014-04-25 14:39:56 +02:00
Björn Kimminich
579b526196 organized imports
extracted exception handling


Former-commit-id: 5fa0d46fc4241e8feae58e4f1e8fd365aedb27f5
2014-04-25 14:39:56 +02:00
Björn Kimminich
0372c2eccc attempt to locate suppressions in classpath when they cannot be found via URL or file path
Former-commit-id: 6ba46b24bd89465aef454ca87c20b783bc761eee
2014-04-25 14:33:15 +02:00
Björn Kimminich
654e6942cb attempt to locate suppressions in classpath when they cannot be found via URL or file path
Former-commit-id: 03e7f14d9561940bb83a38faab926a5e45f2748b
2014-04-25 14:33:15 +02:00
Jeremy Long
08c7ffc6d9 added new test case for the hint analyzer
Former-commit-id: 1c82a99d05a00d9b71e0cda8e9e9cf417576c6b0
2014-04-24 07:23:39 -04:00
Jeremy Long
b7ed1429de added new test case for the hint analyzer
Former-commit-id: 019194943dd81b11201ef41e00bb4f5d9aa6fe73
2014-04-24 07:23:39 -04:00
Will Stranathan
e386f6ac20 Updated PMD configuration to work with all the projects.
Former-commit-id: f423663a453370b917292bdecb581ff2b06c896d
2014-04-22 20:50:06 -04:00
Will Stranathan
6642c23761 Updated PMD configuration to work with all the projects.
Former-commit-id: 80b9aac40019ef95d95ac5dcd3cb417290c37d7e
2014-04-22 20:50:06 -04:00
Jeremy Long
60ab893888 checkstyle corrections
Former-commit-id: 5397dc05e185c48b7fc8041c3b356655188eb3c1
2014-04-22 09:01:53 -04:00
Jeremy Long
f2b908c859 checkstyle corrections
Former-commit-id: 8833f928a384474df1dd5b306e835ec8919a572a
2014-04-22 09:01:53 -04:00
Jeremy Long
f2d960c3eb removed unused variable and inner assignment
Former-commit-id: ca34c3a26716353dc7e7c619c18a4f7fad264b7f
2014-04-22 08:14:30 -04:00
Jeremy Long
709840ca02 removed unused variable and inner assignment
Former-commit-id: 24b669e885ae51c2812ed1b31d86241b0a13509d
2014-04-22 08:14:30 -04:00
Jeremy Long
fb88aeaeb9 checkstyle corrections
Former-commit-id: c64cd0ab69715dce4d0cb4671ff58844367e11a2
2014-04-22 08:10:54 -04:00
Jeremy Long
9fe596f3de checkstyle corrections
Former-commit-id: 2f6fb660cd0152de284b55de3aab9cbb1b22b0b0
2014-04-22 08:10:54 -04:00
Jeremy Long
94561de719 converted long running tests to integration tests
Former-commit-id: b43f6ed56766f5edd28c2224886c6a544944f449
2014-04-21 21:46:54 -04:00
Jeremy Long
228bb2fc86 converted long running tests to integration tests
Former-commit-id: 36a20d08b8de14b369a083d1c52e0f458b276d47
2014-04-21 21:46:54 -04:00
Jeremy Long
89ed18cea3 spelling corrections
Former-commit-id: f802ad882058ea1684458b8e85cde625e4907ef3
2014-04-21 21:01:10 -04:00
Jeremy Long
d07947f712 spelling corrections
Former-commit-id: 6b3c1ae8e8150cca82449f5e5b4448a9a829e680
2014-04-21 21:01:10 -04:00
Jeremy Long
b996fa234b spelling corrections
Former-commit-id: 5a3702b980e5970565b0aeab93653353626befd1
2014-04-21 20:59:18 -04:00
Jeremy Long
70022088fb spelling corrections
Former-commit-id: 43b77de6e21a4d586f7b66b6da0045572c097f42
2014-04-21 20:59:18 -04:00
Jeremy Long
f6cd5cb4b2 merged update from Will
Former-commit-id: 6c60ece52808b5feb312489a19fc6b4acdb7859d
2014-04-21 20:42:58 -04:00
Jeremy Long
9143564d41 merged update from Will
Former-commit-id: ee4020e643221aa4ea403a6fb59314e65ab9e1b5
2014-04-21 20:42:58 -04:00
Jeremy Long
6ac8caaf5f Merge branch 'master' of github.com:jeremylong/DependencyCheck
Former-commit-id: 25d67194a46eb3654415cd0dd91e67cd17befdb5
2014-04-21 20:31:48 -04:00
Jeremy Long
55440ae32b Merge branch 'master' of github.com:jeremylong/DependencyCheck
Former-commit-id: ddb7a60c533bf82e5f6faa9a5fbd794ca7dfaf5f
2014-04-21 20:31:48 -04:00
Jeremy Long
e5a4145e37 spelling corrections
Former-commit-id: f1589557d0f3aa8fc7e5efbc137b248580d72fae
2014-04-21 20:31:26 -04:00
Jeremy Long
db65c0b422 spelling corrections
Former-commit-id: 35f1650765a5e8de33ef078a13b20bfa2994eb71
2014-04-21 20:31:26 -04:00
Jeremy Long
2c8b408bfb spelling corrections
Former-commit-id: 65fbce0a7f47161c2cc5f9c5327ce5f18cc483c1
2014-04-21 20:21:53 -04:00
Jeremy Long
f0297938b6 spelling corrections
Former-commit-id: 56795c1f9276347f4b383e911c8c1b35918d55d9
2014-04-21 20:21:53 -04:00
Steve Springett
58c5c04feb Removing Jenkins workaround for previous snapshot's race condition
Former-commit-id: f1cb67c38ef10426873f628c368695d165e28e91
2014-04-21 14:19:30 -05:00
Steve Springett
4d390b65fe Removing Jenkins workaround for previous snapshot's race condition
Former-commit-id: 69304c08687945ebecaf3f253e16861dd9627d43
2014-04-21 14:19:30 -05:00
Will Stranathan
b0d6070d28 Added PMD rule to find Loggers that weren't fields and corrected existing instances.
Former-commit-id: fac6dba1050e2c82a4ce090845c66bc284ce2966
2014-04-19 22:08:17 -04:00
Will Stranathan
294df359d5 Added PMD rule to find Loggers that weren't fields and corrected existing instances.
Former-commit-id: d1844676a9e2f9ccbbc584d51f9dc13ecc255c11
2014-04-19 22:08:17 -04:00
Jeremy Long
3728594f73 checkstyle corrections
Former-commit-id: 8cf3b2001eef9cd73809cfc3036e4662e0912f9d
2014-04-19 12:49:57 -04:00
Jeremy Long
a855d53542 checkstyle corrections
Former-commit-id: 8caae0e4f0dd1828419c84b081fbc32d4d7be93c
2014-04-19 12:49:57 -04:00
Jeremy Long
dc2f1eabb2 speed up test by disabling auto-update
Former-commit-id: c3fa8a4358bc3a40a3053fc1d83ec1bd1f25be48
2014-04-19 10:00:06 -04:00
Jeremy Long
57a0c48293 speed up test by disabling auto-update
Former-commit-id: 55e2cbff478577b7e2fc49b91f1e58c2e1563da7
2014-04-19 10:00:06 -04:00
Jeremy Long
eda08e7454 speed up test by disabling auto-update
Former-commit-id: acc20cbd55a13738097f8e4c142114f1928c0af6
2014-04-19 09:59:45 -04:00
Jeremy Long
bbc82d827e speed up test by disabling auto-update
Former-commit-id: 709c870c42d8b67b1e02ef8669981f2726c653e1
2014-04-19 09:59:45 -04:00
Jeremy Long
1bf4b6daa9 updated test case to perform autoupdate
Former-commit-id: d33a170f6d0ad9c822556003445b68187dcd30ed
2014-04-19 09:59:09 -04:00
Jeremy Long
742b49e302 updated test case to perform autoupdate
Former-commit-id: 3e93783a97af223a1c63cde2b8f5916158a729e9
2014-04-19 09:59:09 -04:00
Jeremy Long
f757266282 updated settings initialization
Former-commit-id: 87d35b16ee7cf213ca317fd98470bc027aca9af1
2014-04-19 09:58:40 -04:00
Jeremy Long
8716f14941 updated settings initialization
Former-commit-id: f53733aa65df96d09a817b74fd440da133b8be08
2014-04-19 09:58:40 -04:00
Jeremy Long
0321823125 removed singleton pattern from service loaders
Former-commit-id: eb822f5f15ca7bd87f9b3bff39467f77b64f27b7
2014-04-19 09:58:16 -04:00
Jeremy Long
8b7b41de47 removed singleton pattern from service loaders
Former-commit-id: 0e7b90141333548c47fbb4c9944b44fe295acfec
2014-04-19 09:58:16 -04:00
Jeremy Long
33d190afaa updated to initialize the settings object
Former-commit-id: c4b1d8c1cc26bd2f2c277e9d614adaecd1a00042
2014-04-19 08:59:04 -04:00
Jeremy Long
36fd4dbcf4 updated to initialize the settings object
Former-commit-id: 7920a16418cb0b539571058942606dfd3b142525
2014-04-19 08:59:04 -04:00
Jeremy Long
ff16c4f127 Merge branch 'master' of github.com:bkimminich/DependencyCheck into bkimminich-master
Former-commit-id: 380e108f1ca7960f5b973a523be4f5cf3ac5d989
2014-04-19 08:22:47 -04:00
Jeremy Long
291a8c2bfb Merge branch 'master' of github.com:bkimminich/DependencyCheck into bkimminich-master
Former-commit-id: 4b8d77255bef86d4cb4243eefd80eedadf5ca8f7
2014-04-19 08:22:47 -04:00
Jeremy Long
134728438e added a mechanism to copy the global settings object to forked threads
Former-commit-id: 2d312bb77e2de128689165f09636ef6ccf0a3521
2014-04-19 08:21:59 -04:00
Jeremy Long
a1db394d93 added a mechanism to copy the global settings object to forked threads
Former-commit-id: 2932ae216d79d3cd08f4fb57695f3bd979c95c59
2014-04-19 08:21:59 -04:00
Jeremy Long
754bd68a87 updated to use BaseTest to initialize the Settings correctly
Former-commit-id: b116cf7a8d61d4e3f194108344564f6d4c20940b
2014-04-19 08:08:53 -04:00
Jeremy Long
0933d96954 updated to use BaseTest to initialize the Settings correctly
Former-commit-id: 473e0db1cc94efe745c1d4664d2c204731e1b931
2014-04-19 08:08:53 -04:00
Björn Kimminich
bd32eeeaa2 fixed documentation of suppressionFile parameter
Former-commit-id: 5260eb964cd7183adff13f3ef180233499452015
2014-04-17 11:17:17 +02:00
Björn Kimminich
c4fcb6c88c fixed documentation of suppressionFile parameter
Former-commit-id: 937974c6952f8ba4d90ece584c46ada635da1d50
2014-04-17 11:17:17 +02:00
Björn Kimminich
1b9a3bd4bd extracted logger as field
Former-commit-id: e4d83411e9e2d529b0035748c52d9164e8837379
2014-04-16 16:35:40 +02:00
Björn Kimminich
2390b20e68 extracted logger as field
Former-commit-id: 3a9819dcd526191bb7156d2012c248bb7914cf29
2014-04-16 16:35:40 +02:00
Jeremy Long
584d369b0b made the settings ThreadLocal to solve a threading issue
Former-commit-id: 5fdcb13ae7147bfb65748aadbedf49fdf1febabf
2014-04-16 08:19:35 -04:00
Jeremy Long
a6fd0434de made the settings ThreadLocal to solve a threading issue
Former-commit-id: 052839b76cd6d914e66c79b2fe88321eef735146
2014-04-16 08:19:35 -04:00
Jeremy Long
0ebe052752 initial base test class to support the new Settings implementation
Former-commit-id: 8b8190c064409248798eb0d1eab17b972ea5178d
2014-04-16 08:18:40 -04:00
Jeremy Long
53b36472a0 initial base test class to support the new Settings implementation
Former-commit-id: 5414eb1c0b4b4e6c9462728f3ed0be270b2c8c01
2014-04-16 08:18:40 -04:00
Jeremy Long
535863bc52 added additional error handling
Former-commit-id: 2922b534e1f11f66c0d1bdff3136b560a467e3f1
2014-04-16 08:13:38 -04:00
Jeremy Long
ccefea6b59 added additional error handling
Former-commit-id: 7853689d3273afaa348a7e16c26d3c2cf14b5c9b
2014-04-16 08:13:38 -04:00
Jeremy Long
dd925cd92b updated to support the new Settings implementation
Former-commit-id: 471a24d23377d74b88e0693d4e9632bfb28a8511
2014-04-16 08:12:36 -04:00
Jeremy Long
b24c63cb49 updated to support the new Settings implementation
Former-commit-id: 2e275cd7333b0e44b46745d5f51f89f3f1687b8f
2014-04-16 08:12:36 -04:00
Jeremy Long
5529de3d95 updated to support the new Settings implementation
Former-commit-id: 455333dfde047ca2b92c80b60dbc905d7705cfb2
2014-04-16 08:12:16 -04:00
Jeremy Long
38f69fd7cc updated to support the new Settings implementation
Former-commit-id: e2a2b98e2742580e52750a1a1bcdbeddae3c5787
2014-04-16 08:12:16 -04:00
Jeremy Long
ce6b65adb8 updated to support the new Settings implementation
Former-commit-id: 530ce66039f4dfe4dd3db11790a9660f03cb873c
2014-04-16 08:11:56 -04:00
Jeremy Long
6a9ea3bc0f updated to support the new Settings implementation
Former-commit-id: 7382682e8fe7ab4d93c19dc35c7e1c300fd02886
2014-04-16 08:11:56 -04:00
Jeremy Long
9897109332 updated to support the new Settings implementation
Former-commit-id: e9087cbd7b7f017f8395331d66f43108b2dc2f0a
2014-04-16 08:11:09 -04:00
Jeremy Long
d1b4e93f9e updated to support the new Settings implementation
Former-commit-id: 50235f22de97afc2a352f8dc7d2de9120cf73c75
2014-04-16 08:11:09 -04:00
Jeremy Long
cfc851a99b minor javadoc update
Former-commit-id: f17a1efc613d815c7ad76e4bc7985bc4cba1bba8
2014-04-16 08:10:50 -04:00
Jeremy Long
9a6a61151d minor javadoc update
Former-commit-id: 0611618b0abde40a3f8fd5cb98c63ae5cc71c387
2014-04-16 08:10:50 -04:00
Jeremy Long
380178ccc8 removed un-needed methods
Former-commit-id: cd774ff66f89e34e489b7839809569ba1c47ba65
2014-04-16 08:10:24 -04:00
Jeremy Long
497d0f0c74 removed un-needed methods
Former-commit-id: 8276c1e9554a1c69c764103611c53ef85803a006
2014-04-16 08:10:24 -04:00
Jeremy Long
3227ddd9f9 updated to support the new Settings implementation
Former-commit-id: 21e0dd024fa968c090b1eb5731c185c305c9d29c
2014-04-16 08:09:47 -04:00
Jeremy Long
ecf1c90c22 updated to support the new Settings implementation
Former-commit-id: 8ec7546bb8437406da724d7296fea765781a9640
2014-04-16 08:09:47 -04:00
Jeremy Long
336be63237 updated to support the new Settings implementation
Former-commit-id: d0b45c8fdf2ecd50b39045e28fe27601abdf3360
2014-04-16 08:09:24 -04:00
Jeremy Long
1aa13c1c8c updated to support the new Settings implementation
Former-commit-id: 3e39bbadb32b7f3d447676ce04dfb7d4a22a4478
2014-04-16 08:09:24 -04:00
Jeremy Long
37c9b9e1f5 removed unused methods
Former-commit-id: 31836f1ee4b37e137b4fd56539bde39eef23dc16
2014-04-16 08:08:54 -04:00
Jeremy Long
251ad23a9e removed unused methods
Former-commit-id: 9b66b0a3362d6299c9c9b61ad9267f80bfe6cdc4
2014-04-16 08:08:54 -04:00
Jeremy Long
ebb3e02dcc removed unused methods
Former-commit-id: 832e1232386ca6df3cd37cf80a98246f0ccf45fa
2014-04-16 08:08:36 -04:00
Jeremy Long
22876e5a25 removed unused methods
Former-commit-id: 70d7e89ae7f62b42eb7fe2cd8085caa270c8f381
2014-04-16 08:08:36 -04:00
Jeremy Long
352505c54f updated to support the new Settings implementation
Former-commit-id: 82c5da6e4b3d7d34e8da2db091a55835f8ce97dd
2014-04-16 08:07:52 -04:00
Jeremy Long
12162e2aae updated to support the new Settings implementation
Former-commit-id: 572697ad9f84f341e1ac5a4f4e6036df0ed02f3a
2014-04-16 08:07:52 -04:00
Jeremy Long
0c7998712e updated to support the new Settings implementation
Former-commit-id: 918bd36285d2b7339c69e3c3f64b327ec28d38ea
2014-04-16 08:07:32 -04:00
Jeremy Long
2af09fb49d updated to support the new Settings implementation
Former-commit-id: 58ea4b5d184999aa7c2f67e00374a7c52fef639f
2014-04-16 08:07:32 -04:00
Jeremy Long
b9a20e7ac5 updated to support the new Settings implementation
Former-commit-id: d1d837e026bcff8be05501b6154f491f4f7669b4
2014-04-16 08:07:09 -04:00
Jeremy Long
c58589026c updated to support the new Settings implementation
Former-commit-id: 00b11fb5e4eb3c288d4017e8974dac39e7a6f2c6
2014-04-16 08:07:09 -04:00
Jeremy Long
7ab89b900c updated to support the new Settings implementation
Former-commit-id: 10625b4a050b79608d454677ff7fba04f1f735a0
2014-04-16 08:06:52 -04:00
Jeremy Long
5b83919eb2 updated to support the new Settings implementation
Former-commit-id: d559571b5adf664155b12075c7f42644c001d4be
2014-04-16 08:06:52 -04:00
Jeremy Long
9620956727 removed unused methods
Former-commit-id: 2cdae6c0c7fd6a09af79c5e37734bbf03097f5d9
2014-04-16 08:04:46 -04:00
Jeremy Long
f26f02c986 removed unused methods
Former-commit-id: cb23f2dbc928c46149be608144aa79fcdcd6e815
2014-04-16 08:04:46 -04:00
Jeremy Long
9b85768b7e updated to support the new Settings implementation
Former-commit-id: e72bbcdcbe0a673e4b7d6a26aee9210f3a52ff24
2014-04-16 08:04:13 -04:00
Jeremy Long
c5d16a49d0 updated to support the new Settings implementation
Former-commit-id: 00ccc5ae2b0ceac9b1bffae27e25dfb55b262f08
2014-04-16 08:04:13 -04:00
Jeremy Long
5276e1863d updated to support the new Settings implementation
Former-commit-id: 91439ca3788a26e66d665cd3b8298a1dfc4a93f5
2014-04-16 08:03:55 -04:00
Jeremy Long
260b2c3532 updated to support the new Settings implementation
Former-commit-id: 9cbc15ce470881f316a8ede89b94c7122c1381c1
2014-04-16 08:03:55 -04:00
Jeremy Long
0fc1a30a2c updated to support the new Settings implementation
Former-commit-id: 33d1bebf147cb93649b774a46030581a3b8b6e69
2014-04-16 08:03:36 -04:00
Jeremy Long
420da8f476 updated to support the new Settings implementation
Former-commit-id: 8eccff73254d27425813dfac1646b8832fac8604
2014-04-16 08:03:36 -04:00
Jeremy Long
8609b98b1c updated to support the new Settings implementation
Former-commit-id: 95a0da4c7f9ec9f506477bdd755b5660de05bd2f
2014-04-16 08:03:15 -04:00
Jeremy Long
c2a39d3296 updated to support the new Settings implementation
Former-commit-id: b2b4137934983f3688f115f31ced54004d33d2e9
2014-04-16 08:03:15 -04:00
Jeremy Long
c85514a17a updated to support the new Settings implementation
Former-commit-id: 16b747a5e88aafe600d35b67778a320dd8f81113
2014-04-16 08:02:50 -04:00
Jeremy Long
6cd4bf337e updated to support the new Settings implementation
Former-commit-id: a530f8ae502e47345f36c1e563c001797b223280
2014-04-16 08:02:50 -04:00
Jeremy Long
d00bef5546 updated to support the new Settings implementation
Former-commit-id: 89611b3261cb8bb4b2714027ee5efd74b2edeac2
2014-04-16 08:02:24 -04:00
Jeremy Long
095c48a942 updated to support the new Settings implementation
Former-commit-id: e34221085daf9880ce658cd71df15f9f8b0def9d
2014-04-16 08:02:24 -04:00
Jeremy Long
b905f46f98 updated to support the new Settings implementation
Former-commit-id: ab47079a0426c72cd71e9332faf81593045b33f0
2014-04-16 08:02:05 -04:00
Jeremy Long
e61ef1ae85 updated to support the new Settings implementation
Former-commit-id: 9715d8c76c5667d813a64c56d74a366fa83d2470
2014-04-16 08:02:05 -04:00
Jeremy Long
cdd4765d38 updated to support the new Settings implementation
Former-commit-id: ceae727c56f4f982692b6d48d9466756abc400e8
2014-04-16 08:01:45 -04:00
Jeremy Long
886b21af68 updated to support the new Settings implementation
Former-commit-id: bc891a90f8e0d234fbefcd19bc559bf828af5636
2014-04-16 08:01:45 -04:00
Jeremy Long
d62793f4ad updated to support the new Settings implementation
Former-commit-id: 4cb1a827fb87a56c8bd126a17448245239513523
2014-04-16 08:01:15 -04:00
Jeremy Long
7bba66737f updated to support the new Settings implementation
Former-commit-id: d6e86661ae20968179c729fd21bfb07df00858a7
2014-04-16 08:01:15 -04:00
Jeremy Long
d83d325a49 updated to support the new Settings implementation
Former-commit-id: 781f217da7507bbc13de6be59474d8ddda7fce2f
2014-04-16 08:00:55 -04:00
Jeremy Long
52fd2772cf updated to support the new Settings implementation
Former-commit-id: c84709a4cf38a6e55166de59b6a8b372c1f082e4
2014-04-16 08:00:55 -04:00
Jeremy Long
e5baf99814 updated to support the new Settings implementation
Former-commit-id: 5f75c0e202e3fb0aafc2f55db827cf727ca97843
2014-04-16 08:00:10 -04:00
Jeremy Long
48043b5ec4 updated to support the new Settings implementation
Former-commit-id: 39536545c92d2c56017a4a8279704f2184b8124c
2014-04-16 08:00:10 -04:00
Jeremy Long
b4aeab3501 updated to support the new Settings implementation
Former-commit-id: 68cba2d619cd31a7352d54cd3a3ff6b5c482ebd9
2014-04-16 07:59:13 -04:00
Jeremy Long
1f67ae82bd updated to support the new Settings implementation
Former-commit-id: 624d4c04e4fa208ef0da60245ca20ca755610c81
2014-04-16 07:59:13 -04:00
Jeremy Long
039bfd372d updated to support the new Settings implementation
Former-commit-id: d1469eeaea5cc3d776c2378f390ec20bd8a223b7
2014-04-16 07:58:50 -04:00
Jeremy Long
e7749c161d updated to support the new Settings implementation
Former-commit-id: dd98df72654badebf3d4b7fa24da718ff588339d
2014-04-16 07:58:50 -04:00
Jeremy Long
1a92de71d1 updated to support the new Settings implementation
Former-commit-id: 572af32243216c26ad1c0e7ed36a4d368cd42a12
2014-04-16 07:58:28 -04:00
Jeremy Long
144f913aa9 updated to support the new Settings implementation
Former-commit-id: 3b0db7eb50c088342b7c49d23f43ba23edd5458f
2014-04-16 07:58:28 -04:00
Jeremy Long
d8279e11aa updated to support the new Settings implementation
Former-commit-id: 41cb4630f5cd777cc3c24da7e3c6aee18151501a
2014-04-16 07:57:11 -04:00
Jeremy Long
e28b6b9f73 updated to support the new Settings implementation
Former-commit-id: dd2d8cdd1c8688482752a8f1df2fc54ef6f638c8
2014-04-16 07:57:11 -04:00
Jeremy Long
b1b8584641 removed unused methods
Former-commit-id: 93cac67323f6cd2205de672deb534fb4cabb0be7
2014-04-16 07:56:51 -04:00
Jeremy Long
691636de7b removed unused methods
Former-commit-id: 6e0577ad17ed28f5e6e4f72fa35c10c5250343b4
2014-04-16 07:56:51 -04:00
Jeremy Long
11e75df1a9 updated to support the new Settings implementation
Former-commit-id: 22be859d3d8b9455e203da58ba5146f957a0f28b
2014-04-16 07:56:23 -04:00
Jeremy Long
6f2b1b8f06 updated to support the new Settings implementation
Former-commit-id: 18ba158d3b4651b424ee2d3ec02907410f7ea8ba
2014-04-16 07:56:23 -04:00
Jeremy Long
25fc2bfbea updated to support the new Settings implementation
Former-commit-id: bbb7dae7e2e9969ff648e9bfa0ddb4ab23cf3cc9
2014-04-16 07:55:56 -04:00
Jeremy Long
139640e768 updated to support the new Settings implementation
Former-commit-id: 4731df058a88b10661ea70addb082aced7590e80
2014-04-16 07:55:56 -04:00
Jeremy Long
a93c84ff64 updated documentation
Former-commit-id: d597a6f1c4f212a054f2fd74c81d8c4e98fbcf2a
2014-04-13 07:47:50 -04:00
Jeremy Long
ae2fa19c0e updated documentation
Former-commit-id: c374ee235b5c0e1beff55f678e02523213ef5868
2014-04-13 07:47:50 -04:00
Jeremy Long
986a4182d9 reordered operations
Former-commit-id: b6afe2d503fd80e591b0db50855e25852c9001e9
2014-04-13 07:45:54 -04:00
Jeremy Long
f8867abe49 reordered operations
Former-commit-id: 1a487bcc4400d881c8dda7118318b183a68a0fe3
2014-04-13 07:45:54 -04:00
Jeremy Long
d38a8b109b Merge branch 'master' of github.com:jeremylong/DependencyCheck
Former-commit-id: 739b4d35b9cd96a634169d2de299ad842eeea25e
2014-04-12 05:33:02 -04:00
Jeremy Long
fd83e72177 Merge branch 'master' of github.com:jeremylong/DependencyCheck
Former-commit-id: 3a30dd648eef49290e9290be719fb0eb25f79764
2014-04-12 05:33:02 -04:00
Jeremy Long
711d8c8c6b improved error handling
Former-commit-id: a95f11da123ca42e4abe3e4b2a98f8cc44fc34e5
2014-04-11 06:38:13 -04:00
Jeremy Long
1ff45c8e02 improved error handling
Former-commit-id: f5086f9ebae6dab987fedf5e87d885c243af188e
2014-04-11 06:38:13 -04:00
Steve Springett
0d1d22aeff Added archive support for JAR, SAR, and APK file formats. Ticket #106
Former-commit-id: ec08dd184cc973e57b99e8b318c14c5b268395da
2014-04-10 23:39:52 -05:00
Steve Springett
608c338403 Added archive support for JAR, SAR, and APK file formats. Ticket #106
Former-commit-id: 19991f8b32e746d9691e48eeac15343178dd3e99
2014-04-10 23:39:52 -05:00
Jeremy Long
ac2231f0f3 updated connection string to use FILE_LOCK=SERIALIZED instead of AUTO_SERVER=TRUE
Former-commit-id: bf8d148e01da607545af39bcfeb19d00d20091c5
2014-04-09 06:40:25 -04:00
Jeremy Long
f23da0dd5a updated connection string to use FILE_LOCK=SERIALIZED instead of AUTO_SERVER=TRUE
Former-commit-id: 59bc2334093063d99c67bcef2c73690895ce9c72
2014-04-09 06:40:25 -04:00
Jeremy Long
21344dacfc redirected standard error to hide expected [fatal] message from being displayed during tests
Former-commit-id: ecbc294640ca1e1a3c418af871dd71a31bbcccdb
2014-04-09 06:34:57 -04:00
Jeremy Long
8c3f887cac redirected standard error to hide expected [fatal] message from being displayed during tests
Former-commit-id: 4a5d1e47a0e613e2b8a14e14fc8cd73b1bd4519a
2014-04-09 06:34:57 -04:00
Jeremy Long
ca22ba5bbc updated report to show suppressed vulnerabilities and identifiers per issue #66
Former-commit-id: b87d8df47ac115b1a9ad36fdc7d960e86ab6d2d9
2014-04-04 06:46:31 -04:00
Jeremy Long
6e6f16d6ee updated report to show suppressed vulnerabilities and identifiers per issue #66
Former-commit-id: 0669a01ae3cc11bbeb36951411e95d2a7f8c5cf8
2014-04-04 06:46:31 -04:00
Jeremy Long
fc64c34214 fixed formating in support of issue #66
Former-commit-id: bc8d195fb53a3c7e4041ea25f16aad7be1b2916d
2014-04-04 06:46:04 -04:00
Jeremy Long
8a83385c7f fixed formating in support of issue #66
Former-commit-id: 3b27d6fefb6745ffe2e6169d248166a3408791c9
2014-04-04 06:46:04 -04:00
Jeremy Long
c35bc2476d updated schema to 1.2 to support changes for issue #66
Former-commit-id: c102357c6beead34824d5f7053c7350b3d15130c
2014-04-04 06:45:35 -04:00
Jeremy Long
147bc797a2 updated schema to 1.2 to support changes for issue #66
Former-commit-id: fc7d7e8b8453bb8065be1d83cbc7ce3d5f47ea88
2014-04-04 06:45:35 -04:00
Jeremy Long
222826af95 added to simplify velocity templates
Former-commit-id: 2bb350d765993782f38d90d235bebb0e9e7d51a7
2014-04-02 06:54:25 -04:00
Jeremy Long
1735f36b82 added to simplify velocity templates
Former-commit-id: 0d9c1624b7cc81a7843ff7db4488b115405a9e74
2014-04-02 06:54:25 -04:00
Jeremy Long
db28db0bc7 Merge branch 'master' of github.com:jeremylong/DependencyCheck
Former-commit-id: ed02b171d4a62eb4e22deea53dfcec07676a96d2
2014-04-02 06:52:59 -04:00
Jeremy Long
a782354874 Merge branch 'master' of github.com:jeremylong/DependencyCheck
Former-commit-id: 2ff2fbf86c9ebbf7bc1aec2aaf833bdd2ef00851
2014-04-02 06:52:59 -04:00
Jeremy Long
931f7d47ea simplified velocity report generation
Former-commit-id: 7c0f5bd492bce8a37c1633715d989970ee5b0d61
2014-04-02 06:52:26 -04:00
Jeremy Long
21a709cf89 simplified velocity report generation
Former-commit-id: dc690db1eb9186f1bfbf49472f893137e7602953
2014-04-02 06:52:26 -04:00
Jeremy Long
987ed1cefc coveritys copy paste analysis is awsome - identified a real bug that has been fixed
Former-commit-id: bb3b0cbdb32970534a5a17f351af8d13fb2d6838
2014-03-31 21:32:38 -04:00
Jeremy Long
76a0c1d96e coveritys copy paste analysis is awsome - identified a real bug that has been fixed
Former-commit-id: bccecaef9181eeb60a79873ebefc6f8ead259f71
2014-03-31 21:32:38 -04:00
Jeremy Long
3e9a77abfa updated test case to ensure suppressed vulnerabilities were tracked correctly per issue #66
Former-commit-id: 7bfbd0c0bb0cb1aa9bed756509d56690bdaee754
2014-03-30 06:31:52 -04:00
Jeremy Long
1c30e555dc updated test case to ensure suppressed vulnerabilities were tracked correctly per issue #66
Former-commit-id: 657213bab4b2f0a9538fb03319ff945971765b47
2014-03-30 06:31:52 -04:00
Jeremy Long
3879eb6b3a Updated to support the tracking of suppressed CPE/CVE per issue #66
Former-commit-id: 5f98715a8ffd45ac8d78ba7c103cbfb287cb1ddc
2014-03-30 06:26:50 -04:00
Jeremy Long
9bdff89833 Updated to support the tracking of suppressed CPE/CVE per issue #66
Former-commit-id: 12b514a914a1b1df96e92efd78e6a7ec6b9c42bd
2014-03-30 06:26:50 -04:00
Jeremy Long
5e5a2040fc updated to ignore coverity directory
Former-commit-id: a55a69442555d83365a2c96e6d6dfd00d8311653
2014-03-30 06:25:56 -04:00
Jeremy Long
08105eee48 updated to ignore coverity directory
Former-commit-id: 9db069c9e11d8a387dd944399023cb485ac4e63b
2014-03-30 06:25:56 -04:00
Steve Springett
eea44d7de2 Fix to prevent rules from being cached between Jenkins builds even if suppression file is not specified.
Former-commit-id: 747e4c585084807239ae2881944bd48a5908e143
2014-03-29 22:57:44 -05:00
Steve Springett
40e13184ca Fix to prevent rules from being cached between Jenkins builds even if suppression file is not specified.
Former-commit-id: 860fded462d768acb207ebe35464936d7f80f59c
2014-03-29 22:57:44 -05:00
Jeremy Long
3fcbf075fb updated commons-compress version
Former-commit-id: 44e8d9937c88c7eeced2d9be8ccdda73c257ba52
2014-03-29 08:56:04 -04:00
Jeremy Long
b5a65c5e43 updated commons-compress version
Former-commit-id: 4aeedcf31bb2a99b73c35aa68bd1dd1876512c67
2014-03-29 08:56:04 -04:00
Jeremy Long
b2641494cc specifically set InputStreamReader to use UTF-8
Former-commit-id: 1eacd242e19d5ca7b5582c1c8733f0868621cc8a
2014-03-29 08:37:39 -04:00
Jeremy Long
7eac65fec2 specifically set InputStreamReader to use UTF-8
Former-commit-id: 517159b6d919a98d83ebbf1037b5d375285f8390
2014-03-29 08:37:39 -04:00
Jeremy Long
c48a794aee updated to version 1.1.5-SNAPSHOT
Former-commit-id: ed43852f2d9459e5c0ec8c13d809a392fb9ef35c
2014-03-29 08:37:03 -04:00
Jeremy Long
9bc974661c updated to version 1.1.5-SNAPSHOT
Former-commit-id: 529545190847cf43edec6934ab6393583adc6e47
2014-03-29 08:37:03 -04:00
Jeremy Long
e53906aea8 updated to version 1.1.5-SNAPSHOT
Former-commit-id: 2362311dfb8e1f35408df2446b7bf8e72ceb0289
2014-03-29 08:36:43 -04:00
Jeremy Long
b8c41a91e1 updated to version 1.1.5-SNAPSHOT
Former-commit-id: 09c36d34a5390b22e3a870c8317e8e309083b5f2
2014-03-29 08:36:43 -04:00
Jeremy Long
05a4a1670f minor correction to unit tests
Former-commit-id: 20b80df37f0abb3c76d44e639c8d9c8c02f4ef71
2014-03-29 07:28:24 -04:00
Jeremy Long
3264becdc2 minor correction to unit tests
Former-commit-id: 44829f536b0940ed95750890262a1ab668c57745
2014-03-29 07:28:24 -04:00
Jeremy Long
4bd35852a5 version 1.1.4
Former-commit-id: 1f5787ebacba73ca5a582b05dd88f2628d29b1a8
2014-03-29 06:55:03 -04:00
Jeremy Long
845bf6ada1 version 1.1.4
Former-commit-id: 9d8e2cc70f7779b99e98aac396475f70980d7147
2014-03-29 06:55:03 -04:00
Jeremy Long
be4d56f8d2 FindBugs corrections
Former-commit-id: 22dfeaeb1493fdf25e790018c5d8c1761e935153
2014-03-29 05:58:56 -04:00
Jeremy Long
865ef2beb3 FindBugs corrections
Former-commit-id: 3bde1ba8aa05c0007a40be7594a6ded6675f5441
2014-03-29 05:58:56 -04:00
Jeremy Long
dfbcd616f2 find bugs corrections
Former-commit-id: f1823dd579d03b4caefd94123f4c51a3d8fb3f6c
2014-03-29 05:54:53 -04:00
Jeremy Long
ace5353595 find bugs corrections
Former-commit-id: 34820edd6de652dc6f62702de332447d0ba48398
2014-03-29 05:54:53 -04:00
Jeremy Long
dc0106348d checkstyle corrections
Former-commit-id: d511bf999738c60e35cefb66cdde1f28be1fea3f
2014-03-29 05:34:46 -04:00
Jeremy Long
56a43fe17b checkstyle corrections
Former-commit-id: c49596f06b497f80dbe6b5b9656a5221312c7e3f
2014-03-29 05:34:46 -04:00
Jeremy Long
f2666d4a30 updated cli help to indicate wild cards can be used to limit scan to specific file extensions
Former-commit-id: 1c034ba00859bc3140ca750c35bd1fc7f7b6d38d
2014-03-29 05:26:07 -04:00
Jeremy Long
46f36dc7ab updated cli help to indicate wild cards can be used to limit scan to specific file extensions
Former-commit-id: 1369c129ee4a774ce22fda28a4e74468b578da40
2014-03-29 05:26:07 -04:00
Jeremy Long
4220e58d26 checkstyle corrections
Former-commit-id: 4f20366676c43817c8f20200b47f6952c866a3a2
2014-03-29 05:23:49 -04:00
Jeremy Long
db0ac70b71 checkstyle corrections
Former-commit-id: 2d7107de4141937a5be66c42b170130118c7d613
2014-03-29 05:23:49 -04:00
Jeremy Long
07de43981a updated documentation to support wild card file extensions
Former-commit-id: 3e23e19d55056e0b24d6a738892828686335339d
2014-03-29 05:23:34 -04:00
Jeremy Long
6cfcc903df updated documentation to support wild card file extensions
Former-commit-id: fb64ad0e0997dfb3dc3c607ef6d2818afd0b3606
2014-03-29 05:23:34 -04:00
Jeremy Long
fa352c1a8f added back in scan methods that were removed by mistake
Former-commit-id: 043ae5b2fd012f06f107e1f46f50bc7157bba858
2014-03-28 05:28:17 -04:00
Jeremy Long
2ccae9f434 added back in scan methods that were removed by mistake
Former-commit-id: c4a26c76c2668a2b635f361a55d3c840a842f6f7
2014-03-28 05:28:17 -04:00
Jeremy Long
e5d582b30b updated delete file method
Former-commit-id: d7fcac28c99fe0a48aee6822ab288888181e5a51
2014-03-28 05:21:16 -04:00
Jeremy Long
139bf0ee35 updated delete file method
Former-commit-id: d5821f9476d9b230633eb0feac20d72f60baf337
2014-03-28 05:21:16 -04:00
Jeremy Long
8fb14ffdf3 added support for wildcard extensions in scan path for issue #95
Former-commit-id: 48b91add5bf6aa289dc03f1627046971dc0366e6
2014-03-28 05:03:37 -04:00
Jeremy Long
1ce6e37e78 added support for wildcard extensions in scan path for issue #95
Former-commit-id: d02eaf80664e4525d9b00ba5978bec5cced0970a
2014-03-28 05:03:37 -04:00
Jeremy Long
c16e85e7db fixed bug causing analyzer to hang reading from an empty error input steam
Former-commit-id: 1f4ed4fe5bb1900aff6ce2494e3f421312cd578f
2014-03-28 04:06:42 -04:00
Jeremy Long
462026e7e9 fixed bug causing analyzer to hang reading from an empty error input steam
Former-commit-id: 1b474a3376df612a13a62d8a31efb035c421afc5
2014-03-28 04:06:42 -04:00
Jeremy Long
25a72e3508 Merge branch 'master' of github.com:colezlaw/DependencyCheck into colezlaw-master
Former-commit-id: 5320c17bc9730b5bad2bb041d1125f54d06fc873
2014-03-28 02:40:26 -04:00
Jeremy Long
2f180510b8 Merge branch 'master' of github.com:colezlaw/DependencyCheck into colezlaw-master
Former-commit-id: 1eb983f1cbcd44b029b912b7a87f19ee78d6233e
2014-03-28 02:40:26 -04:00
Will Stranathan
20411da67b Updated waitFor semantics
Former-commit-id: 78be989fdaa6d3e0674050941c901ad37b33c944
2014-03-27 17:34:45 -04:00
Will Stranathan
53e67dfb27 Updated waitFor semantics
Former-commit-id: 1080c4eca42029535508f2503ac0a76e853a7fcc
2014-03-27 17:34:45 -04:00
Jeremy Long
81bfdc69dd added initial version of legal disclaimer - it will need to be updated
Former-commit-id: 363c2aa5a92422ce31934b1025849ccd7a804cf7
2014-03-27 15:35:59 -04:00
Jeremy Long
ff951130b6 added initial version of legal disclaimer - it will need to be updated
Former-commit-id: 776adc94aad64db842ce216f3f88354ffba79091
2014-03-27 15:35:59 -04:00
Will Stranathan
5e2829fe49 Squashed commit of the following:
commit 1d1a06a5ae7ea4f6e3adbf5a4b8163eba50562a3
Author: Will Stranathan <will@thestranathans.com>
Date:   Wed Mar 26 22:59:15 2014 -0400

    Updated unit tests and logging

commit bb00174e62c9657809d6e5a9cde7c7308d905593
Author: Will Stranathan <will@thestranathans.com>
Date:   Wed Mar 26 22:20:28 2014 -0400

    Updated GrokAssembly to not fail if the vendor can't be gotten

commit 27f7c9366acca8abbff9c6e9fa9ce1a1329da887
Author: Will Stranathan <will@thestranathans.com>
Date:   Wed Mar 26 22:18:33 2014 -0400

    Updated unit test to not care about version number


Former-commit-id: 6329e3f54f2808c54dd998514f0881dc3a976281
2014-03-26 23:02:17 -04:00
Will Stranathan
69ebb53a05 Squashed commit of the following:
commit 1d1a06a5ae7ea4f6e3adbf5a4b8163eba50562a3
Author: Will Stranathan <will@thestranathans.com>
Date:   Wed Mar 26 22:59:15 2014 -0400

    Updated unit tests and logging

commit bb00174e62c9657809d6e5a9cde7c7308d905593
Author: Will Stranathan <will@thestranathans.com>
Date:   Wed Mar 26 22:20:28 2014 -0400

    Updated GrokAssembly to not fail if the vendor can't be gotten

commit 27f7c9366acca8abbff9c6e9fa9ce1a1329da887
Author: Will Stranathan <will@thestranathans.com>
Date:   Wed Mar 26 22:18:33 2014 -0400

    Updated unit test to not care about version number


Former-commit-id: e700a5f81b7b0f6d6ccf392e846723e67fff591c
2014-03-26 23:02:17 -04:00
Jeremy Long
2aba09f090 added another test jar
Former-commit-id: 3f34dd46826010467e71127e61c8b8692dc2e46d
2014-03-26 07:38:13 -04:00
Jeremy Long
1a2a3d1945 added another test jar
Former-commit-id: c1eee9a685aed640be0d3a535f2888bf9e972990
2014-03-26 07:38:13 -04:00
Jeremy Long
38e27309fb updated engine to fix bug with archive analyzer prematurely deleting fiels
Former-commit-id: f123c77c3e111291d8e8064b31de2dacca3907fe
2014-03-26 07:33:52 -04:00
Jeremy Long
c8b967ba37 updated engine to fix bug with archive analyzer prematurely deleting fiels
Former-commit-id: dd4400e3c852f2d9bf7bf3b89f54913be79d6d68
2014-03-26 07:33:52 -04:00
Jeremy Long
6b586684e6 updated documentation for PR #98
Former-commit-id: abdb430bba5b53d5dccbf946394863733c04c69f
2014-03-24 23:55:36 -04:00
Jeremy Long
83b713a781 updated documentation for PR #98
Former-commit-id: 2121e1d535939646b3c7ce9b9b485c00f5b4bef8
2014-03-24 23:55:36 -04:00
Will Stranathan
773e280339 Switched default Nexus to SSL to fix 301 issues
Former-commit-id: 8a91f133e64ed6f74f7adcc2d239d36edb57d7e1
2014-03-24 19:59:13 -04:00
Will Stranathan
c930568df7 Switched default Nexus to SSL to fix 301 issues
Former-commit-id: 231a5f20652fd83123f614881198edf675dd1105
2014-03-24 19:59:13 -04:00
Jeremy Long
297a67cd00 applied PR from Steve to close issue #96 and issue #97
Former-commit-id: 7bc44a4778d78647c39390b5f39668d827c67995
2014-03-23 23:27:49 -04:00
Jeremy Long
95e2c6179f applied PR from Steve to close issue #96 and issue #97
Former-commit-id: d758d881a762c38b27d1a6ef1e17ebdab1efd5a7
2014-03-23 23:27:49 -04:00
Jeremy Long
ceb61ebe74 added configuration settings to the interfaces to support disabling of specific analyzers per issue #86
Former-commit-id: a13020f23231f9a9d80e3cfbfc2529198001f1fd
2014-03-23 23:08:03 -04:00
Jeremy Long
dfdf690575 added configuration settings to the interfaces to support disabling of specific analyzers per issue #86
Former-commit-id: ce5fe7e4340a4df6f0a59a78acee6429a10ba01b
2014-03-23 23:08:03 -04:00
Jeremy Long
6c85e3502e various findbug, checkstyle, documentation fixes
Former-commit-id: 66fc0bbef000fc9e4210054f15ab973909fe919f
2014-03-23 23:07:27 -04:00
Jeremy Long
db30517516 various findbug, checkstyle, documentation fixes
Former-commit-id: 436d6de72216aa90360c96b5f2d23adbbd733e7b
2014-03-23 23:07:27 -04:00
Jeremy Long
690192300f fixed bug where the analyzers were not being closed
Former-commit-id: 3ab4fa8484a65a2e3615549f4f778e63a3d36f4e
2014-03-23 23:06:14 -04:00
Jeremy Long
534b2e59a0 fixed bug where the analyzers were not being closed
Former-commit-id: 50f1859e79cf11a19837a389b4edd3c563d2c7c8
2014-03-23 23:06:14 -04:00
Jeremy Long
3ba963f474 added enabled properties in support of issue #86
Former-commit-id: 4d6205c4df71256ebf92a39c49a7ad042abf9f16
2014-03-23 23:05:41 -04:00
Jeremy Long
5028216058 added enabled properties in support of issue #86
Former-commit-id: e6df3962e1e96b28fad499694b580423cd1cb7b5
2014-03-23 23:05:41 -04:00
Jeremy Long
9b2cacc3a0 updated documentation
Former-commit-id: cb2c5c0fd7e0dfc33ce5a1b3cf75799c015c78df
2014-03-23 23:03:51 -04:00
Jeremy Long
173947fd7d updated documentation
Former-commit-id: b2036f354cc3d16db7e01bef9aad6aa494650fd2
2014-03-23 23:03:51 -04:00
Jeremy Long
315a616293 updated tests to fix issues with the analyzer disabling themselves
Former-commit-id: 48f1066590ba4b1e07943c089f5ad16e9cc4e746
2014-03-23 00:36:54 -04:00
Jeremy Long
9aa6ad216d updated tests to fix issues with the analyzer disabling themselves
Former-commit-id: 8286f053801efa11e10d3ea07529444a585859b8
2014-03-23 00:36:54 -04:00
Jeremy Long
3c56cd6738 added the ability to have a default value for getBoolean
Former-commit-id: 1c900a6f55f37c226a8d43df8dfc98913630838a
2014-03-23 00:36:10 -04:00
Jeremy Long
b2a5963f5a added the ability to have a default value for getBoolean
Former-commit-id: 3768e635a48b42f198fd9e11a248f93cc8662aaa
2014-03-23 00:36:10 -04:00
Jeremy Long
a48ac013e8 updated to allow turning off individual file type analyzers via configuration
Former-commit-id: 3f26c9e4540ed2d91d903db9c0f5abb50084ceb4
2014-03-23 00:33:00 -04:00
Jeremy Long
c80fdee99b updated to allow turning off individual file type analyzers via configuration
Former-commit-id: c492d41e1b5ad0c890cb750370dff326c3d0de05
2014-03-23 00:33:00 -04:00
Jeremy Long
258602ce1a fixed teest case
Former-commit-id: 27616b92421179fd720763cfacaf70de297c372d
2014-03-17 20:42:43 -04:00
Jeremy Long
270db7829d fixed teest case
Former-commit-id: 7ced3ad498d077c8bed116c161744dd817250d96
2014-03-17 20:42:43 -04:00
Jeremy Long
c85b547502 improved the abstract base class to support enabling/disabling each FileTypeAnalyzer
Former-commit-id: 9dd07ede35cdf2b5b4babb7d577f30d338c0af3c
2014-03-17 00:08:04 -04:00
Jeremy Long
5ff9ec9942 improved the abstract base class to support enabling/disabling each FileTypeAnalyzer
Former-commit-id: a2464c7041d292e6f3a2ec0d2b1e75f3bcfce425
2014-03-17 00:08:04 -04:00
Jeremy Long
d6266c36bf major revision to patch issue #86; file type analyzers will no longer initialize if no files were detected that they can process during the scan phase.
Former-commit-id: 6e7cb5893226f556359955295db2dc8116d4d480
2014-03-16 22:39:44 -04:00
Jeremy Long
2fc554e1d4 major revision to patch issue #86; file type analyzers will no longer initialize if no files were detected that they can process during the scan phase.
Former-commit-id: 1d9ef39d5f7898de73ac72bbb9573af763368e95
2014-03-16 22:39:44 -04:00
Jeremy Long
fdd7f30e9a updated initialization of the analyzers to use less looping
Former-commit-id: eab3ca87bdf55a46a530e20a84b0948a3c93b9c6
2014-03-16 07:50:41 -04:00
Jeremy Long
7a35c1638b updated initialization of the analyzers to use less looping
Former-commit-id: 517e0b87d6673c44d50ba60e4e4d50693f22ab98
2014-03-16 07:50:41 -04:00
Jeremy Long
3994ef3619 added a vulnerability suppression analyzer test case
Former-commit-id: d90596a3493f1fd557222fac0568955b5ab58b4f
2014-03-16 07:05:05 -04:00
Jeremy Long
916243468f added a vulnerability suppression analyzer test case
Former-commit-id: 415f214241e2ac6e882ea0291e6c11d991d4be8f
2014-03-16 07:05:05 -04:00
Jeremy Long
633028a63f updated class name
Former-commit-id: 222aa7b23da96eb54517087b3d41190fed3c5724
2014-03-16 07:04:36 -04:00
Jeremy Long
cb56bbc122 updated class name
Former-commit-id: 7cda28ba656b243a6b64d1101cd81a2868837c2c
2014-03-16 07:04:36 -04:00
Jeremy Long
013374e9db renamed class
Former-commit-id: a5b33cd29fb436a5cd95089fed73572cd82d19bd
2014-03-16 07:02:58 -04:00
Jeremy Long
d1b2d5cb27 renamed class
Former-commit-id: 216b78611cee90c521c36b2c20c9324cb5086f4f
2014-03-16 07:02:58 -04:00
Jeremy Long
4358b47e91 renamed class
Former-commit-id: 400624d6366ca83097508d0d65fcd2f5eff4047d
2014-03-16 07:02:34 -04:00
Jeremy Long
884b56a4ef renamed class
Former-commit-id: f27ba73aff027de16b9f950401b4fee125cb19eb
2014-03-16 07:02:34 -04:00
Jeremy Long
6decc1ce30 fixed a bug that caused the suppression file not to load
Former-commit-id: d90f00b1f051fa31c95e957786fd7215dbfdc913
2014-03-16 07:02:10 -04:00
Jeremy Long
eeb8d9cdf5 fixed a bug that caused the suppression file not to load
Former-commit-id: 3cc9ab64b4f9efbc51c497b82d9b63e2edd8376d
2014-03-16 07:02:10 -04:00
Jeremy Long
8a3dba3064 updated the base class name to be more accurate
Former-commit-id: ea9a8e202c24abc7b17a45ce67862c1d93bc0e3e
2014-03-16 07:01:24 -04:00
Jeremy Long
e8d7bbd280 updated the base class name to be more accurate
Former-commit-id: 38c9eed0e4226ce08d11f95b4e7f2a1ecca1f67c
2014-03-16 07:01:24 -04:00
Jeremy Long
27bcead1bc changed the logging level on the "entrance" log
Former-commit-id: f0219ea5cac2552ff0255096ba68e9f6c87b7e11
2014-03-16 07:00:44 -04:00
Jeremy Long
277ee4c4b2 changed the logging level on the "entrance" log
Former-commit-id: 92b0b110cbcf05ca71e22fc244d1daefd5072e26
2014-03-16 07:00:44 -04:00
Jeremy Long
acb9c01776 improved manifest parsing to exclude additional entries per issue #88
Former-commit-id: b4cad8c8d0182c17770be2163e0565378de3ae9a
2014-03-16 04:49:09 -04:00
Jeremy Long
efa6c8135d improved manifest parsing to exclude additional entries per issue #88
Former-commit-id: 0665b1d9967324f6c07e95b593d6b199da5b5ee3
2014-03-16 04:49:09 -04:00
Jeremy Long
79fd23d51b updated so that the Filename was properely escaped in Javascript so that it shows up correctly in the report to fix issue #91
Former-commit-id: e2de967442f9504ede9402760c33a1b7501a3536
2014-03-16 04:13:43 -04:00
Jeremy Long
cbb705c367 updated so that the Filename was properely escaped in Javascript so that it shows up correctly in the report to fix issue #91
Former-commit-id: ec161508db21c0a3d1f4f6f4130e5fdc63d9b367
2014-03-16 04:13:43 -04:00
Jeremy Long
776614d211 minor update to the generated report names
Former-commit-id: 1ee6a44db3df3c060033470b026799cfa8bd744d
2014-03-15 07:48:19 -04:00
Jeremy Long
44326cd8c1 minor update to the generated report names
Former-commit-id: e072df44801e468c7a5d46e2f8eb039a8733865e
2014-03-15 07:48:19 -04:00
Jeremy Long
b03a498cd7 updated to resolve issue #87
Former-commit-id: 56338ff8aee45193cf387ff9d2d0087afd7febaf
2014-03-15 07:46:29 -04:00
Jeremy Long
4592ab4bf5 updated to resolve issue #87
Former-commit-id: 03c12742bbd99b980c605d78b3d25fb1f89ab3cd
2014-03-15 07:46:29 -04:00
Jeremy Long
b612926fb6 minor update to the generated report names
Former-commit-id: 347cefef415fa91f7cf59e1c167772ebfd3f3ce3
2014-03-15 07:42:55 -04:00
Jeremy Long
870849f01a minor update to the generated report names
Former-commit-id: 2319209d909b7350447c91af693f88e57e437a7e
2014-03-15 07:42:55 -04:00
Jeremy Long
b67377f505 patch from davidkarlsen (PR #85) was applied to resolve issue #84
Former-commit-id: 0741248ece9a4df1b1a7595b74aef31c6f74652d
2014-03-12 23:40:42 -04:00
Jeremy Long
a00bcc3df2 patch from davidkarlsen (PR #85) was applied to resolve issue #84
Former-commit-id: ac2f1c66913d08ae2e39293e98a3e7e5b9318b50
2014-03-12 23:40:42 -04:00
Jeremy Long
2033acbe2a updated logo
Former-commit-id: 5c6034247fb4fba8cbd6f9028a01b66d177378fb
2014-03-11 11:59:54 -04:00
Jeremy Long
122dc5baf4 updated logo
Former-commit-id: 4ea34b9862eef2229bd1ba7c2e3868f12c336055
2014-03-11 11:59:54 -04:00
Jeremy Long
e435cfc489 version 1.1.4-SNAPSHOT
Former-commit-id: b7ee0f15a5390df86a06b2e80d66aec6a5c88cb7
2014-03-11 11:52:57 -04:00
Jeremy Long
a276d2da4f version 1.1.4-SNAPSHOT
Former-commit-id: 969be860afdca6a1e86f6ef03b2218c34cb07114
2014-03-11 11:52:57 -04:00
Jeremy Long
a3199a52af version 1.1.3
Former-commit-id: 8d19b8d203026e650047bf3af1b5738d5c6a595f
2014-03-11 11:49:32 -04:00
Jeremy Long
6f04d4d43b version 1.1.3
Former-commit-id: af8a66cf2ecda07b7005d20f9de9dbe14d61e187
2014-03-11 11:49:32 -04:00
Jeremy Long
99be870ab9 created a new getTempFile() to FileUtils that does not create the file, it only generates the file name
Former-commit-id: c3efa45ead91601442903ff190d058810196150d
2014-03-10 21:25:53 -04:00
Jeremy Long
a966f263a2 created a new getTempFile() to FileUtils that does not create the file, it only generates the file name
Former-commit-id: 04e275caade0deba97b3b03cf41fa48f962c0172
2014-03-10 21:25:53 -04:00
Jeremy Long
9b2ecb4701 minor checkstyle correctionn
Former-commit-id: 57438863b9635f339e1eacdd73913c5ed003348f
2014-03-10 14:53:06 -04:00
Jeremy Long
ac5a23ef29 minor checkstyle correctionn
Former-commit-id: 72cfe98796cc4b8ba335c1cf6de293b30e111d99
2014-03-10 14:53:06 -04:00
Jeremy Long
be7443a0a0 updated to ignore .LCKpom.xml~
Former-commit-id: dbbf41fb2d10206ef167f78d04de01e92c4d90ae
2014-03-10 11:25:40 -04:00
Jeremy Long
b82804018d updated to ignore .LCKpom.xml~
Former-commit-id: f81c6f5c3fb3e8529275ce8db56bb0919aa32953
2014-03-10 11:25:40 -04:00
Jeremy Long
0de6557872 updated to delete newly created file prior to attempting to copy a new file into its location
Former-commit-id: f170e09f4290b746808e0400a106ea9d33b992d6
2014-03-10 10:36:03 -04:00
Jeremy Long
35b0b684df updated to delete newly created file prior to attempting to copy a new file into its location
Former-commit-id: 584dc6abeab388acf65ab3d5379616005746db6b
2014-03-10 10:36:03 -04:00
Jeremy Long
258e890056 minor updates for issue #58
Former-commit-id: ffb30eb654dfb71317c32a5553074f45e4024ab9
2014-03-09 12:40:42 -04:00
Jeremy Long
a627ca2127 minor updates for issue #58
Former-commit-id: 6f4d0edc03654c73dc6de29a47d65e6297814613
2014-03-09 12:40:42 -04:00
Jeremy Long
d84bbad79a initial version of test cases
Former-commit-id: 10edfd3544b2231aa5fd5edaeb474cc5d1f1a435
2014-03-09 12:39:36 -04:00
Jeremy Long
05a1096e25 initial version of test cases
Former-commit-id: 7fc3697e5cf1dd2730ea15c4bf7de568033ef9eb
2014-03-09 12:39:36 -04:00
Will Stranathan
07e6477686 Fixed two discrepancies in the CLI options
1) Proxy port and Properties files were both using -p. Now the
properties file uses -P.
2) Nexus Proxy was defaulting to true, even if the properties said
false, so moved the check for its setting to happen after the properties
were merged and had it default to checking the properties file and
setting it to true if the properties didn't say.


Former-commit-id: 9dd50ca9af906a15143dae153b807700bb385054
2014-03-08 18:58:39 -05:00
Will Stranathan
9600e56344 Fixed two discrepancies in the CLI options
1) Proxy port and Properties files were both using -p. Now the
properties file uses -P.
2) Nexus Proxy was defaulting to true, even if the properties said
false, so moved the check for its setting to happen after the properties
were merged and had it default to checking the properties file and
setting it to true if the properties didn't say.


Former-commit-id: 6a4bcb9b457eea5a55e2cc74acc47d69637b7620
2014-03-08 18:58:39 -05:00
Jeremy Long
acde161412 updated grokassembly version in the test case
Former-commit-id: 27e9b36f3b3e72cf68592bd8f5ac7ee83702e565
2014-03-08 06:36:31 -05:00
Jeremy Long
1bb0871948 updated grokassembly version in the test case
Former-commit-id: 233cf163ecf40331a3ac175e764e16bd8d044273
2014-03-08 06:36:31 -05:00
Jeremy Long
8d8f9c6d26 updated to resolve issue #58
Former-commit-id: 4cd1d528f33c8db05a7d0b67460311b1b56426cd
2014-03-08 06:28:36 -05:00
Jeremy Long
6ff50689e1 updated to resolve issue #58
Former-commit-id: 8787dadc04127169c2ae4d19ee0ac96399b63b62
2014-03-08 06:28:36 -05:00
Jeremy Long
c7507d9743 corrected syntax error caused by copy paste
Former-commit-id: 32446494c36bf5ea4536b9825046783bb15d4f0f
2014-03-08 06:22:03 -05:00
Jeremy Long
9b025ddece corrected syntax error caused by copy paste
Former-commit-id: cd7b981f94fbc4e2f5124fc791162c1a96e2c7ce
2014-03-08 06:22:03 -05:00
Jeremy Long
ff970fde56 updated to correctly use the correctly configured temp directory
Former-commit-id: 407f3eb2c3ff887eaa6d7969517af75dda01878a
2014-03-08 06:21:08 -05:00
Jeremy Long
12fd77f0b2 updated to correctly use the correctly configured temp directory
Former-commit-id: 1080d1ae37304188818f59fff5234d29857c64f5
2014-03-08 06:21:08 -05:00
Jeremy Long
2c4a997c64 updated to correctly use the correctly configured temp directory
Former-commit-id: e4b08d63e8eee17f538a2e074dfdc394d446000b
2014-03-08 06:20:32 -05:00
Jeremy Long
0e60883b3d updated to correctly use the correctly configured temp directory
Former-commit-id: e470dd805e126a7b2aae56f067c8fbe4bb85613a
2014-03-08 06:20:32 -05:00
Jeremy Long
5c787e0b69 updated to correctly use the correctly configured temp directory
Former-commit-id: 364d0362f9d9107bbee6e83f495b575b8d657372
2014-03-08 06:20:12 -05:00
Jeremy Long
33b6bfe5be updated to correctly use the correctly configured temp directory
Former-commit-id: 048a7f7464f454810924a61110f0af18ac206c5b
2014-03-08 06:20:12 -05:00
Jeremy Long
41da8435cc added validation for pathToMono argument
Former-commit-id: 763f3960f4c83f45020d8b5144ea98518c797d10
2014-03-08 06:19:21 -05:00
Jeremy Long
8167146372 added validation for pathToMono argument
Former-commit-id: 5a2a58c96ee91b0d0dbf7b5a658a776da8a7141f
2014-03-08 06:19:21 -05:00
Jeremy Long
84ecc4c664 added option to download a file without using the configured proxy
Former-commit-id: 7153a34a12a02a53bf715fe023e820afd42899d2
2014-03-08 06:18:44 -05:00
Jeremy Long
21bbedaf04 added option to download a file without using the configured proxy
Former-commit-id: 234d9ba35d11459473a2f6311ffe4fc56003a083
2014-03-08 06:18:44 -05:00
Jeremy Long
d18a36af22 added the path to mono as a configurable setting
Former-commit-id: 7909cab0f29a44168ccee166170e29882a461a42
2014-03-08 05:42:32 -05:00
Jeremy Long
998aedde33 added the path to mono as a configurable setting
Former-commit-id: e0b0e5eed59f36060c4ad57052fe3e610ff2d637
2014-03-08 05:42:32 -05:00
Will Stranathan
b3e766aa50 Merge branch 'master' of github.com:/colezlaw/DependencyCheck
Former-commit-id: 256f7898af5f72762b6ef21bc1aa00fe8373a360
2014-03-05 21:52:56 -05:00
Will Stranathan
25050da2c9 Merge branch 'master' of github.com:/colezlaw/DependencyCheck
Former-commit-id: c9d90f875ca9fe981d2bb294a7ed416b1e299987
2014-03-05 21:52:56 -05:00
Will Stranathan
0cee54c51b Updated GrokAssembly to catch a couple of possible exceptions
Former-commit-id: 4c462a7b5abf98e7ee0898210c684cd68725e0d0
2014-03-05 21:52:19 -05:00
Will Stranathan
a74cf8ec4d Updated GrokAssembly to catch a couple of possible exceptions
Former-commit-id: dfc1b67da43178d3653c35ab80fa244bbfd3e70b
2014-03-05 21:52:19 -05:00
Will Stranathan
41e436a183 Updated GrokAssembly to catch a couple of possible exceptions
Former-commit-id: c0e10b5e201b6b04eecc58e2de215cd716336e8d
2014-03-04 13:18:04 -05:00
Will Stranathan
e06f0a5d49 Updated GrokAssembly to catch a couple of possible exceptions
Former-commit-id: 52c6ae3bd8ff6acccecd9aa709dceb3c2aed6265
2014-03-04 13:18:04 -05:00
Will Stranathan
743fc19fa3 Merge remote-tracking branch 'upstream/master'
Former-commit-id: 84ffe19906b355e930c8f36659a05c636e5d0b20
2014-03-04 13:13:01 -05:00
Will Stranathan
9d1ea4b551 Merge remote-tracking branch 'upstream/master'
Former-commit-id: c980e2c3cbcfbebd38bd99b62ffcca60f0153eb0
2014-03-04 13:13:01 -05:00
Jeremy Long
76e8c66b1b updated version to 1.1.3-SNAPSHOT
Former-commit-id: 62657e41c409c474918d0c6ac1d1f505e072a682
2014-03-04 07:33:27 -05:00
Jeremy Long
e0410783be updated version to 1.1.3-SNAPSHOT
Former-commit-id: b0d241a5d856244c5dac22f24d2ea135d2e4f545
2014-03-04 07:33:27 -05:00
Jeremy Long
4379ea63f0 corrected intellij idea link
Former-commit-id: be7f327b6641d0819a55f93c3aefe016deca557b
2014-03-03 19:54:46 -05:00
Jeremy Long
d064337c15 corrected intellij idea link
Former-commit-id: da919f5e5b81328e35e7a91f0f16f0c07f42a1e4
2014-03-03 19:54:46 -05:00
Jeremy Long
00ae54b4b2 version 1.1.2
Former-commit-id: 63c1f372e6d093b3d3fa08a0eab102d9422f78c4
2014-03-03 08:51:17 -05:00
Jeremy Long
6379bfb8b8 version 1.1.2
Former-commit-id: 876e8a1a02fdb24968779f6988652e0c11afc866
2014-03-03 08:51:17 -05:00
Jeremy Long
3a7fd7d271 minor update to formating
Former-commit-id: 6bd182ef660034549b2be16b4a22574171351a8b
2014-03-03 07:37:33 -05:00
Jeremy Long
220539e51a minor update to formating
Former-commit-id: b3c3f53e6d227c8b08ff908380bf2af94cb64b04
2014-03-03 07:37:33 -05:00
Jeremy Long
94a0c98bfe added more javadoc
Former-commit-id: 2befc7ec80f7ca2f8c7c25554b0b75e3e515eeb0
2014-03-03 07:32:43 -05:00
Jeremy Long
95cd215e9e added more javadoc
Former-commit-id: 5b42bdc4fdf6670ea5316d21c02a3223a44505d4
2014-03-03 07:32:43 -05:00
Jeremy Long
c2b2b2698d updated pre-flight to correctly skip the proxy if configured to do so
Former-commit-id: ee993ded2a19f2a7fbda3f93c8d53ece43c8b1d1
2014-03-03 07:12:58 -05:00
Jeremy Long
88c04714f8 updated pre-flight to correctly skip the proxy if configured to do so
Former-commit-id: eca1f3b7bf24d88b4e80cda9e296e31ad8c1215b
2014-03-03 07:12:58 -05:00
Jeremy Long
9bb630bae6 minor update to logging statement
Former-commit-id: bdf69f0747e0dbf4a368050df95b5650960420ad
2014-03-03 07:05:24 -05:00
Jeremy Long
6d47e32cac minor update to logging statement
Former-commit-id: 0f197a42a7bdf4eebefed860d5d03b5dd2634a1d
2014-03-03 07:05:24 -05:00
Jeremy Long
c47b2f5b18 corrected spelling
Former-commit-id: c40c47a6b198953b9ae4b5685ee08da5fcd7c0a5
2014-03-03 07:02:59 -05:00
Jeremy Long
fc34b40c0a corrected spelling
Former-commit-id: 9acb6efd615f2327a8235f13bd2054797d8b52f7
2014-03-03 07:02:59 -05:00
Jeremy Long
ecdc9a968d updated logging of properties
Former-commit-id: 6472713deca91c5492cd9895af0257338ed2d847
2014-03-03 07:01:19 -05:00
Jeremy Long
d95fa8a893 updated logging of properties
Former-commit-id: f9e224a9c5ad0972e2f8ae0fc5850947b1e59c2f
2014-03-03 07:01:19 -05:00
Jeremy Long
c041ff66e2 updated imports
Former-commit-id: 44995cd7c14577d508a97e6ecb70f7edbad29a3a
2014-03-03 06:36:25 -05:00
Jeremy Long
b48f83ff49 updated imports
Former-commit-id: f7c013937243063b60f2b5cb7012e476b1fdcc98
2014-03-03 06:36:25 -05:00
Jeremy Long
fe0e2d5c2d corrected long option name for nexus uses proxy argument
Former-commit-id: f8a8a902fb3fb9e3bdcaa875c7563078d798811f
2014-03-03 05:41:55 -05:00
Jeremy Long
c189b258b4 corrected long option name for nexus uses proxy argument
Former-commit-id: 4dfcd0fc4324828ff99138ca5d5903aa8e368a39
2014-03-03 05:41:55 -05:00
Jeremy Long
2cf3bca8de updated documentation
Former-commit-id: 026a64cd80c9870830dd11a37dcdeae0c6274659
2014-03-02 19:23:04 -05:00
Jeremy Long
06fc5e71c3 updated documentation
Former-commit-id: 0380144c003adf7a2e50d32d43f3605a30b6b089
2014-03-02 19:23:04 -05:00
Jeremy Long
b2a817e17b minor checkstyle patch
Former-commit-id: d81d0e9418963d01964eb42aac21d10f1b756a3f
2014-03-02 19:17:08 -05:00
Jeremy Long
8093927579 minor checkstyle patch
Former-commit-id: e72e6856d19861fcfcc18e723852ca5fec2ff58a
2014-03-02 19:17:08 -05:00
Jeremy Long
d1ca951ffa updated to address issue #74
Former-commit-id: d562b1785a7f9b32dff7cd84351eed96c775fdcf
2014-03-02 18:26:58 -05:00
Jeremy Long
d9eed4a460 updated to address issue #74
Former-commit-id: 9ebe411a6f1dae5c0ffb39399fe5b5c63b927836
2014-03-02 18:26:58 -05:00
Jeremy Long
b3932ae8c5 added configuration for whether or not the nexus analyzer should use the configured proxy
Former-commit-id: e604d6862b50d4177f6846111408fce64a3c09eb
2014-03-02 18:16:12 -05:00
Jeremy Long
9d609b6085 added configuration for whether or not the nexus analyzer should use the configured proxy
Former-commit-id: 99f3110346941ebc00c14ae1c00220eef76c1e9f
2014-03-02 18:16:12 -05:00
Jeremy Long
35223d5737 checkstyle fix
Former-commit-id: 5c79f2c38a40c6f339f8383cccdc86c2aa5e3cf4
2014-03-02 12:27:26 -05:00
Jeremy Long
ef97f9c088 checkstyle fix
Former-commit-id: 1968682a460b5b294553f375ea191bcf6a45072b
2014-03-02 12:27:26 -05:00
Jeremy Long
9d263f11e5 fixed JavaDoc @link missing close curly bracket
Former-commit-id: 632dd4de562a1036883103ce89df8f98ee5d8804
2014-03-02 12:26:56 -05:00
Jeremy Long
bb8aa0fe6f fixed JavaDoc @link missing close curly bracket
Former-commit-id: 2ae5d38ac5e469c65e986ff0dd0292dcb8267285
2014-03-02 12:26:56 -05:00
Jeremy Long
3f28b30e95 checkstyle fix
Former-commit-id: ec2da0e3c262923552a219c6be3deb6004b3f154
2014-03-02 12:26:17 -05:00
Jeremy Long
be441d2aa5 checkstyle fix
Former-commit-id: 108f7d5e6b1ef4f59b2d009eddbcb00671576dd8
2014-03-02 12:26:17 -05:00
Jeremy Long
d797abdb1f removed unused argument from runScan
Former-commit-id: 024f830175f347ae45146c4e536ca23d58325838
2014-03-02 12:25:50 -05:00
Jeremy Long
73e089d330 removed unused argument from runScan
Former-commit-id: 777688a5a541a9d3758294cee13f95c7b0d854e5
2014-03-02 12:25:50 -05:00
Jeremy Long
3b3a940ee4 minor code formating change
Former-commit-id: 090e2a881a1977172bc16911c828cde86b417865
2014-03-01 16:09:14 -05:00
Jeremy Long
0a24fb57aa minor code formating change
Former-commit-id: 184bb0405efa2352116c7412efa07bd354df3e96
2014-03-01 16:09:14 -05:00
Jeremy Long
1b5b61b25e cleaned up code duplication
Former-commit-id: 27896a50114fcee9f2aaeb21915b91b4a198f328
2014-03-01 16:08:58 -05:00
Jeremy Long
7f2c51f337 cleaned up code duplication
Former-commit-id: 561f5f16b22f07199450d090ebb8c56df3703739
2014-03-01 16:08:58 -05:00
Jeremy Long
00d29b88df Merge branch 'master' of github.com:colezlaw/DependencyCheck into colezlaw-master
Former-commit-id: f3badca9d690cbf388c593f4bea1594855da6d1e
2014-03-01 15:35:57 -05:00
Jeremy Long
537e490f0f Merge branch 'master' of github.com:colezlaw/DependencyCheck into colezlaw-master
Former-commit-id: 852aaebdb276c0974da0a76fe53e7228228a18a1
2014-03-01 15:35:57 -05:00
Will Stranathan
ab9bc9da74 Merge remote-tracking branch 'upstream/master'
Former-commit-id: c3ccdb83e5ce2cd6fc7f242d3b28aee1a2038d5d
2014-03-01 15:26:53 -05:00
Will Stranathan
4340368e49 Merge remote-tracking branch 'upstream/master'
Former-commit-id: ec7e5a5f328476863cc1d92354268ccf99bc33cf
2014-03-01 15:26:53 -05:00
Jeremy Long
b79f7b7ab8 corrected db initialization sequence
Former-commit-id: c4f33cc7905d8c4d3c9d9c5fb30556533c962e47
2014-03-01 15:26:17 -05:00
Jeremy Long
a85fb3a871 corrected db initialization sequence
Former-commit-id: bfea90ba44673f49b76d509688a6e4a4d6a912a0
2014-03-01 15:26:17 -05:00
Will Stranathan
9b34b5ca89 Fixed merge conflict
Former-commit-id: 4a4bfd553bd5b91c53e87f7e327beb0a605bc21f
2014-03-01 15:07:40 -05:00
Will Stranathan
05a49ff5db Fixed merge conflict
Former-commit-id: b6832bce2c905ca406d328cbf87d45f1ebb50393
2014-03-01 15:07:40 -05:00
Jeremy Long
b486788993 added logos
Former-commit-id: 544b6573d59c880bb01bae28ef3b114327b1cd84
2014-03-01 14:36:51 -05:00
Jeremy Long
0bec242b2e added logos
Former-commit-id: e00a53546ce2671eef59b264fc4b2e12b6f9691f
2014-03-01 14:36:51 -05:00
Jeremy Long
563e9c51e1 added powered by for cloudbees and built using intellij
Former-commit-id: b140717614a6536639509a13440e6000f3a601f4
2014-03-01 14:36:33 -05:00
Jeremy Long
831624897b added powered by for cloudbees and built using intellij
Former-commit-id: c0b21530aad1dfa52e0417e67af22ac3c22f0e30
2014-03-01 14:36:33 -05:00
Jeremy Long
6ab5e3ed4f minor format change
Former-commit-id: e891f090096cb79642fdeb9fe920a3afc12b9293
2014-03-01 14:35:48 -05:00
Jeremy Long
ca8a0e9a88 minor format change
Former-commit-id: f96c54e1fb969fc50ff27ab2a177490efdd3ab66
2014-03-01 14:35:48 -05:00
Will Stranathan
43a6c81151 Merge branch 'master' of github.com:/colezlaw/DependencyCheck
Former-commit-id: 02418eccb8ef85084f8561cb3fd5b8ea04771c63
2014-03-01 07:24:35 -05:00
Will Stranathan
865ff7911a Merge branch 'master' of github.com:/colezlaw/DependencyCheck
Former-commit-id: 1e5c7e9d4b41a70a8139afb2d572a96fba113cd6
2014-03-01 07:24:35 -05:00
Will Stranathan
887a5d50a4 Added proper waitfor to the process. Need to add a watchdog to this
Former-commit-id: 51bea69bb73e379fa7aac776171110fa1f75b8d4
2014-03-01 07:24:12 -05:00
Will Stranathan
eefc6a5567 Added proper waitfor to the process. Need to add a watchdog to this
Former-commit-id: ff4b0b1f2c1254449e63eb660c1dbd31cef21c3b
2014-03-01 07:24:12 -05:00
Will Stranathan
be68f8c3f7 Fixed JULI Logging (stupid fix imports)
Former-commit-id: 75036170c113718e2265dad4c2b436b1613e0da7
2014-03-01 07:24:12 -05:00
Will Stranathan
bf3bc83fd8 Fixed JULI Logging (stupid fix imports)
Former-commit-id: d29bba7ac4ccdf648d9a945e728e9d0dbc301b6e
2014-03-01 07:24:12 -05:00
Will Stranathan
86a4923157 Fixed logging to JULI
Former-commit-id: ab31241151a610fa67bc8102bded86db2250a9fd
2014-03-01 07:24:12 -05:00
Will Stranathan
03b06eee67 Fixed logging to JULI
Former-commit-id: b8155251fa7120e33a042115f36ecac05fc7dce2
2014-03-01 07:24:12 -05:00
Will Stranathan
f80ff31412 Fixed JULI Logging (stupid fix imports)
Former-commit-id: ca5b3b5ad64defefccea4c445414595208205957
2014-03-01 07:16:38 -05:00
Will Stranathan
3bc17e7b83 Fixed JULI Logging (stupid fix imports)
Former-commit-id: 65aa4381b27717ec7bc766f37705fd63941849d1
2014-03-01 07:16:38 -05:00
Will Stranathan
94acc82bf5 Fixed logging to JULI
Former-commit-id: 76cd085130357fc9187f0af43b9670370a261026
2014-03-01 07:13:00 -05:00
Will Stranathan
458297bf56 Fixed logging to JULI
Former-commit-id: 5f5d9b29a6ba76f9193d47aa485b11cadb47bb67
2014-03-01 07:13:00 -05:00
Jeremy Long
3c1a1fcca1 ensured output streams are closed
Former-commit-id: 0c9b622e46349690cf68a383be0ee6c8fd7c553d
2014-03-01 06:59:48 -05:00
Jeremy Long
9673b2aa7c ensured output streams are closed
Former-commit-id: c3102271cd7631bd1e38bf39b5f87ebb71da9e52
2014-03-01 06:59:48 -05:00
Jeremy Long
b3d08e4cb8 refactored closing input streams
Former-commit-id: 04c8b13428a4c7a215058bf54d47c62374d6a946
2014-03-01 06:56:42 -05:00
Jeremy Long
a55710df7b refactored closing input streams
Former-commit-id: 5cb4c326cc8030ff6b776fcc20a6d790494aee43
2014-03-01 06:56:42 -05:00
Jeremy Long
ab766ce85b made a broad catch even broader
Former-commit-id: dc6cae0168ed3bca63141e846599e1b9d13ca616
2014-03-01 06:46:16 -05:00
Jeremy Long
73edd3bc40 made a broad catch even broader
Former-commit-id: 2308606f9459ad25f4b81179f2d93768c5afa35d
2014-03-01 06:46:16 -05:00
Jeremy Long
bcb8245c61 made a broad catch even broader
Former-commit-id: 84bc747061ab345241c00c46e2efbd2493606590
2014-03-01 06:45:57 -05:00
Jeremy Long
f2ee243628 made a broad catch even broader
Former-commit-id: 11528d014d58a77c79b80073503352fce77ef45b
2014-03-01 06:45:57 -05:00
Jeremy Long
c9e60d5c3a made a broad catch even broader
Former-commit-id: 6c1a0015c53bb5ee803de3d1b144d77ebecaa6c0
2014-03-01 06:45:32 -05:00
Jeremy Long
88b1e668ee made a broad catch even broader
Former-commit-id: 909064cae6d9bac8a9630fb9b8cca13f73353bfb
2014-03-01 06:45:32 -05:00
Jeremy Long
eb7c74eea7 checkstyle fixes
Former-commit-id: 8e7c96bf02360aa083ebdb518be60587e15d9192
2014-03-01 06:45:06 -05:00
Jeremy Long
1c92a47d75 checkstyle fixes
Former-commit-id: 1ae545e0e16e3c49e3c6a0d6b95e89bf431c9598
2014-03-01 06:45:06 -05:00
Jeremy Long
40f5911ceb checkstyle fixes
Former-commit-id: f274d6f4fc1103f7cde5ab8bfbe73f3ee4163af9
2014-03-01 06:44:45 -05:00
Jeremy Long
d2a9f0583a checkstyle fixes
Former-commit-id: 81cedcd97db9bc7f1f824cdd2f496a05330b8e5f
2014-03-01 06:44:45 -05:00
Jeremy Long
2a8809adbb checkstyle corrections and Javadoc update
Former-commit-id: b1e73d2eeecba925baad44d36f84ab5c066961fc
2014-03-01 06:44:23 -05:00
Jeremy Long
2621d2e1dc checkstyle corrections and Javadoc update
Former-commit-id: 2bec74eecf56f5a758234edbbaccc146da32c835
2014-03-01 06:44:23 -05:00
Jeremy Long
39524c4064 made a broad catch even broader
Former-commit-id: 183a78f51b69ed5507e27003f5af06a83d3d363b
2014-03-01 06:44:01 -05:00
Jeremy Long
1ce683a95a made a broad catch even broader
Former-commit-id: 1a8c926890702a58037457861f7172cb4916cff5
2014-03-01 06:44:01 -05:00
Jeremy Long
c1cc2d6350 made a broad catch even broader
Former-commit-id: 75551751dcfd126db43dabde20753cc0ce676cee
2014-03-01 06:43:42 -05:00
Jeremy Long
3d5f725004 made a broad catch even broader
Former-commit-id: 303c1ac281443fc121517a4dea88f072bab117bf
2014-03-01 06:43:42 -05:00
Jeremy Long
acb857f433 made a broad catch even broader
Former-commit-id: d96be233d3ebac1879ac8460903e105b6ad556f7
2014-03-01 06:43:23 -05:00
Jeremy Long
655bc4bee3 made a broad catch even broader
Former-commit-id: 1a553b664d41760f313245584ecec0dfd25a55c3
2014-03-01 06:43:23 -05:00
Jeremy Long
d343d92b17 made a broad catch even broader
Former-commit-id: 172c586e791458ca06ae9303a4dc4dadb2df6f33
2014-03-01 06:43:02 -05:00
Jeremy Long
c67d372667 made a broad catch even broader
Former-commit-id: e9900933e58227f32b32b1562f17ae9bf50fe836
2014-03-01 06:43:02 -05:00
Jeremy Long
43cb4716a9 checkstyle fixes
Former-commit-id: ba40bf3ee9abb796a0f21eca8124edc1d63f81c0
2014-03-01 06:42:44 -05:00
Jeremy Long
54e45dac51 checkstyle fixes
Former-commit-id: 377512fe3a5d5fcf92cd2690bff64f53f12e6d4f
2014-03-01 06:42:44 -05:00
Jeremy Long
6222561431 made a broad catch even broader and some minor format changes
Former-commit-id: 09ed906bced54568d92d6c5ff78c83bb4ad39872
2014-03-01 06:42:18 -05:00
Jeremy Long
5b0b594761 made a broad catch even broader and some minor format changes
Former-commit-id: 42c434756593c80eaa02146d2a6a1fd517d9b8e3
2014-03-01 06:42:18 -05:00
Jeremy Long
07b10e9e23 made a broad catch even broader and checkstyle corrections
Former-commit-id: 3bb21494d7658b8f65207b15e2663082dbd0354a
2014-03-01 06:41:40 -05:00
Jeremy Long
cdf6e3b456 made a broad catch even broader and checkstyle corrections
Former-commit-id: 5b6eb0775bfa5604bf27e510d75a693d5eb5dc66
2014-03-01 06:41:40 -05:00
Jeremy Long
dffe8cef7a made a broad catch even broader
Former-commit-id: f18ef8330532059c35e3430b8c0f77c4d3bc6f63
2014-03-01 06:41:11 -05:00
Jeremy Long
cf46afea94 made a broad catch even broader
Former-commit-id: 3ae82930f8d25eeb59f162c44491d2f298ca3031
2014-03-01 06:41:11 -05:00
Jeremy Long
bb26626fd5 made a broad catch even broader
Former-commit-id: ed75ee0071bc9d067db84f99063a1a160d0bbc74
2014-03-01 06:40:54 -05:00
Jeremy Long
ea6cca588c made a broad catch even broader
Former-commit-id: 34ca7cd3269aca17a24e08e0db9d04ef21a17f89
2014-03-01 06:40:54 -05:00
Jeremy Long
2f207de1a0 made a broad catch even broader
Former-commit-id: 2d88c89317b069e035e4d4fc698c323a183994a8
2014-03-01 06:40:29 -05:00
Jeremy Long
1f9996fe62 made a broad catch even broader
Former-commit-id: 419f42bfbdab2328b6d6eb32baaa6b409ce20b82
2014-03-01 06:40:29 -05:00
Jeremy Long
a69419ed04 checkstyle fixes
Former-commit-id: 1b9b1edd2f29967a8701adef4d3461de1089ab5a
2014-03-01 06:40:07 -05:00
Jeremy Long
e0be6c746c checkstyle fixes
Former-commit-id: 0970762bb0105e36ae089aa17013a7be78b988f3
2014-03-01 06:40:07 -05:00
Jeremy Long
be7c1ba914 made a broad catch even broader
Former-commit-id: f38245a785b3b8073ed51ff6e526c71a5cd79ae2
2014-03-01 06:39:45 -05:00
Jeremy Long
2b62bf0337 made a broad catch even broader
Former-commit-id: bf8e7083115bce94128112645eac4d0883e58cbf
2014-03-01 06:39:45 -05:00
Jeremy Long
461f6ad2c1 made a broad catch even broader
Former-commit-id: 99a762ea3306523bba77139fff6605902b2ed760
2014-03-01 06:39:20 -05:00
Jeremy Long
845825c0bf made a broad catch even broader
Former-commit-id: aefe84c760d9146e76ce950bdb83fd15b6772813
2014-03-01 06:39:20 -05:00
Jeremy Long
aff85cbfb8 minor update to the author JavaDoc
Former-commit-id: f3db304c7e14d6eff52c753bf687ccc245842432
2014-03-01 05:47:26 -05:00
Jeremy Long
f9b09e5b61 minor update to the author JavaDoc
Former-commit-id: d4d7f5dae1a2951c0f9175c05afad4ab83afea9c
2014-03-01 05:47:26 -05:00
Jeremy Long
c0ce4523fa minor formating change
Former-commit-id: 928f33f28756b3f3a856df4e8f1b6627d65a681b
2014-03-01 05:47:10 -05:00
Jeremy Long
1403aa18eb minor formating change
Former-commit-id: 2be516fedafbdb88603bf3c041e327fe08e536db
2014-03-01 05:47:10 -05:00
Will Stranathan
65f8b3978d Added colezlaw to the developers list
Former-commit-id: 13623eee87aee8f78ced6716b45bfe7e2764111a
2014-02-28 13:14:54 -05:00
Will Stranathan
ba2fff249d Added colezlaw to the developers list
Former-commit-id: 1055a7ca09579e010792777feeae0e8282635bc5
2014-02-28 13:14:54 -05:00
Jeremy Long
80ca3e114e updated deletion and logging of temporary files to resolve issue #73
Former-commit-id: 7acc91ef84a01b021c5d619602b8a0a7f656947a
2014-02-28 06:52:51 -05:00
Jeremy Long
17447d3cdc updated deletion and logging of temporary files to resolve issue #73
Former-commit-id: 566b0629dc20e7f8fb1fa00fa8d7b3485e739815
2014-02-28 06:52:51 -05:00
Jeremy Long
330e803675 refactored the creation of the HttpUrlConnection objects to a factory
Former-commit-id: a4532bd8195b69cfe274d2dc58268db9010f5cdd
2014-02-28 06:25:08 -05:00
Jeremy Long
3f4c1e7029 refactored the creation of the HttpUrlConnection objects to a factory
Former-commit-id: 984968995bf68ad9889bac843770a0d615d4478c
2014-02-28 06:25:08 -05:00
Jeremy Long
337e9ac3ef removed my previous "correction" for the if statement...
Former-commit-id: 1ff71f2853dd981a9d4d5c48906853425a9fc2b6
2014-02-28 06:03:26 -05:00
Jeremy Long
543bbf34c2 removed my previous "correction" for the if statement...
Former-commit-id: 70509cee3c061bfbfad927a0eb72cd32bc40ad6f
2014-02-28 06:03:26 -05:00
Jeremy Long
dfb78788f9 minor correction to an if statement that missed the explicit check against null
Former-commit-id: 4ec16d7207660799935f692ea761e03599115093
2014-02-28 05:52:49 -05:00
Jeremy Long
5394151e42 minor correction to an if statement that missed the explicit check against null
Former-commit-id: 115a691e3eb74038a1ed7f5d7fe357cb0b2b2a06
2014-02-28 05:52:49 -05:00
Will Stranathan
2dc560f583 Fixes issue 75
Changed getConnection to public and made one which makes using the proxy optional, even if configured

Added a preflight request and proxy logic


Former-commit-id: 3d1225ec0882dfc0efb043c5a70ba1c20639d8f7
2014-02-26 22:19:13 -05:00
Will Stranathan
9349e9cd99 Fixes issue 75
Changed getConnection to public and made one which makes using the proxy optional, even if configured

Added a preflight request and proxy logic


Former-commit-id: 19fdfcf4edacacfa3724c8969c7da74a593f9a7c
2014-02-26 22:19:13 -05:00
Will Stranathan
7355400548 Merge remote-tracking branch 'upstream/master'
Former-commit-id: b066078bf0df0365d850ea71e2434a5376b9cd16
2014-02-26 20:45:30 -05:00
Will Stranathan
594aa03c5a Merge remote-tracking branch 'upstream/master'
Former-commit-id: 0bd0189c8d6b432de170452118a0a6d8f0864191
2014-02-26 20:45:30 -05:00
Jeremy Long
50b4630436 changed log level to hide extraction of Grok Assembly from users
Former-commit-id: dd94cf7d64ecff45da7b172dcd11d690debcda10
2014-02-23 08:45:04 -05:00
Jeremy Long
ff1328dbdd changed log level to hide extraction of Grok Assembly from users
Former-commit-id: c2701066dc9fe268d82539a83e4b5a27e1ad0e04
2014-02-23 08:45:04 -05:00
Jeremy Long
132d43f999 re-wrote the retrieval of the vendor product list to use a generic pair and completely encapsulate all sql objects in CveDB
Former-commit-id: f801fa86d08c5ba7c20d4c7067d4761d254006c9
2014-02-23 08:42:16 -05:00
Jeremy Long
9ba44e32fb re-wrote the retrieval of the vendor product list to use a generic pair and completely encapsulate all sql objects in CveDB
Former-commit-id: f84c88e2acc3c876228150736c71290b3467e2d2
2014-02-23 08:42:16 -05:00
Jeremy Long
0627f20f5e pmd corrections - unused exceptions
Former-commit-id: 338d8220bf6f8bf20d45599f1bc056f5ee103966
2014-02-23 07:45:43 -05:00
Jeremy Long
245becdc8c pmd corrections - unused exceptions
Former-commit-id: 25ac03c35e7805ec5b9a77c3a3deb5c667ae32c7
2014-02-23 07:45:43 -05:00
Jeremy Long
40f329512b checkstyle corrections
Former-commit-id: 8c116dc61d7bd5e5f18ee106fe82c663570eecf9
2014-02-23 07:42:56 -05:00
Jeremy Long
56f77e88a8 checkstyle corrections
Former-commit-id: 54a8da5be77dc5c13ebaa275de668e746d306762
2014-02-23 07:42:56 -05:00
Jeremy Long
c196c08ada updated error messages
Former-commit-id: 88fdd713faf6c53e65540574c9d6140d57f3a7f9
2014-02-22 17:43:12 -05:00
Jeremy Long
695e35634c updated error messages
Former-commit-id: 57b15967c6df98c13a0fd2d940ff20a9166bbaed
2014-02-22 17:43:12 -05:00
Jeremy Long
8f1e0d57bf ensured engine.cleanup() is now being called
Former-commit-id: 89e6222d55cec95327a5a963fee739076ae7673f
2014-02-22 16:46:59 -05:00
Jeremy Long
1f408dd7a7 ensured engine.cleanup() is now being called
Former-commit-id: 99afdd8d82d6dce65d8dd3ac23893070b318c082
2014-02-22 16:46:59 -05:00
Jeremy Long
c30c455a9f updated log levels when logging exceptions
Former-commit-id: 7686e0bb2ae8d6910d741869ed2aaa04c7a39213
2014-02-22 15:50:20 -05:00
Jeremy Long
303a3ac376 updated log levels when logging exceptions
Former-commit-id: 343daf8cf4176d1bb810d7ecd30d56c8cdc6bf4d
2014-02-22 15:50:20 -05:00
Jeremy Long
cd0e8e1c6b updated so compilation/tests work on linux
Former-commit-id: 695390afcd3382af948152e2ece52c341f904b89
2014-02-22 15:30:50 -05:00
Jeremy Long
221537601f updated so compilation/tests work on linux
Former-commit-id: 3759e9438065138e6339aa3a56c81c08215406e4
2014-02-22 15:30:50 -05:00
Jeremy Long
cbeb91f9a9 made initialize and cleanup synchronized so we can avoid un-needed duplicate initialization/cleanup
Former-commit-id: 49daed67275310f5949d589956c519c6270fd96f
2014-02-22 09:25:52 -05:00
Jeremy Long
f08919a829 made initialize and cleanup synchronized so we can avoid un-needed duplicate initialization/cleanup
Former-commit-id: 061d6a1a5c56806ea7c23d2599a6c6f7df1dae58
2014-02-22 09:25:52 -05:00
Jeremy Long
a3830989ba re-structured the database connection factory
Former-commit-id: 5911d108096031506f15f78f758ee6f7b1b2b65f
2014-02-22 08:43:42 -05:00
Jeremy Long
cfb1f8c767 re-structured the database connection factory
Former-commit-id: 5d84399dcb20a271a8e41414ca0604e8a9908727
2014-02-22 08:43:42 -05:00
Jeremy Long
86427e2042 added the AssemblyAnalylzer to the list of analyzer services
Former-commit-id: a9cdd5751609e05a2feaf2880d9669ca95737ad4
2014-02-19 19:41:24 -05:00
Jeremy Long
39d3e447ab added the AssemblyAnalylzer to the list of analyzer services
Former-commit-id: 1099b9174450efa073d25f86d99e710b831ff954
2014-02-19 19:41:24 -05:00
Jeremy Long
8f079de0aa added temporary hack to allow compilation on linux systems - H2 fails to load with AUTO_SERVER=true
Former-commit-id: 14fe96975ada5c5de340614f9fc489e827dd9844
2014-02-18 19:38:13 -05:00
Jeremy Long
bb76242632 added temporary hack to allow compilation on linux systems - H2 fails to load with AUTO_SERVER=true
Former-commit-id: b41ab9787071e97a5cff8c329716f8ff86b215c8
2014-02-18 19:38:13 -05:00
Jeremy Long
651727c697 fix for issue #72
Former-commit-id: b455cad50aa9db54d14a9c2ccc1588451891fc13
2014-02-18 19:36:20 -05:00
Jeremy Long
6bfb709233 fix for issue #72
Former-commit-id: 866b658eddb30ac1617d2d0d1729333a4864f753
2014-02-18 19:36:20 -05:00
Will Stranathan
5c55f4d4bb Ignore the test if we can't run GrokAssembly.exe
Former-commit-id: fb452ac566ea176186b23f94ab238318585cbd16
2014-02-15 15:58:44 -05:00
Will Stranathan
ab9ec7145d Ignore the test if we can't run GrokAssembly.exe
Former-commit-id: f1241a8b701cb989c55de50fc5728306bea06ccd
2014-02-15 15:58:44 -05:00
Jeremy Long
c8502d3b7b updates to resolve issue #71 - added configuration for cve urls to the ant task
Former-commit-id: b343c1c88845a66c3eb12f92e4ff9e468fd82363
2014-02-15 08:32:20 -05:00
Jeremy Long
6ec931fcd7 updates to resolve issue #71 - added configuration for cve urls to the ant task
Former-commit-id: d30b9b01f9af8392e1e8a2493a7c8951d088241f
2014-02-15 08:32:20 -05:00
Jeremy Long
22e3b9b544 updates to resolve issue #71 - added configuration for cve urls
Former-commit-id: 4074c6f54b8813166cbc24b8f51b2ab00a861f50
2014-02-15 07:50:00 -05:00
Jeremy Long
ae76a7f7d4 updates to resolve issue #71 - added configuration for cve urls
Former-commit-id: 5b1ce45649cdefc92c694cea54cedd18fa30b005
2014-02-15 07:50:00 -05:00
Jeremy Long
f16db8298b removed old cwe data file that is not used
Former-commit-id: 0ba5a30678105479c451ed208b54eb1fe0adfbf9
2014-02-14 22:21:28 -05:00
Jeremy Long
2f20bf1bee removed old cwe data file that is not used
Former-commit-id: 9c5edd6f16d1d2b0a2af4ec23ecf7f1c0729c45a
2014-02-14 22:21:28 -05:00
Jeremy Long
cf4a32b260 updated test case to build serialized hashmap for CWE version 2.5 for issue #68
Former-commit-id: 9f39e0eb71be6814ddf2f172a9f2f820b43dc1ef
2014-02-14 22:15:13 -05:00
Jeremy Long
f9d01d2fad updated test case to build serialized hashmap for CWE version 2.5 for issue #68
Former-commit-id: 9246126c1915e65862fddf2fe57a1cf58a2d8401
2014-02-14 22:15:13 -05:00
Jeremy Long
b8d83c37d9 updated to CWE version 2.5 to close issue #68
Former-commit-id: 6644bd106156498a7ca97a43c6b55b084c924f1b
2014-02-14 22:14:33 -05:00
Jeremy Long
1eb1329f68 updated to CWE version 2.5 to close issue #68
Former-commit-id: dcc564320e283425f70f67830047d73cf8099fe4
2014-02-14 22:14:33 -05:00
Jeremy Long
617f6bb8ef removed unused property
Former-commit-id: bfde978664333a2fd95175244aa477dde79b7874
2014-02-14 22:09:34 -05:00
Jeremy Long
51a3e60913 removed unused property
Former-commit-id: 2a808617fae27e023b322604d3364bde29274a01
2014-02-14 22:09:34 -05:00
Jeremy Long
0c9f2bf5d2 added additional logging to try and solve issue #49
Former-commit-id: d037f74eb5a9ddabfb6ce202d96870f2b7277c21
2014-02-14 08:20:26 -05:00
Jeremy Long
30c88a2fe7 added additional logging to try and solve issue #49
Former-commit-id: 5a4e804aa461b3d2603a70ee4aa79b236306d3cc
2014-02-14 08:20:26 -05:00
Jeremy Long
eb9afecd66 Merge branch 'master' of github.com:hgomez/DependencyCheck into hgomez-master
Former-commit-id: 5adc3fb455a6f15209642354a80812771ca0d441
2014-02-14 08:05:33 -05:00
Jeremy Long
4ffd336c72 Merge branch 'master' of github.com:hgomez/DependencyCheck into hgomez-master
Former-commit-id: 031bd2f2e7c9ff211245654fc594fdb1b8630d9f
2014-02-14 08:05:33 -05:00
Jeremy Long
2c1f2ae589 commented out unused properties
Former-commit-id: fbe2c12b8bcaa191284561906a1685493be6f563
2014-02-14 08:02:50 -05:00
Jeremy Long
7cbc047b41 commented out unused properties
Former-commit-id: 80ef6ece02e7e8ed74a34ecb6a580c339ad69431
2014-02-14 08:02:50 -05:00
Henri Gomez
9387b09a19 tipo
Former-commit-id: 995ba8bbdbab4f05148d9460f406837fd6218024
2014-02-14 12:16:17 +01:00
Henri Gomez
adf4222b24 tipo
Former-commit-id: 61cfcee87376f7fe1a1cb1bebc5a0fed875745b4
2014-02-14 12:16:17 +01:00
Henri Gomez
f17f04f00a Skipped Scope parametized
Former-commit-id: 562654d1679b4a6ad59fd5f93c3f1d2a75d8e32b
2014-02-14 12:14:06 +01:00
Henri Gomez
c095118e98 Skipped Scope parametized
Former-commit-id: 7a0807b77afef6a3db24af30ca98b770b44bea04
2014-02-14 12:14:06 +01:00
Jeremy Long
07f0192088 patch for issue #34 - hibernate3.jar no longer reports cpe:/a:jboss:jboss
Former-commit-id: 31cb24ff0052908bda1878057b5d9669e886e70b
2014-02-13 20:51:54 -05:00
Jeremy Long
11d7d25037 patch for issue #34 - hibernate3.jar no longer reports cpe:/a:jboss:jboss
Former-commit-id: e67337af94b3b83cae112f10beed5020540c6440
2014-02-13 20:51:54 -05:00
Jeremy Long
0fd19f0de8 added hibernate3.jar to test resources to test and fix issue #34
Former-commit-id: c2a930c0e5f0d478698b7f91f5b6e0fa27901be1
2014-02-13 20:31:09 -05:00
Jeremy Long
c45ff40250 added hibernate3.jar to test resources to test and fix issue #34
Former-commit-id: c88585d08a3ff93057a81ea15720d6cd88a0d047
2014-02-13 20:31:09 -05:00
Jeremy Long
e954fa6478 fixes for issue #63 and issue #65
Former-commit-id: 40e4da9fe17999748dd94ee91a1c9451576cab75
2014-02-13 20:20:19 -05:00
Jeremy Long
2f8c2b05bd fixes for issue #63 and issue #65
Former-commit-id: 6b5f22ffe706cf8aafa36fc8a118e7119c7f0cdf
2014-02-13 20:20:19 -05:00
Jeremy Long
a0fdfc0f39 Merge branch 'master' of github.com:hgomez/DependencyCheck into hgomez-master
Former-commit-id: 18b064ea5b733ba4f7d42f59a4c69472be1d3389
2014-02-13 06:08:33 -05:00
Jeremy Long
a4c17bb308 Merge branch 'master' of github.com:hgomez/DependencyCheck into hgomez-master
Former-commit-id: 7ce63ad527be7a6270cf877d87c5ad56fe2abb1b
2014-02-13 06:08:33 -05:00
Jeremy Long
57a4372b65 updated getParentLogger to compile under 1.6 for issue #62
Former-commit-id: 4e38bce6f17a87b663e9bcf98bfe727174b4397a
2014-02-11 09:18:41 -05:00
Jeremy Long
75eff7f083 updated getParentLogger to compile under 1.6 for issue #62
Former-commit-id: 67a48a7f1e48bd922ee772bf7e407c2f8b3ed7e1
2014-02-11 09:18:41 -05:00
Henri Gomez
c11cb38269 Add support for extra extensions provided externally
Former-commit-id: c827feb563cde449090dade2b17bfa6709df37be
2014-02-11 14:05:26 +01:00
Henri Gomez
a5b9a707a4 Add support for extra extensions provided externally
Former-commit-id: 6c8632566de0a46ff4ce24ef5285bbd84c8ef89f
2014-02-11 14:05:26 +01:00
Henri Gomez
e4fd446946 No need to redefined Test Scope String
Former-commit-id: 84b8c35340e92ac42805ccb8411648bec4b1f09c
2014-02-11 12:54:26 +01:00
Henri Gomez
1b013db312 No need to redefined Test Scope String
Former-commit-id: 1da78b9b9994d055b38f1f5aeebb6fb67a1fb756
2014-02-11 12:54:26 +01:00
Henri Gomez
714d8ac3ba Artifact with scope Provided and Runtime should be excluded too
Former-commit-id: 018e2bc3ab950e6543f945377b6f492d504d2e0c
2014-02-11 12:51:59 +01:00
Henri Gomez
158250e98d Artifact with scope Provided and Runtime should be excluded too
Former-commit-id: 53e086b5bf02eee8cb4c4f3703a61923608c13dd
2014-02-11 12:51:59 +01:00
jeremylong
f09293e077 corrected link for issue #59
Former-commit-id: fd8e3c933f4d92118d1b8bb4569f101d7d19c74f
2014-02-10 19:53:17 -05:00
jeremylong
f9f4be181d corrected link for issue #59
Former-commit-id: 8b45674adfa218b82738cf910a7ebe03054c1be6
2014-02-10 19:53:17 -05:00
Jeremy Long
389e8bc325 added dependencies to a testAll profile for issue #34
Former-commit-id: 103f0e62cb0a1c4fb5ad49fed85ceb77b11455c0
2014-02-08 23:54:11 -05:00
Jeremy Long
3bea99c000 added dependencies to a testAll profile for issue #34
Former-commit-id: 9cc56005bcb3e33a364a3929d1f361bd45b03662
2014-02-08 23:54:11 -05:00
Jeremy Long
367f763ce5 updated how the description is processsed from the manifest to fix issue #34 for wss4j-1.5.7.jar
Former-commit-id: 5787236ee3e5af407cf5654aeb2a4fe47ecc02c0
2014-02-08 23:53:47 -05:00
Jeremy Long
05e52ca236 updated how the description is processsed from the manifest to fix issue #34 for wss4j-1.5.7.jar
Former-commit-id: 2a9d9fc46b0437778383cdb4f1c34c04ef746c20
2014-02-08 23:53:47 -05:00
Jeremy Long
3febed82f1 added build-id to specific items in the manifest to patch dependencies like batli-util.jar in issue #34
Former-commit-id: 1dfd295cc9c9fa18ab2d271c2a51f4acd98f6421
2014-02-08 22:37:11 -05:00
Jeremy Long
f268a48a16 added build-id to specific items in the manifest to patch dependencies like batli-util.jar in issue #34
Former-commit-id: 0a6727676c5fa63a32fa7d4be18859ca622bad24
2014-02-08 22:37:11 -05:00
Jeremy Long
8a6371fe68 applied patch for m-core CPE per issue #34 - xstreamcore
Former-commit-id: f99b098bdbc1eb43ea885d479f59e0cf998c3e92
2014-02-08 22:35:24 -05:00
Jeremy Long
96bb9a2f8e applied patch for m-core CPE per issue #34 - xstreamcore
Former-commit-id: 9f683ade5473688c106d7bc82e464635a900277e
2014-02-08 22:35:24 -05:00
Jeremy Long
93937feb13 noop
Former-commit-id: 1905d3ed2c839433282bb5a10f0ecc558e2cca39
2014-02-08 22:05:08 -05:00
Jeremy Long
f9b977d266 noop
Former-commit-id: c522f08c16c28265c96b846f58461aa83fe82ed1
2014-02-08 22:05:08 -05:00
Jeremy Long
21e62d8597 removed analysisExceptions from the dependency object, instead we are logging the exception for issue #46
Former-commit-id: 08ea1be2a9c1b3de7ddb3ffcb7ae988e81a53a17
2014-02-08 12:35:53 -05:00
Jeremy Long
7fca2a9cc6 removed analysisExceptions from the dependency object, instead we are logging the exception for issue #46
Former-commit-id: feee45a009165fce559d3bad2e9c45f95f230200
2014-02-08 12:35:53 -05:00
Jeremy Long
88e8019858 removed analysisExceptions for issue #46
Former-commit-id: 9132fc031523d3b132ce23b3c3fc1ce50cb74f1b
2014-02-08 12:24:25 -05:00
Jeremy Long
e473ef36b1 removed analysisExceptions for issue #46
Former-commit-id: d18690baa5de2ad38a46936e5d3e64681b2ccc29
2014-02-08 12:24:25 -05:00
Jeremy Long
cbe562a204 update to make failure more verbose for issue #57
Former-commit-id: d7ca87612e07098bedaf853e13f4baf8af4e32eb
2014-02-08 12:09:58 -05:00
Jeremy Long
3b5b832bbc update to make failure more verbose for issue #57
Former-commit-id: 7315afe74cc78c65254e5f12032ece0a461be751
2014-02-08 12:09:58 -05:00
Jeremy Long
4dc40389a3 updated cobertura version and configuration
Former-commit-id: 9321952919d27087e50493a3d22b66d9e4e98939
2014-02-08 11:57:52 -05:00
Jeremy Long
4cfb451755 updated cobertura version and configuration
Former-commit-id: edd13a1df620a51e1c72a232310d72b90580e81c
2014-02-08 11:57:52 -05:00
Jeremy Long
0552f10c38 moved exceptions to their own package to avoid clutter in the org.owasp.dependencycheck.analyzer package
Former-commit-id: 999c32643e83ca67bc32651373a1d8eb56f74344
2014-02-02 07:13:53 -05:00
Jeremy Long
368d1ad354 moved exceptions to their own package to avoid clutter in the org.owasp.dependencycheck.analyzer package
Former-commit-id: 26bba207b470459d4ca238145592c2b4e776684a
2014-02-02 07:13:53 -05:00
Will Stranathan
c9ac7401e8 Refactored the test run of GrokAssembly to avoid double-closing
Former-commit-id: 8279c075543071cdebf9c1433b6e0b1b0366ed59
2014-02-01 09:33:47 -05:00
Will Stranathan
9a8f7ccba8 Refactored the test run of GrokAssembly to avoid double-closing
Former-commit-id: edc5ae7da2cb52900f9eed1cd133c843f161a9aa
2014-02-01 09:33:47 -05:00
Jeremy Long
60625b9978 Changed from using the ConditionalIgnoreRule to using junit's core assumeFalse
Former-commit-id: caf69b8721d749595459b18f92a75d3a0964e7fa
2014-02-01 09:11:52 -05:00
Jeremy Long
032c8e9fac Changed from using the ConditionalIgnoreRule to using junit's core assumeFalse
Former-commit-id: fa9e77a19adeda13aa30c48c3ffa903ec50ed762
2014-02-01 09:11:52 -05:00
Jeremy Long
b4b53cfa4c updated test case using an invalid mono path so that it does not run on Windows
Former-commit-id: d6a822f2ce18d9f163839d5d1108cbac06a04516
2014-02-01 08:49:00 -05:00
Jeremy Long
20d1abd2e1 updated test case using an invalid mono path so that it does not run on Windows
Former-commit-id: 4a26ca21e64614bf74cb329d8d9b424442e7647c
2014-02-01 08:49:00 -05:00
Jeremy Long
f1e1d67f4e added conditional ignore for JUnit tests
Former-commit-id: 786a9bf2b0886c05fef79eadb39af312fabff893
2014-02-01 08:48:14 -05:00
Jeremy Long
73903cbd1f added conditional ignore for JUnit tests
Former-commit-id: ed8a216bc31a7ac8f69b08d34a0ffc356f1cd912
2014-02-01 08:48:14 -05:00
Jeremy Long
982641752f explicitly closed the FileOutputStream after writting the assembly
Former-commit-id: 075cb26447cd678c7583e7273cfafc54e568b110
2014-02-01 08:20:24 -05:00
Jeremy Long
bff22a4e4e explicitly closed the FileOutputStream after writting the assembly
Former-commit-id: 70d6fbcd06acad1cb950c7dff8829891cd5c4721
2014-02-01 08:20:24 -05:00
Jeremy Long
ba66cbbc95 Merge branch 'grokassembly-work' of https://github.com/colezlaw/DependencyCheck
Former-commit-id: 92ab9fac4710a9bcd79c7274f4046af3b60eb0e6
2014-02-01 08:10:22 -05:00
Jeremy Long
daaaed4118 Merge branch 'grokassembly-work' of https://github.com/colezlaw/DependencyCheck
Former-commit-id: bfee1c77cc20c2fdd34a20a12696ad8009a86cd0
2014-02-01 08:10:22 -05:00
Will Stranathan
750d13a300 Fixed merge conflicts
Former-commit-id: d02a369299de3102bd900d12f8f1c196760297c2
2014-01-31 21:52:08 -05:00
Will Stranathan
c2c9db66e2 Fixed merge conflicts
Former-commit-id: 64182608dd121fd22aded543552d857009cf7af9
2014-01-31 21:52:08 -05:00
Will Stranathan
3c69a87fc2 Adding the AssemblyAnalyzer to analyze .NET assemblies
Changed the author on a few files

Added GrokAssembly.exe for grokking assemblies

First revision of the assembly analyzer

Added ability to configure where mono is located


Former-commit-id: a5da71bc9103331d67994bab9e102315f26641e4
2014-01-31 21:44:28 -05:00
Will Stranathan
09308083a9 Adding the AssemblyAnalyzer to analyze .NET assemblies
Changed the author on a few files

Added GrokAssembly.exe for grokking assemblies

First revision of the assembly analyzer

Added ability to configure where mono is located


Former-commit-id: c0fa65ecb227f23c8432a5950403483be8b5de25
2014-01-31 21:44:28 -05:00
Jeremy Long
dbaddab07b updated to use markdown syntax rather then HTML (fixing vm/md interaction)
Former-commit-id: bf026d07068e01f05f8385e6b6eae4c90c612500
2014-01-31 06:15:37 -05:00
Jeremy Long
cf492355b4 updated to use markdown syntax rather then HTML (fixing vm/md interaction)
Former-commit-id: bde9d01fb7a656bd115ec23994bc474c82bfcf74
2014-01-31 06:15:37 -05:00
Jeremy Long
1d58811680 updated version to 1.1.2-SNAPSHOT
Former-commit-id: cf04ee675be56ea7990299ca58e4dcaeb0db01e9
2014-01-31 05:38:29 -05:00
Jeremy Long
1cd1b1cb08 updated version to 1.1.2-SNAPSHOT
Former-commit-id: 0ee7b4a66d817b5e78e6838ddd0c66527146a684
2014-01-31 05:38:29 -05:00
Jeremy Long
4d78fe9ca4 version 1.1.1
Former-commit-id: 7e101d5bb64d73a33de423c8ac2b0bd8dc1f1c58
2014-01-30 06:23:34 -05:00
Jeremy Long
91a137ab95 version 1.1.1
Former-commit-id: bde142783532d8d46b468e644f3af8ecc42c40d3
2014-01-30 06:23:34 -05:00
Jeremy Long
56d3082696 test cases for javascript analyzer
Former-commit-id: 35f727643d61b382a32ca7727b1e11b2993a2b43
2014-01-29 20:07:48 -05:00
Jeremy Long
efd4b8ec11 test cases for javascript analyzer
Former-commit-id: 1660584330a7cfc79a1b9aa99a3bc727e7dba231
2014-01-29 20:07:48 -05:00
Jeremy Long
8f573aba2f removed test case for issue #51 - need more information as I cannot get the exception to be thrown
Former-commit-id: 9cc6533837ee499ecedec872d548a6904520ca2a
2014-01-29 06:14:30 -05:00
Jeremy Long
9803c75fbd removed test case for issue #51 - need more information as I cannot get the exception to be thrown
Former-commit-id: 03b40b0b3e83ff008f562894851242f062a49161
2014-01-29 06:14:30 -05:00
Jeremy Long
96633360d0 disabled nexus analyzer for ArchiveAnalyzer tests
Former-commit-id: 24680f001da27228bdce1982e8829e0c396c32a9
2014-01-29 05:58:19 -05:00
Jeremy Long
509bbc7743 disabled nexus analyzer for ArchiveAnalyzer tests
Former-commit-id: 0966a39d20f8aabe1c64d970affe1cf2ce92794e
2014-01-29 05:58:19 -05:00
Jeremy Long
8ae7935cee updated compareTo test to use cpe:/a:yahoo:toolbar:3.1.0.20130813024103 to test the fix for issue #53
Former-commit-id: 6dfb55599122507df4503af7ad8c62d4f8a10cf3
2014-01-29 05:55:28 -05:00
Jeremy Long
f7a2428ba9 updated compareTo test to use cpe:/a:yahoo:toolbar:3.1.0.20130813024103 to test the fix for issue #53
Former-commit-id: 38775e8c129e8ecd7f603ae7d86d0583b4b5fe77
2014-01-29 05:55:28 -05:00
Jeremy Long
68e860baad Converted integer.compareTo to long.compareTo and added a fall back of string compareTo to fix issue #53
Former-commit-id: 7921056eea0467199e7b81dbdabb3fe8cd4fa0aa
2014-01-29 05:45:53 -05:00
Jeremy Long
c79a9f2ce3 Converted integer.compareTo to long.compareTo and added a fall back of string compareTo to fix issue #53
Former-commit-id: 91d7ae202006dbebf21e6cdfadbfa7995ace08ca
2014-01-29 05:45:53 -05:00
Jeremy Long
38ead3133f patched issue #52 - corrected the @parameter for the connectionString field
Former-commit-id: bdd6225f8241211d7a95243b8904e1ed981ab0e8
2014-01-28 19:48:35 -05:00
Jeremy Long
685569e131 patched issue #52 - corrected the @parameter for the connectionString field
Former-commit-id: b725fc34543d4c540f337cfcf34e4a98656be9ad
2014-01-28 19:48:35 -05:00
Will Stranathan
553d1f85c4 First revision of the assembly analyzer
Former-commit-id: f42b163a91f8e0d80bb94b8976d98d5bc4537d4a
2014-01-28 19:23:13 -05:00
Will Stranathan
ca44e3062e First revision of the assembly analyzer
Former-commit-id: ebe1edf714da079f80af33ed257e37b2750304fd
2014-01-28 19:23:13 -05:00
Will Stranathan
d9a985ff38 Added GrokAssembly.exe for grokking assemblies
Former-commit-id: a5731df40aaea0b93234f9654e680c8514d4eff3
2014-01-28 19:21:54 -05:00
Will Stranathan
3d919f1836 Added GrokAssembly.exe for grokking assemblies
Former-commit-id: 3886ba720b7ed3d090f3d58fa372be7d2a7aee52
2014-01-28 19:21:54 -05:00
Will Stranathan
d3a2d2b248 Changed the author on a few files
Former-commit-id: a582d3c248ff2bf886e591dd0900b85d251f0499
2014-01-28 17:10:48 -05:00
Will Stranathan
f4fa2150b5 Changed the author on a few files
Former-commit-id: 67923ceb8b5419eaccfbc33a9b34bf92f0916c00
2014-01-28 17:10:48 -05:00
Jeremy Long
575b8e5f62 test data for JavaScript Analyzer
Former-commit-id: 74e81d8a232c0f08528ccf1d3b7e682ab68351a8
2014-01-28 05:25:54 -05:00
Jeremy Long
0e28c8e0d5 test data for JavaScript Analyzer
Former-commit-id: 16067187a5347cdee260b4137a40480eae5b04d6
2014-01-28 05:25:54 -05:00
Jeremy Long
37ff924c74 added getActualFile() to return a file reference
Former-commit-id: 8345595a53974056e692888cda5fb37adb159fd5
2014-01-28 05:24:54 -05:00
Jeremy Long
cb25fc03f9 added getActualFile() to return a file reference
Former-commit-id: 0c04828262c08a962766240275afb340293bd0dd
2014-01-28 05:24:54 -05:00
Jeremy Long
7ccbc4c77c Merge branch 'nuspec' of https://github.com/colezlaw/DependencyCheck into colezlaw-nuspec
Former-commit-id: 75cf8bb16a7e96614eadbe9215e426d31d624c61
2014-01-27 06:12:15 -05:00
Jeremy Long
7a64b84c5f Merge branch 'nuspec' of https://github.com/colezlaw/DependencyCheck into colezlaw-nuspec
Former-commit-id: e6405eaa708463b1182917ac46cff99a4e369034
2014-01-27 06:12:15 -05:00
Jeremy Long
27b7a60a8d Merge branch 'master' of github.com:jeremylong/DependencyCheck
Former-commit-id: a00b3326187f58300caeb2c4ed3e3f0ff5019bd1
2014-01-27 06:11:14 -05:00
Jeremy Long
1cac8a857d Merge branch 'master' of github.com:jeremylong/DependencyCheck
Former-commit-id: 181804ca53fa09f7eebefe28be71d3163d4cda4c
2014-01-27 06:11:14 -05:00
Jeremy Long
dca731ffb8 updated version to 1.1.1-SNAPSHOT
Former-commit-id: 44a7c9e701bb0b77f44b66bc907e5ef0e2872d34
2014-01-27 06:10:04 -05:00
Jeremy Long
f6e02aec2a updated version to 1.1.1-SNAPSHOT
Former-commit-id: 5945cef222dceb28d8a94939178e33994ef344b4
2014-01-27 06:10:04 -05:00
Will Stranathan
0d56de99a7 Converted to XPath instead of SAX
Former-commit-id: 347fab1b558d21c861bebc90e83f5906b025d6c5
2014-01-26 22:11:11 -05:00
Will Stranathan
78f7152f6c Converted to XPath instead of SAX
Former-commit-id: e6062e1b9497a7134b6923f7f85e1fe3f18cefcc
2014-01-26 22:11:11 -05:00
Steve Springett
ac5e11d327 Update index.md
Former-commit-id: 0e9eae696ece692884605364b54dd274bf336280
2014-01-26 16:04:50 -06:00
Steve Springett
1f4746c90a Update index.md
Former-commit-id: 19311fc6b0ca9e4fc1f287a221fd9d5472f06010
2014-01-26 16:04:50 -06:00
Steve Springett
9d315b0ff9 Update index.md
Former-commit-id: 545194f3b7f5c4eac87ba9efbc572ee227207b3c
2014-01-26 16:04:26 -06:00
Steve Springett
c5f95e79d6 Update index.md
Former-commit-id: 7562696a0d4451fccf833b7a12cb4acd0c0acd9a
2014-01-26 16:04:26 -06:00
Steve Springett
038fe84498 Update README.md
Synched file with version on jenkins-ci

Former-commit-id: 75226b362d729ba057087ab112cf0a5f63f17355
2014-01-26 16:03:11 -06:00
Steve Springett
bd4cbc54fb Update README.md
Synched file with version on jenkins-ci

Former-commit-id: 798c1812cfa62bc7905e70638e3826effbea2069
2014-01-26 16:03:11 -06:00
Jeremy Long
4fd59f2a19 fixed bug in markdown velocity combo - velocity comments are the same as section headers (##) in markdown
Former-commit-id: 7c212d61702ede1aa46ca06a7cf4db1ef7858b73
2014-01-26 11:07:42 -05:00
Jeremy Long
2f83c2ee89 fixed bug in markdown velocity combo - velocity comments are the same as section headers (##) in markdown
Former-commit-id: 9343b0368aa1c1604c5e8d90846545baa95975dd
2014-01-26 11:07:42 -05:00
Jeremy Long
f77c3bfdf7 updated license to apache 2.0
Former-commit-id: 5fb30c8b2ef1ac701a25b125c0af2b3b1c5366a9
2014-01-26 10:49:43 -05:00
Jeremy Long
11edce737b updated license to apache 2.0
Former-commit-id: f9f6a84a1256407f2b4c1723a15c40f0362dae99
2014-01-26 10:49:43 -05:00
Jeremy Long
dc7d941316 version 1.1.0
Former-commit-id: eb10444fba445f89d8d788ecea4afd45e5ae48c5
2014-01-26 10:39:18 -05:00
Jeremy Long
9e22068a78 version 1.1.0
Former-commit-id: 458dbfc20a4477faa3f2a352cdc32ff2404a342d
2014-01-26 10:39:18 -05:00
Jeremy Long
433cc1e32c updated error messages
Former-commit-id: 2b1c5e7560f30d1aaf2215bdc8997961a637d083
2014-01-26 09:02:08 -05:00
Jeremy Long
c9461a8e63 updated error messages
Former-commit-id: cc268fa838d99aa0e4de3cccd6fd3203d572c449
2014-01-26 09:02:08 -05:00
Jeremy Long
c066a03683 upated site documentation with new configuration options
Former-commit-id: 45cf2c9c581c0eef2ef0fd6ba4d70b7b01191019
2014-01-26 07:04:53 -05:00
Jeremy Long
70bbb54563 upated site documentation with new configuration options
Former-commit-id: 792785d77bbf2a805cfbf56f34e612f66684b981
2014-01-26 07:04:53 -05:00
Jeremy Long
562a8036bc updated site documentation with new command line arguments
Former-commit-id: 8a71639e0513a46249bdfa63fe6f7c991dd09c12
2014-01-26 07:04:25 -05:00
Jeremy Long
de2a47c741 updated site documentation with new command line arguments
Former-commit-id: f6c0f55e926b617b3d74d851928127fcbf6ab01e
2014-01-26 07:04:25 -05:00
Jeremy Long
53ac703f09 updated site documentation with new configuration options
Former-commit-id: 9d5b228f694707daf07a3b5da95f92d7d4044f23
2014-01-26 07:04:01 -05:00
Jeremy Long
8038f18209 updated site documentation with new configuration options
Former-commit-id: 2f3ed529800fbf4dd10e21ab713175d426769891
2014-01-26 07:04:01 -05:00
Jeremy Long
a2891d97d0 reduced number of years of NVD CVE data are downloaded during integration tests
Former-commit-id: c6a0dc095982d432b10e6bdb053b7845e433bd14
2014-01-26 07:03:17 -05:00
Jeremy Long
98b0500c98 reduced number of years of NVD CVE data are downloaded during integration tests
Former-commit-id: 714594eb3c9c26c2ec8967b22ddfa1fafa876ed9
2014-01-26 07:03:17 -05:00
Jeremy Long
2bd5169f20 corrected test case
Former-commit-id: 9b678d7c08b3b579bc4b906a42cbf5a2a91bc56b
2014-01-26 07:01:23 -05:00
Jeremy Long
3743988fd8 corrected test case
Former-commit-id: 2604392e83f5b1bf398d4e2d08e7592aa4d7bb36
2014-01-26 07:01:23 -05:00
Jeremy Long
b3fd6d8c92 fixed checkstyle complaints
Former-commit-id: f70d63d6d79672ff7dbab2a632a4416b8ebf9932
2014-01-25 16:03:15 -05:00
Jeremy Long
fb13e5ec8f fixed checkstyle complaints
Former-commit-id: 8cfbf34210a3b861801fd29ef355efb37c566370
2014-01-25 16:03:15 -05:00
Jeremy Long
cea281b1d3 removed unused local variable
Former-commit-id: e8f50ee25c4c3eb847bf8cf3193658e910f7642e
2014-01-25 16:00:28 -05:00
Jeremy Long
aed044dcc6 removed unused local variable
Former-commit-id: 8fceb153a589891e4071a53ba5a9bd92a8d64be2
2014-01-25 16:00:28 -05:00
Will Stranathan
e85b2a8961 Updated javadocs
Former-commit-id: 95ccb83a8808430031e13045026447a7ec88634f
2014-01-25 11:27:28 -05:00
Will Stranathan
17e3e51607 Updated javadocs
Former-commit-id: 9c054f0396b8b1431cc87759b0e43e13d1b14086
2014-01-25 11:27:28 -05:00
Jeremy Long
77b879d6bb changed nested ifs to avoid checkstyle complaint
Former-commit-id: ed48131125733c56cf48a817425abdb2ca117ef6
2014-01-25 11:06:45 -05:00
Jeremy Long
6badd51b69 changed nested ifs to avoid checkstyle complaint
Former-commit-id: 9dbe97cb0d0899dd2920dacdfda82778455a0d89
2014-01-25 11:06:45 -05:00
Jeremy Long
9de3ae5cf2 made variable final - checkstyle
Former-commit-id: 1834255b8a05b21e2b55777f183be09d47a50b0f
2014-01-25 11:06:09 -05:00
Jeremy Long
82e4677b0d made variable final - checkstyle
Former-commit-id: 9ce0624d3df3d1924a5a673f7f4715a960b1fabf
2014-01-25 11:06:09 -05:00
Jeremy Long
b3a0dc3506 commented out dead/useless code
Former-commit-id: 65569e27e22cab96c8f223a732aca2a4d841e71e
2014-01-25 11:05:46 -05:00
Jeremy Long
95c824f401 commented out dead/useless code
Former-commit-id: a3c88ebfa5de6c197e005857867a9d684d65d949
2014-01-25 11:05:46 -05:00
Jeremy Long
383731da4d made variable final - checkstyle
Former-commit-id: c2a162bfe81e865645bb61f591850b4b6074ed1c
2014-01-25 11:05:17 -05:00
Jeremy Long
f6650a95cf made variable final - checkstyle
Former-commit-id: 70261fef09fa5922284ebd8180293f8f374432c3
2014-01-25 11:05:17 -05:00
Jeremy Long
67abb42652 made variable final - checkstyle
Former-commit-id: 5a892d6090e5d577ee836580f0c84c69de25c3cb
2014-01-25 11:04:49 -05:00
Jeremy Long
9256341c70 made variable final - checkstyle
Former-commit-id: 00065565e86823a976bdfd37d10891abe11140a2
2014-01-25 11:04:49 -05:00
Jeremy Long
edcc24bc12 checkstyle correction (line length)
Former-commit-id: a714f369e530b0511fe56f8d145ee664529632b9
2014-01-25 11:04:20 -05:00
Jeremy Long
696c7d0e21 checkstyle correction (line length)
Former-commit-id: 9dd3434ff9ed9e45d547a9179bb7880fdb29b055
2014-01-25 11:04:20 -05:00
Jeremy Long
a6836cab15 updated javadoc - checkstyle
Former-commit-id: a22973e158a4dfcc99e97d020e003811a4192bd1
2014-01-25 11:03:28 -05:00
Jeremy Long
be3fa7b940 updated javadoc - checkstyle
Former-commit-id: dade094f81ab4fa6889608cd1eef6903c0608bfc
2014-01-25 11:03:28 -05:00
Jeremy Long
8f985737b0 fixed casing on variable - checkstyle
Former-commit-id: 5ca2786ba5a1c42e670f0d352a92f7789b1ddc60
2014-01-25 11:03:09 -05:00
Jeremy Long
9f1aac5138 fixed casing on variable - checkstyle
Former-commit-id: 35b32c4948f98188bdc0795f45978808342e91c7
2014-01-25 11:03:09 -05:00
Jeremy Long
6e2f102177 updated header to check for maven instead of core
Former-commit-id: ea773975d79bf4669a359cbd7d9f2d4bb86dc690
2014-01-25 11:02:27 -05:00
Jeremy Long
310a6003fd updated header to check for maven instead of core
Former-commit-id: d339263a9c285307cbc6238d47b3dbbf29199301
2014-01-25 11:02:27 -05:00
Jeremy Long
46a768339a updated header to check for cli instead of core
Former-commit-id: b35670d2c988440aa9c89075a59d04be16e6b083
2014-01-25 11:02:10 -05:00
Jeremy Long
0e58388d77 updated header to check for cli instead of core
Former-commit-id: ee914e7c79eecf842aa4ec5633edf6d40eb03801
2014-01-25 11:02:10 -05:00
Jeremy Long
f1dbbd62e9 updated header to check for ant intead of core
Former-commit-id: cb6514a027e839a4f42cecb6e3f0c1b5cdbd0403
2014-01-25 11:01:55 -05:00
Jeremy Long
c90e1d5c11 updated header to check for ant intead of core
Former-commit-id: 78d2442fde3e4f666e58810fc65e10087d2f0df7
2014-01-25 11:01:55 -05:00
Jeremy Long
8bb94889e0 updated test to use updated constructor
Former-commit-id: 8437442dec0c400bc5adeb391dd8a7b58f0b981b
2014-01-25 07:05:00 -05:00
Jeremy Long
819d6719c3 updated test to use updated constructor
Former-commit-id: 5e043eeddb41eff876df7172a2af76c80333950a
2014-01-25 07:05:00 -05:00
Jeremy Long
da38e4e00c minor changes to comply with checkstyle
Former-commit-id: d4c2b3c4903fafae577a018191d061fe8c079894
2014-01-25 07:02:29 -05:00
Jeremy Long
2b16072d6e minor changes to comply with checkstyle
Former-commit-id: af97a1e75f24b7ba5f4596f1db409a8a24decd66
2014-01-25 07:02:29 -05:00
Jeremy Long
d8e8156b1c minor changes to comply with checkstyle
Former-commit-id: a6bbfb32f741ec60a9c45c89c8a70f4260622484
2014-01-25 07:02:19 -05:00
Jeremy Long
8af35d4c2b minor changes to comply with checkstyle
Former-commit-id: 329cea1defa2e9ecd3e1361f6856cfb38e900423
2014-01-25 07:02:19 -05:00
Jeremy Long
77a1b18673 minor changes to comply with checkstyle
Former-commit-id: fd4cf6e784b842c6f07e9d971b9ce3b4c7b5732b
2014-01-25 07:02:08 -05:00
Jeremy Long
a4c37b3b9f minor changes to comply with checkstyle
Former-commit-id: 29d398a6b5f3a1bb543971edf98557179b601486
2014-01-25 07:02:08 -05:00
Jeremy Long
9abd51f318 removed deprecated constructor
Former-commit-id: 1df959763cbe32fe7a820c59ed3280770ab98be0
2014-01-25 07:01:46 -05:00
Jeremy Long
8a8241dd1f removed deprecated constructor
Former-commit-id: e368144a6f24187c9da05aa55e5a14a2a54621f2
2014-01-25 07:01:46 -05:00
Jeremy Long
c7d51a29ac minor variable name change to comply with checkstyle
Former-commit-id: 4ad1e6d6ce2d9bc52ff4af7a281139ccb5068e2c
2014-01-25 06:57:18 -05:00
Jeremy Long
b2222d368a minor variable name change to comply with checkstyle
Former-commit-id: bd2ec0531582daa1b2503089615c9ff3d5ba2b06
2014-01-25 06:57:18 -05:00
Jeremy Long
ac453ef32a minor checkstyle corrections
Former-commit-id: 642c6226ad3c4e88816357023a771fbec02fc2b3
2014-01-25 06:54:32 -05:00
Jeremy Long
04077ec6eb minor checkstyle corrections
Former-commit-id: 3dbac08863eb5ab90d31b72cdf86cdceb2ef1c0e
2014-01-25 06:54:32 -05:00
Jeremy Long
db25493c04 javadoc corrections
Former-commit-id: 7dead0cee614e4f1e8f8b04fd8852d06710c0615
2014-01-25 06:46:40 -05:00
Jeremy Long
96582ff622 javadoc corrections
Former-commit-id: 66eafb0407a27982c30d2a1933860216722ad06a
2014-01-25 06:46:40 -05:00
Jeremy Long
8d4b4d3cd9 removed test code
Former-commit-id: 50f96d8656dce9caf40a2f139046de96700aa8b5
2014-01-25 06:43:21 -05:00
Jeremy Long
d4d193fe9d removed test code
Former-commit-id: c277b6cd78cca30b349a102dca26730db90684f4
2014-01-25 06:43:21 -05:00
Jeremy Long
b05f13d82b added javadoc comments and corrected a typo in pom.xml file names
Former-commit-id: a066b9343c8895ad2ee7b7b419fdb0d6dd0d8cfe
2014-01-25 06:42:45 -05:00
Jeremy Long
3516d804a4 added javadoc comments and corrected a typo in pom.xml file names
Former-commit-id: 3cbb40c4a741584243535fcfc7c407ca32cb89df
2014-01-25 06:42:45 -05:00
Jeremy Long
438622d450 checkstyle correction and removed the deprecated constructor
Former-commit-id: 02e0f7555ce43b2b5b161ba0536182f72a9561b2
2014-01-25 06:42:03 -05:00
Jeremy Long
5b1fe811c3 checkstyle correction and removed the deprecated constructor
Former-commit-id: e4a8428bce9a76afdbebc06276568761cbb9ffe9
2014-01-25 06:42:03 -05:00
Jeremy Long
4f79efedc9 moved the "data" option to the advanced options
Former-commit-id: 968ebcef8a9b57fc94e0c9ddaf212c24aa474441
2014-01-25 06:14:21 -05:00
Jeremy Long
cde8f50659 moved the "data" option to the advanced options
Former-commit-id: e18dce070ca110e7c75c868181a576151f08a418
2014-01-25 06:14:21 -05:00
Jeremy Long
845fa89d0f updated CLI arguments for issue #48 and issue #33
Former-commit-id: 58e6b9042814d9c76c51b7f0b88b6ec7ef50b938
2014-01-25 06:09:59 -05:00
Jeremy Long
8fb97ed04e updated CLI arguments for issue #48 and issue #33
Former-commit-id: 58d14a7c52a2dbdd7a785845e705d0ef0db067f4
2014-01-25 06:09:59 -05:00
Jeremy Long
29768576c8 updated CLI to have advanced options, including setting an external DB Connection String for issue #33, in support of issue #48
Former-commit-id: 09e0ee85e07aa4fc2ecf1c04cb46621b173d09b3
2014-01-25 06:09:24 -05:00
Jeremy Long
7e438df89f updated CLI to have advanced options, including setting an external DB Connection String for issue #33, in support of issue #48
Former-commit-id: 086975143f6b6ef21b3cc92dc36b94f074ed59a4
2014-01-25 06:09:24 -05:00
Jeremy Long
4e659d799d updated configuration for issue #48
Former-commit-id: 216f09b8e720d692bb5f6b64989d911e51ebc8f9
2014-01-24 19:04:20 -05:00
Jeremy Long
f39548d6a0 updated configuration for issue #48
Former-commit-id: 929f2bdb9a9beb675b8ee0ad053e2a3d5b97005c
2014-01-24 19:04:20 -05:00
Jeremy Long
10596bcb54 updated configuration for issue #48
Former-commit-id: 3c1b2802c76761dc206d889edb122cc61eb01a18
2014-01-24 19:04:03 -05:00
Jeremy Long
67a18188c7 updated configuration for issue #48
Former-commit-id: 30669fd6f7247f2a63ceacfb49c46e848e6dc923
2014-01-24 19:04:03 -05:00
Jeremy Long
5ac6f4f7b3 added nexus configuration options
Former-commit-id: a886b4099635bc272b6a51dff687b584870bcc45
2014-01-24 18:51:20 -05:00
Jeremy Long
bc1f4e3cf2 added nexus configuration options
Former-commit-id: 89fa384e04ac6b49bb7571efa4b873f53fe84ecc
2014-01-24 18:51:20 -05:00
Jeremy Long
957bb46e5c added nexus configuration options
Former-commit-id: 1d96659cf64c10cf92c9db1b5be4a50685e79eae
2014-01-24 18:51:07 -05:00
Jeremy Long
04c217f72e added nexus configuration options
Former-commit-id: 101000a61f23b67ef8c311bff2c543cfa34fb584
2014-01-24 18:51:07 -05:00
Jeremy Long
1042a537c1 added nexus configuration options
Former-commit-id: a1c80659cd5c8879665504a016d772b95f117c4e
2014-01-24 18:50:54 -05:00
Jeremy Long
f537cc1b6a added nexus configuration options
Former-commit-id: c5a7b5feac95909ee6b4359ebfd6badc261c68ae
2014-01-24 18:50:54 -05:00
Jeremy Long
2159b4b691 added nexus configuration options
Former-commit-id: b99c1ee21ecd564e5da591a53651768d8206a507
2014-01-24 18:50:32 -05:00
Jeremy Long
3a698abf45 added nexus configuration options
Former-commit-id: effe33b77171c4ecc312ca08ef25dd5ae667f81a
2014-01-24 18:50:32 -05:00
Jeremy Long
ce48e07e18 Merge branch 'master' of https://github.com/colezlaw/DependencyCheck into colezlaw-master
Former-commit-id: 9b311277bde8fc8e0d9c8ff10c8b2f2a6abf5c84
2014-01-24 17:35:54 -05:00
Jeremy Long
0d6a72d364 Merge branch 'master' of https://github.com/colezlaw/DependencyCheck into colezlaw-master
Former-commit-id: 5c3cc39a8cea339d2c217cc9c10cb55e60dd735b
2014-01-24 17:35:54 -05:00
Will Stranathan
48dded02c6 Added the NuspecAnalyzer to the list of analyzers
Former-commit-id: 615a6216cb3b484cac1dca4cc6b06f80389c2e7a
2014-01-24 07:11:18 -05:00
Will Stranathan
b9f5799c1b Added the NuspecAnalyzer to the list of analyzers
Former-commit-id: 7472ceb2fefef23c0b6aad112f4e4e7e04ce93e5
2014-01-24 07:11:18 -05:00
Will Stranathan
b7d77042bf Initial checkin of an analyzer which gets info from .nuspec files
Former-commit-id: efc3b60b2ebf372c6bf1697b87cbfd0b9422b07f
2014-01-24 07:10:53 -05:00
Will Stranathan
8b6e9b7f76 Initial checkin of an analyzer which gets info from .nuspec files
Former-commit-id: 7d14609e887829f67a23dd51412761b1691bc135
2014-01-24 07:10:53 -05:00
Will Stranathan
b4ea2569e3 Added nupkg to the list of supported ZIP-like extensions
Former-commit-id: 3f58b7c314f7e5a837da878602c44b19721995a1
2014-01-24 07:09:45 -05:00
Will Stranathan
4a02c87c27 Added nupkg to the list of supported ZIP-like extensions
Former-commit-id: a70f09ba9cadec56034a178d76692276f7946255
2014-01-24 07:09:45 -05:00
Jeremy Long
42a9f864eb bug fixes for issue #49
Former-commit-id: a5c7236f6d1663dc3004161d6e9e1d68a7bc6f06
2014-01-23 21:25:59 -05:00
Jeremy Long
b1a5af187c bug fixes for issue #49
Former-commit-id: 967dc082c8a38a786d97c584d1d76c83c66f58b2
2014-01-23 21:25:59 -05:00
Jeremy Long
22e6de19c4 added additional verbose logging
Former-commit-id: 6b0323e92e2bed5d584ce49afb90c1c5ea684ded
2014-01-23 21:02:49 -05:00
Jeremy Long
5c781987a3 added additional verbose logging
Former-commit-id: bf5bbd5211216d16e06fb1ab6b03d44258312b2c
2014-01-23 21:02:49 -05:00
Jeremy Long
572a65d661 added the DRIVER_NAME to default to org.h2.Driver
Former-commit-id: 2d9462d8e1b6b01dc53044962463d103234e1d38
2014-01-23 21:02:10 -05:00
Jeremy Long
45e2215575 added the DRIVER_NAME to default to org.h2.Driver
Former-commit-id: dcb8a65b35f0451a4f192b781d3c57046c20e06f
2014-01-23 21:02:10 -05:00
Will Stranathan
108ecb7e12 Merge remote-tracking branch 'upstream/master'
Former-commit-id: 707e6e699e0a0a51bd4d808a0fab777684e70d32
2014-01-23 20:42:42 -05:00
Will Stranathan
be6d590254 Merge remote-tracking branch 'upstream/master'
Former-commit-id: d923e7e0284f1b0c2491ff5d103e49cb1b6e3dbe
2014-01-23 20:42:42 -05:00
Steve Springett
9c87d61528 Junit fix for non-Windows platforms
Former-commit-id: 77a32fe556cffd6625636f2c4033c82c3450595e
2014-01-22 16:43:08 -06:00
Steve Springett
248f4ca856 Junit fix for non-Windows platforms
Former-commit-id: 03b59f68cc08974d7aa88c35dafbf212112c4af8
2014-01-22 16:43:08 -06:00
Will Stranathan
dd903dd7e5 Change confidence on filename version when it's just a simple integer
Former-commit-id: b22d85dfcec9beb854b9bbf5160d89f1c2f66512
2014-01-22 12:08:06 -05:00
Will Stranathan
67284737f1 Change confidence on filename version when it's just a simple integer
Former-commit-id: f25708cec25a8225b62ae2da679d8a586c0549a4
2014-01-22 12:08:06 -05:00
jeremylong
ae13cb2513 updated the description
Former-commit-id: e03aceb652df78cda5ef03e2790306627eba35d4
2014-01-22 09:54:57 -05:00
jeremylong
9e2e2e9375 updated the description
Former-commit-id: a5a0e1ad8e02bd6ccf227b9cb62261a78d3286a1
2014-01-22 09:54:57 -05:00
Jeremy Long
40f47ccd4e updated to remove exception details per issue #46
Former-commit-id: 2482c797c7cc0100271488a42c17833c4f0e2f95
2014-01-22 07:43:08 -05:00
Jeremy Long
7fb7d4209f updated to remove exception details per issue #46
Former-commit-id: 373f5464b15e63fd57861b32b14c9b47723eca87
2014-01-22 07:43:08 -05:00
Jeremy Long
c344cd2a2b Updated logging
Former-commit-id: fd93345867b29dde392dbb888b2a2d4e072e91ff
2014-01-21 06:58:05 -05:00
Jeremy Long
1a1ea33142 Updated logging
Former-commit-id: e4f2ffcfd4b58865a1c9da129f90eeb7a3215db5
2014-01-21 06:58:05 -05:00
Jeremy Long
7601af24f0 updated to fix issue #44
Former-commit-id: 9245e70ef4ecf4e78362a0824a1557685c6cddb7
2014-01-20 19:44:08 -05:00
Jeremy Long
f996a25f6b updated to fix issue #44
Former-commit-id: 9eb763eeb5c1d42a850ea90313c69ed46e0028d2
2014-01-20 19:44:08 -05:00
Jeremy Long
0197eb0d08 noop
Former-commit-id: 335aebcb825923cc50de38d6bb38ee699dcb47b7
2014-01-20 17:39:04 -05:00
Jeremy Long
035c876fe3 noop
Former-commit-id: 74831d3c34ac203f4a310633ce1983f8083816ec
2014-01-20 17:39:04 -05:00
Jeremy Long
a248967ae8 added support for uber jars; pom.xml files are extracted and added as their own dependencies
Former-commit-id: 6acf8955c413f0b4d2d2c54886309dda3fc3d429
2014-01-20 17:38:47 -05:00
Jeremy Long
78ba72aa65 added support for uber jars; pom.xml files are extracted and added as their own dependencies
Former-commit-id: b3e37974fd3ba84e2179b3dd28fe8a2f03768891
2014-01-20 17:38:47 -05:00
Jeremy Long
a4beb58b54 included pom.xml files in suppression analysis as the Jar analyzer may add these as part of fix for issue #11
Former-commit-id: 5bb2205d7f2dd1e7b6decf3a29110b6135bbb367
2014-01-20 17:37:43 -05:00
Jeremy Long
9c50b23906 included pom.xml files in suppression analysis as the Jar analyzer may add these as part of fix for issue #11
Former-commit-id: 5581ac925f546990f5ab345aa7e4b2aa646f2da9
2014-01-20 17:37:43 -05:00
Jeremy Long
922cc942a4 added test cases for the false positive analyzer
Former-commit-id: dcd6d0ab1bfc6a8eed26d87c1636304ffbeba996
2014-01-20 17:36:48 -05:00
Jeremy Long
16b2b52252 added test cases for the false positive analyzer
Former-commit-id: 4eeea317c6fa75ad7bcf750bf915f947c6941f46
2014-01-20 17:36:48 -05:00
Jeremy Long
f11b086381 added uber jar for testing issue #11
Former-commit-id: 105d3e369ab781c0181ba1a0770c48003d354146
2014-01-20 13:21:45 -05:00
Jeremy Long
4b9d3b5090 added uber jar for testing issue #11
Former-commit-id: 3b41d8ff259d23c89620458eebb4d1cd142c5fa8
2014-01-20 13:21:45 -05:00
Jeremy Long
e5eab69f65 updated db schema version to 2.9
Former-commit-id: 88a4e319a10e69987f71ff0900918b51dd9a76e8
2014-01-20 13:17:47 -05:00
Jeremy Long
e9ea13cdff updated db schema version to 2.9
Former-commit-id: 90194fc040d66c9c52449db849113a65aa8e9b68
2014-01-20 13:17:47 -05:00
Jeremy Long
961884ef12 updated db schema version to 2.9
Former-commit-id: 5f25b92cc794e6b51a5887b17dad7a9cb4b4cc03
2014-01-20 13:17:40 -05:00
Jeremy Long
4780f23e1f updated db schema version to 2.9
Former-commit-id: 2e799ce28b1401c12d08f084a326b8a63e090910
2014-01-20 13:17:40 -05:00
Jeremy Long
5dbbf643a4 ensured subdirectories are built while extracting tar files - issue #43
Former-commit-id: 0335a6232c15c044a627ac0d23c37ad6fd8a9d07
2014-01-20 12:48:47 -05:00
Jeremy Long
be5a6f7e7d ensured subdirectories are built while extracting tar files - issue #43
Former-commit-id: af8b794ed9be453e2aad6807e238826468cc5d3e
2014-01-20 12:48:47 -05:00
Jeremy Long
f937458c25 updated test case for tar file from issue #43
Former-commit-id: 9f8d207ab9c6f9f5dfc9c458d9c75351cc2c8c10
2014-01-20 12:47:54 -05:00
Jeremy Long
1c3b5e75d2 updated test case for tar file from issue #43
Former-commit-id: 15ec4c72eac6e9fd8569a19b7cdae283307081b0
2014-01-20 12:47:54 -05:00
Jeremy Long
c617e62a16 added new test tar file for issue #43
Former-commit-id: f6e14b3f7d69e793cdb8316d62366f33ea82e097
2014-01-20 12:47:28 -05:00
Jeremy Long
ae80cc8984 added new test tar file for issue #43
Former-commit-id: 3fc1735a41cc4c974b50bed4287103366b3964ad
2014-01-20 12:47:28 -05:00
Jeremy Long
343c886d54 minor formating changes and implemented fix for issue #20
Former-commit-id: 850375750c1c75d218a715eb64bdb1f51e15a12b
2014-01-20 08:21:59 -05:00
Jeremy Long
14992c8e23 minor formating changes and implemented fix for issue #20
Former-commit-id: 997b5c7b4024cc58cca28a4418d03c504832f6be
2014-01-20 08:21:59 -05:00
Jeremy Long
824d85b2a0 added a new field to keep track of the vulnerable software that caused the match - part of the patch for issue 20
Former-commit-id: a5fa6313b9ecfb2d67ba4da25a2f5e863b184b51
2014-01-20 08:21:12 -05:00
Jeremy Long
c24ffd3914 added a new field to keep track of the vulnerable software that caused the match - part of the patch for issue 20
Former-commit-id: 39316a8356df63be950abe2a8c1fc14aca364d1e
2014-01-20 08:21:12 -05:00
Jeremy Long
0289fc5ce2 improved performance and made a change to support fixing issue #20
Former-commit-id: 4f7f9692a2bec9c2b6cc31aab7c9e175a8649b7f
2014-01-20 08:20:21 -05:00
Jeremy Long
bc9fa35fa2 improved performance and made a change to support fixing issue #20
Former-commit-id: 8c8ba03b948d9f61ee43bca267a0ea7e497dae2a
2014-01-20 08:20:21 -05:00
Jeremy Long
914a886bfe added javancss-maven-plugin
Former-commit-id: 6ed186ccdb29da4ed77c19823c4a066dcbaf3a87
2014-01-19 15:09:27 -05:00
Jeremy Long
dbebab3f91 added javancss-maven-plugin
Former-commit-id: 52ed19e5f729353f49a97fb737baa42f2616385b
2014-01-19 15:09:27 -05:00
Jeremy Long
f65c30e975 minor update
Former-commit-id: ba9c6b41a789c53f5b5eb049c6f1fd2528045dea
2014-01-19 10:26:03 -05:00
Jeremy Long
be1f047ca3 minor update
Former-commit-id: 5b2893cceadeef9b1ccde67bce61efb656d82230
2014-01-19 10:26:03 -05:00
Jeremy Long
48ac0049aa added maven identifier to related dependencies
Former-commit-id: 232ebb6afe8e9c5c07482c642e1ab9dee9b26e81
2014-01-19 09:40:16 -05:00
Jeremy Long
df07a5ebb6 added maven identifier to related dependencies
Former-commit-id: f5d8b523110431e54384e71010968ed059be5478
2014-01-19 09:40:16 -05:00
Jeremy Long
fea1117eae enabled nexus analyzer in dev
Former-commit-id: 99b5a5ce20c1c26bb0eba41c68d296a8cb37a0b1
2014-01-19 09:39:49 -05:00
Jeremy Long
96f7ca7598 enabled nexus analyzer in dev
Former-commit-id: f67559ac62ee699082449f2c8a0ef91251f8dc7d
2014-01-19 09:39:49 -05:00
Jeremy Long
ace1a060db updated ignores during Jekyll site testing
Former-commit-id: ae244ade9664cb739e38a562628d8bb5d8603d1e
2014-01-18 16:57:05 -05:00
Jeremy Long
4674a0dcca updated ignores during Jekyll site testing
Former-commit-id: cd1cc96bc590b3a409abbd2097f55b166133b0a3
2014-01-18 16:57:05 -05:00
Jeremy Long
be6ad9c5e3 add sample report and project presentation to the site
Former-commit-id: 630dd66ea56b103694e287e04827ef7a404f85a2
2014-01-18 16:14:53 -05:00
Jeremy Long
4fb61d4048 add sample report and project presentation to the site
Former-commit-id: 5d6fd75e095af14c9656a7d2a1dd234cb18d555b
2014-01-18 16:14:53 -05:00
Jeremy Long
b2d51a2a9b Added Project Presentation to site (pdf)
Former-commit-id: d97c02a3f1f51054fce71aa42b357fdbc4c1b727
2014-01-18 16:14:24 -05:00
Jeremy Long
7e36ad9701 Added Project Presentation to site (pdf)
Former-commit-id: 48385f0bbbbf326725480d9122bf7e68abe4b2eb
2014-01-18 16:14:24 -05:00
Jeremy Long
74411d8656 Added Project Presentation to site (pptx)
Former-commit-id: 0b155a1a69525031118a0316cd53707e0bc9b8bc
2014-01-18 16:14:13 -05:00
Jeremy Long
3b81dd4082 Added Project Presentation to site (pptx)
Former-commit-id: 3b1ffaab6b0d02a67191d5015d78f7dd5afcf95d
2014-01-18 16:14:13 -05:00
Jeremy Long
332392b7ba Added sample report to site
Former-commit-id: 83a931b4cbdb541d1aa76ced0d0a0d620fa16be6
2014-01-18 16:13:39 -05:00
Jeremy Long
04f6e9ffc2 Added sample report to site
Former-commit-id: 47b790dce65fbc09e6b5af1a27dae60f4ae0c2b7
2014-01-18 16:13:39 -05:00
Jeremy Long
e441414854 Updated so that only CPE Identifiers are used when "bundeling" dependencies
Former-commit-id: 165356d02b944a5e636cf07dbf05534eda9e2b6d
2014-01-18 09:06:20 -05:00
Jeremy Long
7b7b9385e8 Updated so that only CPE Identifiers are used when "bundeling" dependencies
Former-commit-id: ab50c8f320cd31090b00906615190f9a7f92f67f
2014-01-18 09:06:20 -05:00
Jeremy Long
4b1d79e7f7 updated verbose logging
Former-commit-id: 218f2e64933482f04bd9ab00d5d6095060671a38
2014-01-18 08:09:27 -05:00
Jeremy Long
646ce9492f updated verbose logging
Former-commit-id: 3d0d0a7f81459457f3c8fc62767d4568962746fd
2014-01-18 08:09:27 -05:00
Jeremy Long
d7889e27e5 reorganized things, overall improvements to the report
Former-commit-id: 23f136574eb7c8c2abec432450f310bfb2bdf1b1
2014-01-17 22:51:13 -05:00
Jeremy Long
4411c7643d reorganized things, overall improvements to the report
Former-commit-id: 5ab70885e895e7f2498ed064433896998c21f997
2014-01-17 22:51:13 -05:00
Jeremy Long
e65a68ce78 corrected position of the suppression modal dialog box to prevent scrolling
Former-commit-id: e7b5194a406d15b3871ad480da7a1b9d894e3868
2014-01-17 21:36:25 -05:00
Jeremy Long
b10af5fb3b corrected position of the suppression modal dialog box to prevent scrolling
Former-commit-id: 4f35f30171332f3d111231c24aa087b9ccb51eb5
2014-01-17 21:36:25 -05:00
Jeremy Long
990f6d3730 removed unused concurrency package
Former-commit-id: c2162dd0f9144400b464535ac4104c98cf6f1da6
2014-01-17 21:23:38 -05:00
Jeremy Long
09f6f4bc66 removed unused concurrency package
Former-commit-id: d6b02f36cef6b20ec55ec57370e3b9bb6bba1372
2014-01-17 21:23:38 -05:00
Jeremy Long
84a62b3707 added additional info logging
Former-commit-id: bd2d360dd28f900430666b99d01ee9d0deb8b7c7
2014-01-17 21:23:11 -05:00
Jeremy Long
60b946eb28 added additional info logging
Former-commit-id: 0e91561a3d441a15cb5e6f85fa50ba58836cc0e5
2014-01-17 21:23:11 -05:00
Jeremy Long
e18789b8d3 added identifier confidence for issue #35
Former-commit-id: 9ce9761fa4cd842e6141973bf33e229bea208982
2014-01-17 21:05:08 -05:00
Jeremy Long
c65dd1e854 added identifier confidence for issue #35
Former-commit-id: 6eb33e07914980ae394fc07b75e2f31fc731d493
2014-01-17 21:05:08 -05:00
Jeremy Long
cb7be0e460 made identifier type required and identifier confidence optional
Former-commit-id: 16255779baed3d2e9ba2bb6013b355f7d42a7bd3
2014-01-17 20:40:08 -05:00
Jeremy Long
0b703f2ad4 made identifier type required and identifier confidence optional
Former-commit-id: 84d0609e55c9647fe1b0ae5e4f5575e8da4a7b32
2014-01-17 20:40:08 -05:00
Jeremy Long
df825d0109 added identifier confidence to schema for issue #35
Former-commit-id: d6778b57ce1dde2cda67844160e0461a7cf143cc
2014-01-17 20:36:36 -05:00
Jeremy Long
1b73572e22 added identifier confidence to schema for issue #35
Former-commit-id: bb6489dbabb81b2e135af3fe514b4a67bfcd4c95
2014-01-17 20:36:36 -05:00
Jeremy Long
ce4baecb4b added Identifier confidence for issue #35, added @Override annotations, and updated javadoc a bit
Former-commit-id: b4374d55a0e5cb0bfbf424d9465e1376eec198fa
2014-01-17 20:33:41 -05:00
Jeremy Long
0994af86fc added Identifier confidence for issue #35, added @Override annotations, and updated javadoc a bit
Former-commit-id: 91437345432611a955cba9bb1de4cceeab09d393
2014-01-17 20:33:41 -05:00
Jeremy Long
48907517e9 added an additional addIdentfier to support identifier confidence for issue #35
Former-commit-id: c36f85a13598ac9683db078c93ac495bf629f443
2014-01-17 20:32:30 -05:00
Jeremy Long
1608cb7cd1 added an additional addIdentfier to support identifier confidence for issue #35
Former-commit-id: d03d5606703ae58dcc9f954c93dce6135e5bf5f5
2014-01-17 20:32:30 -05:00
Jeremy Long
dde1d96058 set identifier confidence on CPE entries
Former-commit-id: 1b50168ed2d1ae4f426cc703cb099c514b80d9e9
2014-01-17 20:22:57 -05:00
Jeremy Long
19e882a0d7 set identifier confidence on CPE entries
Former-commit-id: c06ff3935dfae7cc53389683ccb02180a2ecad98
2014-01-17 20:22:57 -05:00
Jeremy Long
b2f688a032 added Identifier confidence for issue #35
Former-commit-id: d5203193264c25d3a24b83cd63779fd2e4b42b36
2014-01-17 20:22:19 -05:00
Jeremy Long
77b1c74c83 added Identifier confidence for issue #35
Former-commit-id: 3db32960f817f42a846ea74ab35992866459f881
2014-01-17 20:22:19 -05:00
Jeremy Long
b4664f85f0 moved the Confidence enumeration out of the Evidence object
Former-commit-id: 77f937f2b17201b2764259ef6089f848fe8f3c8b
2014-01-17 20:11:06 -05:00
Jeremy Long
269ae95318 moved the Confidence enumeration out of the Evidence object
Former-commit-id: 7224a6c342aabb37db2ed01f663870d194e54d65
2014-01-17 20:11:06 -05:00
Jeremy Long
2725d32c33 moved the Confidence enumeration out of the Evidence object
Former-commit-id: b7948c1c6a542d1777347974983abc00c78a6102
2014-01-17 20:10:45 -05:00
Jeremy Long
59fefd5ad9 moved the Confidence enumeration out of the Evidence object
Former-commit-id: 0cf54545f41edfa23cac0ef9d1e12e89ba8f235b
2014-01-17 20:10:45 -05:00
Jeremy Long
c9f80db3c6 added test cases for DependencyBudnlingAnalyzer
Former-commit-id: bcfbca8c27a30f12e9bf59d4a44e37a5e19f8965
2014-01-17 19:43:45 -05:00
Jeremy Long
b60340f03a added test cases for DependencyBudnlingAnalyzer
Former-commit-id: 037323735444915fb83dd423c6c18a31c88af260
2014-01-17 19:43:45 -05:00
Jeremy Long
cb53ddf8a8 updated to fix issue #31
Former-commit-id: 569d1aee14d0f51a990e0cc059dce5aa500f10b2
2014-01-17 19:43:01 -05:00
Jeremy Long
93250f2b60 updated to fix issue #31
Former-commit-id: 6f1d7687b61ea6a0fab99e963ccc06b9b0b29e86
2014-01-17 19:43:01 -05:00
Jeremy Long
fdca41a71b ensured test properties files are filtered
Former-commit-id: 2705516b382e224d33313f519fa2849728876ddd
2014-01-17 19:41:43 -05:00
Jeremy Long
dc37ba740b ensured test properties files are filtered
Former-commit-id: 59d7acbfb14a03237bc40cbb8ab11dcd67f3f732
2014-01-17 19:41:43 -05:00
Jeremy Long
d59ceee0f7 minor javadoc update
Former-commit-id: 3243cc9392e479932731721fd8cf3dc8e14f0f0f
2014-01-17 17:45:37 -05:00
Jeremy Long
b7fa63bf15 minor javadoc update
Former-commit-id: 844b4593c52ab6c8ace06dda07a502c17b17ac73
2014-01-17 17:45:37 -05:00
Jeremy Long
38b08835c2 fixed Steve's role
Former-commit-id: 44b9c77d049b14dabd9f0db58c428c9632044dfd
2014-01-17 17:41:57 -05:00
Jeremy Long
6379665360 fixed Steve's role
Former-commit-id: 482b0e00ee2d87cdde54e9b6ff1a298b9ec6f6e1
2014-01-17 17:41:57 -05:00
Jeremy Long
dbbdb1bcbe updated to add scan information
Former-commit-id: b73ea598f34cbdbaf6d8f97ada6624875232f1da
2014-01-17 14:56:39 -05:00
Jeremy Long
ea6e30e7a7 updated to add scan information
Former-commit-id: 48ce02876d0ce2bffdf60b47894c83610cbdf0ba
2014-01-17 14:56:39 -05:00
Jeremy Long
b408e5d0d3 removed BOM
Former-commit-id: 05f2159cd22c4ebe78f97f88044c74502534cdb6
2014-01-17 14:20:43 -05:00
Jeremy Long
ceda50bc60 removed BOM
Former-commit-id: 855c66027b2d2a946fb8f8940ee1e867e0554ed2
2014-01-17 14:20:43 -05:00
Jeremy Long
30f00508f5 updated mojo to support report generation for issue #32
Former-commit-id: f3c4cfb9e7a6add6ec9d2e69a11a60bab3f4055e
2014-01-17 14:14:39 -05:00
Jeremy Long
fa0f2ccc4d updated mojo to support report generation for issue #32
Former-commit-id: f1122a2e2c046fb0377400b4529553cc05168041
2014-01-17 14:14:39 -05:00
Jeremy Long
75bb6aa966 updated cli to support report generation for issue #32
Former-commit-id: b75c45cfec5c9f294dc410258cd0beebb2acf512
2014-01-17 14:14:22 -05:00
Jeremy Long
84f68a7460 updated cli to support report generation for issue #32
Former-commit-id: 96a29246a3980fb28087d0e6065d53f9914d505b
2014-01-17 14:14:22 -05:00
Jeremy Long
eff206fb2b updated task to support report generation for issue #32
Former-commit-id: de760da2ca783d4ccb0e15da776c6fa97a333ff7
2014-01-17 14:14:02 -05:00
Jeremy Long
1c9d15892e updated task to support report generation for issue #32
Former-commit-id: a6875d4943a8eaa7b0ae4f978d2ebfd23f322771
2014-01-17 14:14:02 -05:00
Jeremy Long
98da419c96 updated schema for issue #32
Former-commit-id: 126eab3735ac4151b3c6b72bec4ce0f648926054
2014-01-17 14:10:07 -05:00
Jeremy Long
ab91313f4f updated schema for issue #32
Former-commit-id: b996605915ed221c78a84cfbbb6b0a52249a965e
2014-01-17 14:10:07 -05:00
Jeremy Long
efe226045d added additional info to XML for issue #32
Former-commit-id: 7a107dd9388610098fff40a5e4b85eeea49d3078
2014-01-17 14:09:21 -05:00
Jeremy Long
55045e15b8 added additional info to XML for issue #32
Former-commit-id: 6142dd8620ef28c77aa0d49ac95c9e4db00e3657
2014-01-17 14:09:21 -05:00
Jeremy Long
35ba1532f4 updated schema version
Former-commit-id: dd27b18b117d53fd4bc4dfcfe901d6225b7b70c9
2014-01-17 13:48:00 -05:00
Jeremy Long
25a8fa7d11 updated schema version
Former-commit-id: 8dd342b95f25bfb554a649a40db9896a139b5034
2014-01-17 13:48:00 -05:00
Jeremy Long
476d732a3c updated schema version
Former-commit-id: 2edb2d6e694e4fcf9ee20cb17d06c7a0fb6fa950
2014-01-17 13:46:59 -05:00
Jeremy Long
d0a7757b75 added version number to the report context
Former-commit-id: f783309c357851e7ef5d2b1c2dfc898bbe5368ee
2014-01-17 13:15:14 -05:00
Jeremy Long
21efc0c4a5 added version number to the report context
Former-commit-id: e1cb7b7e6949ed017bc12addf8ac553a0473aa51
2014-01-17 13:15:14 -05:00
Jeremy Long
c20c6665fd updated data
Former-commit-id: 1f006fb71e6de02aaba1904a01dcbd9d3906d7fb
2014-01-17 10:36:37 -05:00
Jeremy Long
c9132de1ea added tests for new methods
Former-commit-id: f641622221f2519ed7798af7c1fc071525aa106c
2014-01-17 10:09:37 -05:00
Jeremy Long
cd497bfe9b added tests for new methods
Former-commit-id: e571160a322b68d4dfb18ecc2dc4c774b8403665
2014-01-17 10:09:37 -05:00
Jeremy Long
690d52bf2d updated test case to use new constructor
Former-commit-id: c17b07d519cd6e02e900a2b62290bb2f27029ea8
2014-01-17 10:09:07 -05:00
Jeremy Long
25c42bee6d updated test case to use new constructor
Former-commit-id: cc6a62c0b1477ac2d5e4586448751e7a3ed9ecce
2014-01-17 10:09:07 -05:00
Jeremy Long
5b2a3af850 add a new constructor to accept a DatabaseProperties argument and deprecated the old constructor
Former-commit-id: 66a7a7f94152712e1bace2a53cf01f72b9f4a772
2014-01-17 10:08:28 -05:00
Jeremy Long
6d639385da add a new constructor to accept a DatabaseProperties argument and deprecated the old constructor
Former-commit-id: 4f31406b23b7f96efb1f731bca2f12b281b77747
2014-01-17 10:08:28 -05:00
Jeremy Long
4ae9c03caf modified property names and added additional methods to retrieve the entire properties collection
Former-commit-id: f404577f0abb1c3d4f5cb2e6539a1db36f6ffbd0
2014-01-17 10:07:38 -05:00
Jeremy Long
fd1c0efedf modified property names and added additional methods to retrieve the entire properties collection
Former-commit-id: 9957024434b375842f1d3dde8e75aba1516ae4ab
2014-01-17 10:07:38 -05:00
Jeremy Long
d92d832804 attempt one at fixing class loader issues with H2 for the jenkins plugin
Former-commit-id: 01f55bdb4b3084d4eeb4939570a7640c4aaba956
2014-01-16 18:56:35 -05:00
Jeremy Long
5d2010aa73 attempt one at fixing class loader issues with H2 for the jenkins plugin
Former-commit-id: 125265069c0aedb7aa2a70a4a588b77e5fe4cb35
2014-01-16 18:56:35 -05:00
Jeremy Long
db12565dcf added missing license, notice, and readme files
Former-commit-id: 71b759209273b6abfca5ab9cf22444a657c90011
2014-01-16 18:34:31 -05:00
Jeremy Long
d9333b2e93 added missing license, notice, and readme files
Former-commit-id: ff43678b50b3f0027ad6070b978156900200fcde
2014-01-16 18:34:31 -05:00
Jeremy Long
6df73257b1 updated license to Apache 2.0
Former-commit-id: 69d16aa394be49dec2d040cc64072229a5d3b463
2014-01-16 18:34:02 -05:00
Jeremy Long
3034306fcc updated license to Apache 2.0
Former-commit-id: 9ab1a3f1216ab9a1a3a23a198557bc9dcc1af540
2014-01-16 18:34:02 -05:00
Jeremy Long
b79e69af77 updated license to apache 2.0
Former-commit-id: 42f2821ede7295129cc29bac369f876b18b7c84e
2014-01-16 17:48:00 -05:00
Jeremy Long
0c7bae6fd7 updated license to apache 2.0
Former-commit-id: 15ae4bc58338bbc4da6ba4a98f19f276add8a76c
2014-01-16 17:48:00 -05:00
Jeremy Long
78ea0779d7 1.1.0-snapshot
Former-commit-id: 05cb2baa0831f00467e5c4ee8caae6efce825a0c
2014-01-16 17:23:30 -05:00
Jeremy Long
855233f498 1.1.0-snapshot
Former-commit-id: 3c429668398de620c842dff0b1b634fbf23950e8
2014-01-16 17:23:30 -05:00
Jeremy Long
3002c9e430 release 1.0.8
Former-commit-id: d84fcbf655179b64f75898bb5892c6bb5cf2f84a
2014-01-16 08:00:54 -05:00
Jeremy Long
6b859a0478 release 1.0.8
Former-commit-id: bb0c02daab6157c1a22573dc59db3f2aa577b027
2014-01-16 08:00:54 -05:00
Jeremy Long
749d70ca94 added additional logging statements
Former-commit-id: 20343aaed618b6b32d2a03b806a913f68c545bb9
2014-01-15 20:45:55 -05:00
Jeremy Long
2f37b658f1 added additional logging statements
Former-commit-id: 84188e3a832acbe4d9678c73c9571011c5554518
2014-01-15 20:45:55 -05:00
Jeremy Long
70b4adeda0 added information on suppressing false positives to the site
Former-commit-id: 39176151fc0bbf304e1d7754f8f1f61d8d776c32
2014-01-15 20:43:09 -05:00
Jeremy Long
3bd952e5c5 added information on suppressing false positives to the site
Former-commit-id: 84c0f3175c7a749bc2d5fe05d7b4e4d23a518fab
2014-01-15 20:43:09 -05:00
Jeremy Long
7eb86d0a58 added tests for MySQL External DB
Former-commit-id: 54ad0176f42da0932e06aa01ba56424f3ae856e7
2014-01-15 16:13:08 -05:00
Jeremy Long
ae58c1fa99 added tests for MySQL External DB
Former-commit-id: 25a9773428d52aa95df940ab1c21cd363a361f99
2014-01-15 16:13:08 -05:00
Jeremy Long
5545d43417 added autocommit=on to H2 connection string
Former-commit-id: 7c62f36c5636415c80ddabb0ba3896de753ccd95
2014-01-15 13:18:32 -05:00
Jeremy Long
dfb411cb6a added autocommit=on to H2 connection string
Former-commit-id: 2ce63e1d44ecf5ab69f0f98003383f6a6b7b311e
2014-01-15 13:18:32 -05:00
Jeremy Long
2e3f68bd2c added autocommit=on to H2 connection string
Former-commit-id: 26903f3a375ff6223fb6c5db7117f8bfb84e3a92
2014-01-15 13:16:05 -05:00
Jeremy Long
449e3f5cc6 added autocommit=on to H2 connection string
Former-commit-id: 86c6de5504bc411e3a6fb636181954d7e15ca47f
2014-01-15 13:16:05 -05:00
Jeremy Long
539babed18 added autocommit=on to H2 connection string
Former-commit-id: b2f8958707ae211970640b124906bc3a67f04fc3
2014-01-15 13:15:50 -05:00
Jeremy Long
1b1fe17fca added autocommit=on to H2 connection string
Former-commit-id: 0dcc8a704178ba5087a876914a0088464ceb60b9
2014-01-15 13:15:50 -05:00
Jeremy Long
300752ab47 removed calls to commit as autocommit is on
Former-commit-id: 8f8473946dcd0133db91017e1a2a7764d0bb9e6f
2014-01-15 13:15:08 -05:00
Jeremy Long
f3c457745e removed calls to commit as autocommit is on
Former-commit-id: a4efaa350b1b9581e8ce1fc67dc62249bf18abdc
2014-01-15 13:15:08 -05:00
Jeremy Long
2c34c10c7e Updated plugin versions
Former-commit-id: fb6be27500d24f29f814d9a3c237bb49bddedb56
2014-01-14 06:11:42 -05:00
Jeremy Long
26f2e2b223 Updated plugin versions
Former-commit-id: 11044cb9a3a93991c0dd8e074fa913ac0deabb37
2014-01-14 06:11:42 -05:00
Jeremy Long
e2fb261e5b javadoc correction
Former-commit-id: abe3b139d3025d05de2b32db84d4020ffc795541
2014-01-14 05:59:52 -05:00
Jeremy Long
fcdd399eea javadoc correction
Former-commit-id: 1b55c65bd4f05027bb9b4ddc677d7d95fc0defb5
2014-01-14 05:59:52 -05:00
Will Stranathan
6399978168 Actually added the analyzer
Former-commit-id: 2fc4f2b3ec3d353c389ba70e71cd047cd35f28ad
2014-01-13 14:18:49 -05:00
Will Stranathan
c1d16782ab Actually added the analyzer
Former-commit-id: 28faa40bf1f1a55b663c2c7ca6cfa6109939839c
2014-01-13 14:18:49 -05:00
Will Stranathan
4f94765156 Added files I missed during the last change
Former-commit-id: 43785f55a00e7683aa0083296efc923b306f6d6b
2014-01-13 14:16:41 -05:00
Will Stranathan
860434a1d5 Added files I missed during the last change
Former-commit-id: 2f6f9cdb93c3a3f055694447b8a5d5bfbe440708
2014-01-13 14:16:41 -05:00
Will Stranathan
d58e2aa701 Checkin of the NexusAnalyzer and its tests
Former-commit-id: d9c29602efeaf923feb941ec38c8fc704eb99c11
2014-01-13 10:22:40 -05:00
Will Stranathan
38b493ee9d Checkin of the NexusAnalyzer and its tests
Former-commit-id: 1cfa6bb8a7018de5d1151530bcff3c20d9c7b9ac
2014-01-13 10:22:40 -05:00
Will Stranathan
000f382143 Added vim swap files to .gitignore
Former-commit-id: bb02b22571904e3561583612102c0da90dec6120
2014-01-13 10:11:51 -05:00
Will Stranathan
19dc560d56 Added vim swap files to .gitignore
Former-commit-id: b5c3d472b200965bd772b5744ef53ff74f366ad8
2014-01-13 10:11:51 -05:00
Jeremy Long
cede2e8843 added DriverShim to resolve class loader issues with the DriverManager
Former-commit-id: 730f626e6a5ec5c6dd9726abdf33d05975ea6d5f
2014-01-13 06:55:47 -05:00
Jeremy Long
bb10214db0 added DriverShim to resolve class loader issues with the DriverManager
Former-commit-id: 88fe523018dc9c6d7df7f39ed1e21e8803d3fb06
2014-01-13 06:55:47 -05:00
Jeremy Long
66c3450d46 improved test case so that the driver is retrieved to ensure the DriverManager registered the driver correctly
Former-commit-id: d66e20fd2c0a74f6a589702ccbf0d136c413921c
2014-01-13 06:55:27 -05:00
Jeremy Long
6a871c51a1 improved test case so that the driver is retrieved to ensure the DriverManager registered the driver correctly
Former-commit-id: 181f883e673c34120628a850e844fb11a7fa961b
2014-01-13 06:55:27 -05:00
Jeremy Long
9e6e6701be implemented one test to connect to a MySQL DB Server
Former-commit-id: ff8217ef7634412df10974e1e2648b3ab4171d83
2014-01-13 06:54:22 -05:00
Jeremy Long
d7ff3050c2 implemented one test to connect to a MySQL DB Server
Former-commit-id: 546c46da018c892f37d205ad0dbe1b19a389ab7f
2014-01-13 06:54:22 -05:00
Jeremy Long
e60ec5df3c Added DriverShim to get around issue with loading drivers via URLClassLoader
Former-commit-id: 9aac9909503c01e2b41261556252e550a3253005
2014-01-13 06:53:39 -05:00
Jeremy Long
8e0a0379d5 Added DriverShim to get around issue with loading drivers via URLClassLoader
Former-commit-id: c45fe3e1846d051f90a81deaa33104222e8dae7e
2014-01-13 06:53:39 -05:00
Jeremy Long
3eae185ae2 noop
Former-commit-id: a78b29d3cf6f23a02c1372d293cbf4027c037ee6
2014-01-13 06:52:55 -05:00
Jeremy Long
b7ceb90e61 noop
Former-commit-id: 6dbfc3dad128908a988d8cce3ffadace5523108d
2014-01-13 06:52:55 -05:00
Jeremy Long
053057fdd2 externalized properties for testing mysql db connections
Former-commit-id: e58feddb22961d3a72a6996c4f04d3577ad1605c
2014-01-13 06:51:40 -05:00
Jeremy Long
c1935c83f6 externalized properties for testing mysql db connections
Former-commit-id: c75cae83b677a8d87670cc7580525e390ce9b1ed
2014-01-13 06:51:40 -05:00
Jeremy Long
0af856d566 updated build plugin versions
Former-commit-id: 01675b4348914f7f8d844461462bb00f3275984c
2014-01-12 08:31:37 -05:00
Jeremy Long
62f08a2105 updated build plugin versions
Former-commit-id: 6274e03316662eeb639159ace71dd93688831755
2014-01-12 08:31:37 -05:00
Jeremy Long
76f2b39ce6 updated author tag
Former-commit-id: c216a3b3cfc12b874ac9c39fcc5613980372bf9e
2014-01-12 08:27:52 -05:00
Jeremy Long
38d7f6e671 updated author tag
Former-commit-id: 1a0ccff0a65e8af86741fa01c2cfd5382e8bec54
2014-01-12 08:27:52 -05:00
Jeremy Long
7b646c04d5 initial [empty] version
Former-commit-id: 1642f701eea410c3cf2c0b5f9e6a12a6f8ac018e
2014-01-12 08:19:53 -05:00
Jeremy Long
3c2c99c236 initial [empty] version
Former-commit-id: b4eca7805e1c88f64ff4811c02bd3f0c4c10c9d2
2014-01-12 08:19:53 -05:00
Jeremy Long
45ae3209b6 updated to support MySQL test cases
Former-commit-id: 6030de95a37397559470bb0f0bb801ed1ff058c6
2014-01-12 08:18:18 -05:00
Jeremy Long
7694402ae4 updated to support MySQL test cases
Former-commit-id: a96b3700b1230130d43e65277884fc49ac301666
2014-01-12 08:18:18 -05:00
Jeremy Long
9b04ceedf1 fixed typos
Former-commit-id: 490de2990dab978493b27a8faf8ec6c40b97c6dc
2014-01-12 07:35:03 -05:00
Jeremy Long
7ed1d13221 fixed typos
Former-commit-id: 417db699c81a6b9144b6f5dd8e99ab52805e0257
2014-01-12 07:35:03 -05:00
Jeremy Long
41a31cdf4c fixed spelling errors
Former-commit-id: 6c7d9240d7091204f09d37e405675dace1a2159e
2014-01-11 19:55:21 -05:00
Jeremy Long
47e89e35b2 fixed spelling errors
Former-commit-id: 2a362ac0f1d7ab9e026a1f9a42fa2b775df9f4cf
2014-01-11 19:55:21 -05:00
Jeremy Long
fe072cd2e3 various IntelliJ analysis recommendations
Former-commit-id: 7b5f0b5c5e0fc37b58e7cecbcf190c0df56ffe0f
2014-01-11 16:04:43 -05:00
Jeremy Long
3633759295 various IntelliJ analysis recommendations
Former-commit-id: 9b81bd3d14046ddfe71da5794b29326aaf6c6ac5
2014-01-11 16:04:43 -05:00
Jeremy Long
525933be99 added database connection properties
Former-commit-id: 7abf08834cf366e7c998d33a9a05387192a1f24a
2014-01-11 13:19:33 -05:00
Jeremy Long
98bdb0479b added database connection properties
Former-commit-id: 57e25ebc7c936bd1a99d3f60f32faeb72bc5f157
2014-01-11 13:19:33 -05:00
Jeremy Long
98792fde85 removed file
Former-commit-id: 31618dcec4acb3a5c5dda4ba9762519d8c22bf49
2014-01-11 12:45:29 -05:00
Jeremy Long
1e40df227d removed file
Former-commit-id: 9b459e06b23b233984a5b633eb7faed3a8b91c26
2014-01-11 12:45:29 -05:00
Jeremy Long
caf0a709b8 updated data version
Former-commit-id: 33d6c6329ac42ea47d46f7eae5d8cb7a8b85a376
2014-01-11 12:45:03 -05:00
Jeremy Long
81733d9f81 removed sonatype parent
Former-commit-id: d31569e6bfd8f8674ea06304bf2d0ee22a2e6679
2014-01-11 12:44:33 -05:00
Jeremy Long
daef951e59 removed sonatype parent
Former-commit-id: f969cfb576b167729283668d4aa47e0d0e419d06
2014-01-11 12:44:33 -05:00
Jeremy Long
03a753b82c removed one test as method was removed
Former-commit-id: 1910abb63319e5afd451dc241a1b3f7f76bd9704
2014-01-11 12:43:44 -05:00
Jeremy Long
73eab87dd9 removed one test as method was removed
Former-commit-id: fee24a17a2e1878aefc294c253e46b5bf41c40ec
2014-01-11 12:43:44 -05:00
Jeremy Long
6938b0f4ae removed unused imports
Former-commit-id: 71b42ce0e203e5897492ade452683fc15b0f99a6
2014-01-11 12:43:11 -05:00
Jeremy Long
1a2720649b removed unused imports
Former-commit-id: eb17f686be6f9d68255ce5db5f0d8efd5422409d
2014-01-11 12:43:11 -05:00
Jeremy Long
a50c61e5c5 added new properties for database connections
Former-commit-id: 184db1b04818703598faafe4eccf951febebb52a
2014-01-11 12:42:50 -05:00
Jeremy Long
1083cdb743 added new properties for database connections
Former-commit-id: 9e96b0ce823cb40ac9c35d3e8aeeb7a23712bee5
2014-01-11 12:42:50 -05:00
Jeremy Long
5450bdbc55 added new property keys for database connection properties
Former-commit-id: 9205017c862fcfc0e30354964bfebe750163b74b
2014-01-11 12:41:58 -05:00
Jeremy Long
06eb8f9c10 added new property keys for database connection properties
Former-commit-id: aa963014785ed1f49b0c53afa9481a0e46d196d2
2014-01-11 12:41:58 -05:00
Jeremy Long
11a634b9be updated package info
Former-commit-id: 61a2ac8c1d1888e508118805752d67e23e63bce3
2014-01-11 12:41:30 -05:00
Jeremy Long
31af15d267 updated package info
Former-commit-id: 725b6e993da523367edfa3995729fee4e342e037
2014-01-11 12:41:30 -05:00
Jeremy Long
801102d379 removed un-needed import after moving classes around
Former-commit-id: 4e196144166ff57e898b1fd1009c7c3cb410c514
2014-01-11 12:41:03 -05:00
Jeremy Long
12938df375 removed un-needed import after moving classes around
Former-commit-id: dec54243019a67fc52a3aea906ab1201e4aa5352
2014-01-11 12:41:03 -05:00
Jeremy Long
8eaba18e91 removed unused properties field
Former-commit-id: 08a2b2a405b7f3176cbf44251cf99a8a22286e48
2014-01-11 12:40:37 -05:00
Jeremy Long
24d8dbcf64 removed unused properties field
Former-commit-id: 9877606326236bb2bda9048a5ac927cae7c3e0cd
2014-01-11 12:40:37 -05:00
Jeremy Long
d1cb88b5c5 removed un-needed import after moving classes around
Former-commit-id: bf1d7742c91a7a4b22f5f8850e9e7ca45b4fee8a
2014-01-11 12:40:11 -05:00
Jeremy Long
2b7585357f removed un-needed import after moving classes around
Former-commit-id: 369c59274503eb50e1a8a27f702fa1d7a4d5967f
2014-01-11 12:40:11 -05:00
Jeremy Long
940889f96f removed the ability to delete and recreate the schema
Former-commit-id: ea65f6f2ba5740c930cb8d4ab724cb029e7f6a04
2014-01-11 12:39:34 -05:00
Jeremy Long
5b659966c8 removed the ability to delete and recreate the schema
Former-commit-id: a663d48bf74761504a9c8c23b128b00a32a814d0
2014-01-11 12:39:34 -05:00
Jeremy Long
3d5b934f54 removed the ability to delete and recreate the schema
Former-commit-id: 0bcec9bb3d09038b03b5307c92104880c1393189
2014-01-11 12:39:01 -05:00
Jeremy Long
2834d6cac7 removed the ability to delete and recreate the schema
Former-commit-id: 0a02cf0892613904dcdf1eecef3391b396a82ef3
2014-01-11 12:39:01 -05:00
Jeremy Long
155f62fd22 initial implementation
Former-commit-id: 76116c9ababd6a1b5a1c77756826f875cffa6325
2014-01-11 12:38:26 -05:00
Jeremy Long
65dd4c873f initial implementation
Former-commit-id: 8c14c36a6a7e192bdc5c1b07accc2f7c611a3369
2014-01-11 12:38:26 -05:00
Jeremy Long
6c3025c487 initial version of exception
Former-commit-id: 4e728dce235f4cf86534db2c1992916c0b889328
2014-01-11 12:37:56 -05:00
Jeremy Long
8c834e634b initial version of exception
Former-commit-id: 97bbfda58ed595935cb387140d8b39bd0ec66642
2014-01-11 12:37:56 -05:00
Jeremy Long
4e62a2ee4f removed un-neede property value update
Former-commit-id: 313e74b97e818fda1421785c4c462f6c330122a3
2014-01-11 12:37:28 -05:00
Jeremy Long
f92430d092 removed un-neede property value update
Former-commit-id: c9ccb79104de208cf9673b258ed739d9b78562dc
2014-01-11 12:37:28 -05:00
Jeremy Long
712a076be8 updated to utilize the ConnectionFactory
Former-commit-id: 0fc86441610efd54905864a6e64b57d35e86b86b
2014-01-11 12:36:58 -05:00
Jeremy Long
b110e944c3 updated to utilize the ConnectionFactory
Former-commit-id: d368fb9ecad44059fe6d6e1f56912336e17912d2
2014-01-11 12:36:58 -05:00
Jeremy Long
97f1ff02a0 initial implementation
Former-commit-id: c69a772ec7d0d39dd880c8ffa7f75d0d4c254ec3
2014-01-11 12:36:17 -05:00
Jeremy Long
77eb5b5147 initial implementation
Former-commit-id: 55b94aa6e58aad2b73c433b29fdf2133ae1f8334
2014-01-11 12:36:17 -05:00
Jeremy Long
2b36eb42a8 added additional verbose logging
Former-commit-id: 49f9467ab33a3d260b295a938bac702358a522c6
2014-01-11 12:35:44 -05:00
Jeremy Long
1fabdb9e2d added additional verbose logging
Former-commit-id: e754c12ca2e11d6ca3c338aca801aafa00542847
2014-01-11 12:35:44 -05:00
Jeremy Long
ada2972669 updated to conform with new api (less exceptions caught)
Former-commit-id: aa52a7c9429b292061a3dd7afdaf7fb887cdbea9
2014-01-11 12:35:07 -05:00
Jeremy Long
e8682ac058 updated to conform with new api (less exceptions caught)
Former-commit-id: ad29d60598be7dd0c44e332a65d68756cadbe3e2
2014-01-11 12:35:07 -05:00
Jeremy Long
5822dcccec initial version of tests
Former-commit-id: 38a225894315cef478ad713609a1beebe925a8d2
2014-01-11 12:34:24 -05:00
Jeremy Long
08603ad905 initial version of tests
Former-commit-id: 80e7ccbc84eccc132454cefdcc5703504637b37c
2014-01-11 12:34:24 -05:00
Jeremy Long
843fd4abec added MySQL Initialization script
Former-commit-id: 86a513207d3ae6fde7082e4fa8be38ece041384c
2014-01-11 12:33:57 -05:00
Jeremy Long
224b867737 added MySQL Initialization script
Former-commit-id: a7a13d60769a794a9c4859c0df86d4576381c738
2014-01-11 12:33:57 -05:00
Jeremy Long
8d840bfe0e added mysql connector
Former-commit-id: 4a968876865087db300180712031dd8c78d24392
2014-01-11 12:33:29 -05:00
Jeremy Long
0eb4ac5bcc added mysql connector
Former-commit-id: 08fe6940e2122a78f21a2ebaf00670d73d865c58
2014-01-11 12:33:29 -05:00
Jeremy Long
a2d0c335d0 updated year regex
Former-commit-id: 5f3225071b1c5a45bb280ec3e5b6455da465283e
2014-01-11 12:31:41 -05:00
Jeremy Long
876ca5927d updated year regex
Former-commit-id: 39555650722a92053167a8716f1f0eea70f0205c
2014-01-11 12:31:41 -05:00
Jeremy Long
645735a048 updated to make SQL statements more cross platform
Former-commit-id: 7ddd41ed025effcf1f3cf0562105ab8208f46202
2014-01-10 06:16:32 -05:00
Jeremy Long
98b4509014 updated to make SQL statements more cross platform
Former-commit-id: 5cf3f06366bfd0b2d474891266efea9459aec26a
2014-01-10 06:16:32 -05:00
Jeremy Long
c58d27fe2d fixed bug 40 - version evidence is not showing up in the final reports
Former-commit-id: 8801f3d14c5d1e866bb3c81c73d807c4dd51bfbd
2014-01-08 05:23:18 -05:00
Jeremy Long
c0013a0ba5 fixed bug 40 - version evidence is not showing up in the final reports
Former-commit-id: 1d39898252ca5738587947edd6ea977fbc571d55
2014-01-08 05:23:18 -05:00
Jeremy Long
b9a2bcb0bf Fixed typo in logging
Former-commit-id: 4699a65d895dd2268973c7ef4a7fcde5045da119
2014-01-05 07:14:59 -05:00
Jeremy Long
cc915e39c5 Fixed typo in logging
Former-commit-id: a98d83ab10a6d81c81e4a919bb0992e1bfa56934
2014-01-05 07:14:59 -05:00
Jeremy Long
8eb2f738ef Initial version
Former-commit-id: e7be5c63fd8ffb67d4813a7804082d282a80e134
2014-01-05 07:13:50 -05:00
Jeremy Long
b569ad4ef5 Initial version
Former-commit-id: 649d9e94e9e9c771a4efdace79ec8ddca0cc1af4
2014-01-05 07:13:50 -05:00
Jeremy Long
af77ab01c2 updated logging
Former-commit-id: cf72503083e68cc1f58a20d8a0e86f3fca00295d
2014-01-05 07:12:55 -05:00
Jeremy Long
6ab5388075 updated logging
Former-commit-id: 7594ca0adc6256389b918a96ff0a875a582a0cc3
2014-01-05 07:12:55 -05:00
Jeremy Long
6022b13285 updated package-info
Former-commit-id: fdc542ccc2d06f352b2bb949e5107b7cbaf6561b
2014-01-04 09:17:02 -05:00
Jeremy Long
ded3079390 updated package-info
Former-commit-id: cbacf975eae9951165dffdda5ffe0066589d8268
2014-01-04 09:17:02 -05:00
Jeremy Long
735660c830 moved several classes
Former-commit-id: ea163c7ee1ffeb968a78bed953abdad55083b87f
2014-01-04 09:08:22 -05:00
Jeremy Long
44fe358766 moved several classes
Former-commit-id: e15d111bab0061c89ef5d8cea518350fa901667e
2014-01-04 09:08:22 -05:00
Jeremy Long
27daccfc35 moved several classes
Former-commit-id: 16322c61d505a25eb1037a90e2ca941147fad6cf
2014-01-04 09:01:04 -05:00
Jeremy Long
cee4b089c6 moved several classes
Former-commit-id: 57cde1f76269c17d354e38db8ba25a5ab669e2c8
2014-01-04 09:01:04 -05:00
Jeremy Long
2a54077ab1 moved several classes
Former-commit-id: 3bd04e0484cd888b18b929249bed82ca1130a5f2
2014-01-04 08:56:09 -05:00
Jeremy Long
ba8bd4f95c moved several classes
Former-commit-id: f2de931c7c093818a97149b0cefc22d7b3b9717f
2014-01-04 08:56:09 -05:00
Jeremy Long
8e2e258518 updated JavaDoc
Former-commit-id: 38777540e58ce5821fbb86f183e824c143635825
2014-01-04 08:54:36 -05:00
Jeremy Long
c602072e5b updated JavaDoc
Former-commit-id: ce55cd1de24523e421a30b64bfdb906c50b65597
2014-01-04 08:54:36 -05:00
Jeremy Long
a4771090ed renamed and moved classes
Former-commit-id: b0e9d931be4d61eb25178182e8602a0c0be4b6b9
2014-01-04 08:47:25 -05:00
Jeremy Long
76061c84aa renamed and moved classes
Former-commit-id: f2b2f2314e05260f58dba3e36a5886dba24e23f8
2014-01-04 08:47:25 -05:00
Jeremy Long
133a18b70c Moved DBUtils to the utils package
Former-commit-id: 50c78e572be6ac878b29430adeed4c084f50e417
2014-01-04 08:40:23 -05:00
Jeremy Long
cd01d3e923 Moved DBUtils to the utils package
Former-commit-id: fc35a259abae520958501d46ba9fef81510fa4aa
2014-01-04 08:40:23 -05:00
Jeremy Long
4286c79173 removed code that had been previously commented out
Former-commit-id: be89d4ed5ed3f54d0b179a9614ce8e0f0de745e3
2014-01-03 15:15:52 -05:00
Jeremy Long
ff23e7aba7 removed code that had been previously commented out
Former-commit-id: d66771c5b8a673cb1b9b0e31a43361f50efbe610
2014-01-03 15:15:52 -05:00
Jeremy Long
97238b764f findbugs/checkstyle patches
Former-commit-id: b796c6631e20064fe2098721995a271b6cb44f66
2014-01-03 14:56:18 -05:00
Jeremy Long
e61fb6f206 findbugs/checkstyle patches
Former-commit-id: b00c0681a799cea260a2aa6de6aa210709199589
2014-01-03 14:56:18 -05:00
Jeremy Long
b9f3c41a9d checkstyle patches
Former-commit-id: 2c8f71524fb0eb600b41a06c9bdad8d65519551f
2014-01-03 14:39:09 -05:00
Jeremy Long
a6cab8fddc checkstyle patches
Former-commit-id: b20c0046dc72928e3b3e51588846d628bdef63ed
2014-01-03 14:39:09 -05:00
Jeremy Long
e8e951e7ff checkstyle patches
Former-commit-id: 0220c6278809ce9f50fa33f9376b90e54c61b612
2014-01-03 14:30:12 -05:00
Jeremy Long
ec16d9abfc checkstyle patches
Former-commit-id: 68937bbf5b92b8168b2eeae6ced056ec4deafb72
2014-01-03 14:30:12 -05:00
Jeremy Long
f4928dd0b4 moved files to a new package
Former-commit-id: 129b8d0c256104fe2ae28bb45c0418114ed28e35
2014-01-03 14:29:35 -05:00
Jeremy Long
b5c67a47d1 moved files to a new package
Former-commit-id: f728311ae4b5c9184f4c50074fc23a85c0938d43
2014-01-03 14:29:35 -05:00
Jeremy Long
8e14a54815 minor changes to make this a utility class (final, private constructor)
Former-commit-id: 0571f0eddc640925d5f5f2ffbdb873d082191ba9
2014-01-03 14:29:12 -05:00
Jeremy Long
a4c1e3b0bc minor changes to make this a utility class (final, private constructor)
Former-commit-id: 7366e29f0973477901d0531b1fe8792d25da7875
2014-01-03 14:29:12 -05:00
Jeremy Long
52b2bfcd41 updated to use DBUtils rather then the, now removed, parent class
Former-commit-id: 9bccc5e3eb5f9c0846eec99a95395a69101715ee
2014-01-03 14:28:30 -05:00
Jeremy Long
b160d58d1b updated to use DBUtils rather then the, now removed, parent class
Former-commit-id: 51875eb55aa3cd4bccbbc345883ce67c17c72dce
2014-01-03 14:28:30 -05:00
Jeremy Long
a383fe09f6 converted to BaseDB to DBUtils
Former-commit-id: f5366fef82cb43c52e1cdfc49388090fa05fb13a
2014-01-03 14:27:43 -05:00
Jeremy Long
b6a4dfb424 converted to BaseDB to DBUtils
Former-commit-id: 4710ba824597c979d3ad12c8500873e0087e71c9
2014-01-03 14:27:43 -05:00
Jeremy Long
00446f7093 removed unused import
Former-commit-id: 585d9bc2c68d32551b4f1a7cae30fc5bda1d059a
2014-01-03 14:21:21 -05:00
Jeremy Long
5837718cf4 removed unused import
Former-commit-id: 4f419ce943ec5c44ced47d46d24a5aaeb8b23a75
2014-01-03 14:21:21 -05:00
Jeremy Long
7b0d04ef72 removed unused imports
Former-commit-id: e4528fee0acd15217db45b8531ffa498e9c4f36d
2014-01-03 14:20:54 -05:00
Jeremy Long
962e579434 removed unused imports
Former-commit-id: d46a183eab52cc3d604dc92e58186ebb89b7a329
2014-01-03 14:20:54 -05:00
Jeremy Long
66996ec1d3 moved to new package
Former-commit-id: df0c16afe8fac4250e83fbbf66e48eee0ff2df5c
2014-01-03 14:20:12 -05:00
Jeremy Long
63a249ecb0 moved to new package
Former-commit-id: 1093fc5eb2cf0b7c864e96ecf65bbc3fffada113
2014-01-03 14:20:12 -05:00
Jeremy Long
71f40856dc renamed files
Former-commit-id: b8d315c127b078e1d09280c36d08a74b851ceff6
2014-01-03 14:06:49 -05:00
Jeremy Long
3f40ca65f5 renamed files
Former-commit-id: 1b831a983e163cd81beb823f6ea8dc963c67ea47
2014-01-03 14:06:49 -05:00
Jeremy Long
57668fc618 updated test data
Former-commit-id: 21f21a35108f1691cb8525ed332afcb4ddc95289
2014-01-03 14:06:31 -05:00
Jeremy Long
2c19cc3dff removed unused properties
Former-commit-id: 4662d7c84968e036a3bacbc377337b9b63bf68e4
2014-01-03 14:06:14 -05:00
Jeremy Long
e82d14c973 removed unused properties
Former-commit-id: ad9849ad0021325f51cc1b6d1368240e3b71bf47
2014-01-03 14:06:14 -05:00
Jeremy Long
40a1b6fde0 fixed tests based on changes to APIs and available settings
Former-commit-id: 120cbabb800de8c3d385a52f3ae8bd25d9492830
2014-01-03 14:05:47 -05:00
Jeremy Long
8e9aa23c3c fixed tests based on changes to APIs and available settings
Former-commit-id: 7de614dd6d13861316e7dd95295f11d2854529f5
2014-01-03 14:05:47 -05:00
Jeremy Long
ca5ce25dee removed test for deleteExistingData (which was also removed from the class being tested)
Former-commit-id: 001b6c1870b7a91e11042ee7f7b46e67b6e0e36e
2014-01-03 14:05:01 -05:00
Jeremy Long
4687c7dcda removed test for deleteExistingData (which was also removed from the class being tested)
Former-commit-id: b806b2a0f2e106347be7482443938709b3c8d976
2014-01-03 14:05:01 -05:00
Jeremy Long
ca08887dca fixed tests to work with the new method for accessing the DB properties
Former-commit-id: 1cbd6305d8aa758618f80a4c46d6bb20d03fc57f
2014-01-03 14:04:11 -05:00
Jeremy Long
5d857c731f fixed tests to work with the new method for accessing the DB properties
Former-commit-id: 3d4ff665b7e66c0e0e66bd5a3e32fa4c99f28aed
2014-01-03 14:04:11 -05:00
Jeremy Long
b7804a4c83 removed unused import
Former-commit-id: 3323ba22888f13af6d1620e0175221e385ada254
2014-01-03 14:03:25 -05:00
Jeremy Long
eaec1205a1 removed unused import
Former-commit-id: 9deb195c2862ca8d6ea71d4aed6230df47152a5b
2014-01-03 14:03:25 -05:00
Jeremy Long
5460645d4a removed unused property
Former-commit-id: 87027e6ba903fa3719cded64525949b453912c6b
2014-01-03 14:03:05 -05:00
Jeremy Long
e3d03c3d78 removed unused property
Former-commit-id: 12e18baec70983b254d53507186a3a5b954c751d
2014-01-03 14:03:05 -05:00
Jeremy Long
0fbfbfb8f7 updated getDataFile() so that it no longer checks for a base data directory as the subdirectories have been removed
Former-commit-id: ea5f520dbc71243d15e89e6b318c9bd7cbbe22ab
2014-01-03 14:02:36 -05:00
Jeremy Long
927fb013ff updated getDataFile() so that it no longer checks for a base data directory as the subdirectories have been removed
Former-commit-id: 77ae2cb573211de12015606ade9482ca7f0c3d2d
2014-01-03 14:02:36 -05:00
Jeremy Long
998f916cdc removed unused function deleteExistingData
Former-commit-id: 824275af643b7b47cb7b029bd4d6ecd8b69a7d01
2014-01-03 14:01:26 -05:00
Jeremy Long
4deb14ccfb removed unused function deleteExistingData
Former-commit-id: 5102fe9756b1f5470ca2b4f21dcf0f7d86bedeb2
2014-01-03 14:01:26 -05:00
Jeremy Long
1895af9f39 Moved meta data about the NVD CVE into a database table rather then an external properties file
Former-commit-id: 72e131d34110856bc2a20371f2b7661928311efe
2014-01-03 14:00:39 -05:00
Jeremy Long
e04dba610b Moved meta data about the NVD CVE into a database table rather then an external properties file
Former-commit-id: ccef3663d13f8176b3e4f06bd5b9db4c23b207d5
2014-01-03 14:00:39 -05:00
Jeremy Long
720870675c Moved properties to the table in the DB rather then an external file and moved several methods from the parent class into this class
Former-commit-id: 9a8ca2484cd866eb2825f3c80b9a35b9558fcc33
2014-01-03 13:59:39 -05:00
Jeremy Long
99a5dfee31 Moved properties to the table in the DB rather then an external file and moved several methods from the parent class into this class
Former-commit-id: 5b9e629509ce26840892053eef19cc1ffccca623
2014-01-03 13:59:39 -05:00
Jeremy Long
a58eba37a9 Moved most functions to CveDB.java; slowly converting the class to a pure DB utility rather then a base class
Former-commit-id: 48cae3cfeee70312f04605cc1772d735ddb0d969
2014-01-03 13:40:25 -05:00
Jeremy Long
66842fca8e Moved most functions to CveDB.java; slowly converting the class to a pure DB utility rather then a base class
Former-commit-id: 7b1a18596000b3506798d521801a6bb1eace32da
2014-01-03 13:40:25 -05:00
Jeremy Long
9a2ec6b110 moved properties to DB, minor change to API to support this
Former-commit-id: e4a6c6c1eca6806a0d3228ded911fed3ab0f0b19
2014-01-03 09:02:08 -05:00
Jeremy Long
a47280f47b moved properties to DB, minor change to API to support this
Former-commit-id: ffbf3e53a75fc633d9bf8c74c40ea41154a2f4c4
2014-01-03 09:02:08 -05:00
Jeremy Long
389852c979 fixed logging issue
Former-commit-id: 99fdbe6b0388b68537d6741ad29714b40bada033
2014-01-03 09:00:35 -05:00
Jeremy Long
2808ca139c fixed logging issue
Former-commit-id: 63fc2fa2786e06ea759cb47ca552346b6d95f25d
2014-01-03 09:00:35 -05:00
Jeremy Long
bbee8e7d81 corrected logging problem
Former-commit-id: bbde8ab5d76970d7a9bf99e299802119e03c9ed3
2014-01-03 09:00:11 -05:00
Jeremy Long
d87467aa88 corrected logging problem
Former-commit-id: 68bad221b1352b6cfe271f5089ea0f70197dc84c
2014-01-03 09:00:11 -05:00
Jeremy Long
161cd1ee13 moved properties to database along with lots of other minor changes
Former-commit-id: 46c5cac920eead5b1367657b64466b72b8dab5fc
2014-01-03 08:59:40 -05:00
Jeremy Long
382aad5119 moved properties to database along with lots of other minor changes
Former-commit-id: eac66862685ab61200fec1607fb654ffc41e12fa
2014-01-03 08:59:40 -05:00
Jeremy Long
3adc6a646f Changed from deleting existing physical files to recreating the table structure when data was too old
Former-commit-id: a51d372188b371a0b3ebfe23fd21bae1b8284088
2014-01-03 08:58:39 -05:00
Jeremy Long
93f94b65f1 Changed from deleting existing physical files to recreating the table structure when data was too old
Former-commit-id: 5ef2a1a496c75accfdc185910d1a49677fe82e42
2014-01-03 08:58:39 -05:00
Jeremy Long
13ba54183a Updated as properties moved to the DB
Former-commit-id: 6904cc3f79cb60379addecdb0f63f8da64a32255
2014-01-03 08:57:27 -05:00
Jeremy Long
bc66d4b0e7 Updated as properties moved to the DB
Former-commit-id: 5b9f503949b4a7d4a03e313bf60ff756d7c18b2d
2014-01-03 08:57:27 -05:00
Jeremy Long
8be331ddcb fixed logging issue
Former-commit-id: 30d6eb459098c31f085c35ef8af787bc4fdb3993
2014-01-03 08:56:11 -05:00
Jeremy Long
ff044c831f fixed logging issue
Former-commit-id: 4c17e4db31e2315978b13b6bbd8901de04cb9cec
2014-01-03 08:56:11 -05:00
Jeremy Long
a896566a14 improved error handling and logging
Former-commit-id: d6b755d0ade7ec3cb5ad7f4ff9edb1ccf4969d60
2014-01-03 08:55:29 -05:00
Jeremy Long
cb85292f99 improved error handling and logging
Former-commit-id: d0052afd68fc4e90b915473b1a0cc6b53763dc49
2014-01-03 08:55:29 -05:00
Jeremy Long
58ebcbce3d Fixed logging issue
Former-commit-id: 68ee302cbd37302345b8d83c8e588ade2383436d
2014-01-03 08:54:40 -05:00
Jeremy Long
7c7722e8fc Fixed logging issue
Former-commit-id: 695fd31acb7c0bbf99365c244855daf2520055cf
2014-01-03 08:54:40 -05:00
Jeremy Long
06cff0b2a6 renamed settings to properties in the schema
Former-commit-id: 37c8965f64f52b1ae261c18b6d4fce9b5df8b737
2013-12-21 08:15:20 -05:00
Jeremy Long
78cc6764bf renamed settings to properties in the schema
Former-commit-id: f383ea9d8355b8c038f9b0028161db54aeb09d75
2013-12-21 08:15:20 -05:00
Jeremy Long
74c0e3a659 updated schema version to 2.8
Former-commit-id: e8f640e632ab2778327bf57a0ba5b3539bc2a822
2013-12-21 08:14:29 -05:00
Jeremy Long
0b540d6406 updated schema version to 2.8
Former-commit-id: 11acb51c0dc9c6b9772519b0a4695a6bed9374f0
2013-12-21 08:14:29 -05:00
Jeremy Long
076ad8ef7e made error handling more robust so analysis should stop when something goes wrong with a signle jar
Former-commit-id: 1e8fb3a5e6e904751c98a3621630f7953400e802
2013-12-21 07:46:47 -05:00
Jeremy Long
f1e0b7a94f made error handling more robust so analysis should stop when something goes wrong with a signle jar
Former-commit-id: f873948c981239f37fb0083b34906be31c0e9ca1
2013-12-21 07:46:47 -05:00
Jeremy Long
64ebc35dbd improved error handling/reporting
Former-commit-id: e94f29085e11a331d028ee38d24d69017de679c6
2013-12-20 05:36:04 -05:00
Jeremy Long
611635a9a2 improved error handling/reporting
Former-commit-id: a876ed631f9d6c69abd6d57c20cdd81d9d9bbdbb
2013-12-20 05:36:04 -05:00
Jeremy Long
ee5146273e updated documentation to demonstrate a very basic configuration
Former-commit-id: 19425cd973799d866dd92bf1748b0484a3eac180
2013-12-14 13:19:57 -05:00
Jeremy Long
26c30b013b updated documentation to demonstrate a very basic configuration
Former-commit-id: 52683780d58dabc58758e90468429c1bc596bb7e
2013-12-14 13:19:57 -05:00
Jeremy Long
2c82711476 removed batch mode property test cases
Former-commit-id: e64ad0e00a94c4b24585e42c41712fdeba44ba3d
2013-12-07 13:34:30 -05:00
Jeremy Long
899f5231b5 removed batch mode property test cases
Former-commit-id: 476f48ad416b9df6f475368a3b9e7af83cf30810
2013-12-07 13:34:30 -05:00
Jeremy Long
897650cf27 removed unused imports
Former-commit-id: a8848b211e0e602ba20cc196e87dd6336596a3b5
2013-12-07 13:32:57 -05:00
Jeremy Long
0cfeee18c9 removed unused imports
Former-commit-id: 2b84240d9648fcb3b447d3128dc9de054989dde5
2013-12-07 13:32:57 -05:00
Jeremy Long
8e4a3c705a removed batch update properties
Former-commit-id: 255c6e71949efe83516c9eec47b7fcf12f5aef29
2013-12-07 13:30:55 -05:00
Jeremy Long
3e44835687 removed batch update properties
Former-commit-id: eb0a70d541c1b694812f93b7e4271fe5f3d27928
2013-12-07 13:30:55 -05:00
Jeremy Long
01bf6a7eee added some JavaDoc comments
Former-commit-id: b1c8567fc7d29aa2e3285838fabba9f4e5a63fc3
2013-12-07 13:29:28 -05:00
Jeremy Long
d5ac67071f added some JavaDoc comments
Former-commit-id: 8ae8744c4f59f1f2e8a932485b969575b533fc42
2013-12-07 13:29:28 -05:00
Jeremy Long
4ea9445a8f added some JavaDoc comments
Former-commit-id: f4c296a2bbc5b56f8bcd944974e651bf1e19c431
2013-12-07 13:29:05 -05:00
Jeremy Long
6aee9ce92e added some JavaDoc comments
Former-commit-id: e42795dd9f92bcff7109832bacac540e9f589859
2013-12-07 13:29:05 -05:00
Jeremy Long
b3980acbf5 Changed order to prevent blocking, CallableDownloadTasks automatically submit the results to the process executor queue now
Former-commit-id: 536fd58f195fd46de16d56064453409d0e39536b
2013-12-07 13:25:34 -05:00
Jeremy Long
6a268bfb68 Changed order to prevent blocking, CallableDownloadTasks automatically submit the results to the process executor queue now
Former-commit-id: a6671690125a13045e93e40a95c033b8f99cf391
2013-12-07 13:25:34 -05:00
Jeremy Long
d3a1f73d3e Changed order to prevent blocking, CallableDownloadTasks automatically submit the results to the process executor queue now
Former-commit-id: 7b3e75b8b0903041624edb5aba260ac58f6a8099
2013-12-07 12:04:08 -05:00
Jeremy Long
63848e815f Changed order to prevent blocking, CallableDownloadTasks automatically submit the results to the process executor queue now
Former-commit-id: 1d15e48e0485817c4fad1fb7e117e03fd21d43ce
2013-12-07 12:04:08 -05:00
Jeremy Long
7faa9adf79 added a warning to the build output if CVEs are identified
Former-commit-id: bf7b1297a62ec37207fc6409ae62208c117bdb7b
2013-12-07 10:09:07 -05:00
Jeremy Long
6640df18ac added a warning to the build output if CVEs are identified
Former-commit-id: e45640edbdb30efaa9b15374a2d89850a61a01d3
2013-12-07 10:09:07 -05:00
Jeremy Long
1a5ce8f2e9 1.0.8 snapshot
Former-commit-id: f753b911d8f69537c4645d6b0de779d40e2d415e
2013-12-03 05:53:39 -05:00
Jeremy Long
b9436c0cab 1.0.8 snapshot
Former-commit-id: fde0982f64637014703bc2d82b1e90820c739a39
2013-12-03 05:53:39 -05:00
Jeremy Long
fc98d646a0 version 1.0.7
Former-commit-id: 3a17193efed4254ec0d4b566b01afcbda3e6af23
2013-12-03 05:38:31 -05:00
Jeremy Long
c730f7931f version 1.0.7
Former-commit-id: b21b74c1246d48394e51f628512aaa9bc3e9f3a4
2013-12-03 05:38:31 -05:00
Jeremy Long
573866feee improved multi-threaded processing and renamed things for clarity
Former-commit-id: df63ca32884130892e89533f022a5df0e79c62ad
2013-12-02 21:49:55 -05:00
Jeremy Long
ef6035b5be improved multi-threaded processing and renamed things for clarity
Former-commit-id: 5ae87f85859bb2b473a49ac6fa17035b26167fe0
2013-12-02 21:49:55 -05:00
Jeremy Long
ebf855f2a4 checkstyle corrections
Former-commit-id: e9b583b1b1dfb73f076e91c93f2942a65193bd30
2013-12-02 21:37:22 -05:00
Jeremy Long
8502c0f048 checkstyle corrections
Former-commit-id: c18cb3046e295e5369fbe9ac78fc689167f9a1d3
2013-12-02 21:37:22 -05:00
Jeremy Long
595452cf82 updated to throttle downloads and improve performance
Former-commit-id: b89aeeef3e8f163e9e4290eb7599104cad9b31d0
2013-12-02 20:06:50 -05:00
Jeremy Long
acc4d5201a updated to throttle downloads and improve performance
Former-commit-id: cfb82a51204834d132bdf3eecfca2088979e9c26
2013-12-02 20:06:50 -05:00
Jeremy Long
1439fd6104 limited the number of downloads that can happen at one time
Former-commit-id: 19b16dfd7f50faf9375b5b4efc01bfd5513d5b19
2013-12-02 09:10:12 -05:00
Jeremy Long
8248f31b20 limited the number of downloads that can happen at one time
Former-commit-id: b8e90fd953626d6cb4a07996a59fbae7b05917eb
2013-12-02 09:10:12 -05:00
Jeremy Long
f8771adbe7 fixed bug allowing more then a single vulnerability to be removed
Former-commit-id: fa4fcd9917323b3a0e676dc8f16e46bc4099c725
2013-12-02 09:09:16 -05:00
Jeremy Long
39c1624d42 fixed bug allowing more then a single vulnerability to be removed
Former-commit-id: aa2e87885e7a3ddc4947a81c3c3e104630630e23
2013-12-02 09:09:16 -05:00
Jeremy Long
4eb76e6da3 Updated to remove batch update and to remove the abstract class used to enable batch mode
Former-commit-id: bd4a2af794afaf3f04f480aa2295560427f690df
2013-12-02 05:43:54 -05:00
Jeremy Long
7eb82f2e84 Updated to remove batch update and to remove the abstract class used to enable batch mode
Former-commit-id: 2f33644d1a50a425c6ae5e1ca671156e4cdadf8e
2013-12-02 05:43:54 -05:00
Jeremy Long
a84b624fa5 version 1.0.7-SNAPSHOT
Former-commit-id: 3ad98df90ba32515f23eb6d55735c645de2e94af
2013-12-01 10:01:27 -05:00
Jeremy Long
df0d0d820a version 1.0.7-SNAPSHOT
Former-commit-id: fe4abc03628f5e904cb33dc4deeadc0259d2db4f
2013-12-01 10:01:27 -05:00
Jeremy Long
9ca198ee41 Version 1.0.6
Former-commit-id: 73c40956fe68c66d1b2b636610e7119db04b3228
2013-12-01 09:53:02 -05:00
Jeremy Long
e0c0d8bc04 Version 1.0.6
Former-commit-id: 84313712abb800f19859840292a48cd0c16d9342
2013-12-01 09:53:02 -05:00
Jeremy Long
d509523743 added ability to copy suppression data from HTML report
Former-commit-id: 60c9249f745cf6ce6649ec0e06caa351c0be31d3
2013-12-01 07:46:29 -05:00
Jeremy Long
97619d8ba1 added ability to copy suppression data from HTML report
Former-commit-id: 5429dc4a2738b5ea021cc33cf3d1efc68615f99f
2013-12-01 07:46:29 -05:00
Jeremy Long
338c70c289 fixed the loading of the suppression schema for validation during parsing
Former-commit-id: 6107226d54e3e7821140de4c04675e9713997924
2013-11-30 19:17:03 -05:00
Jeremy Long
80df96fd0d fixed the loading of the suppression schema for validation during parsing
Former-commit-id: 12b91a55dbfed4c9305888408b285ddf93ab9e84
2013-11-30 19:17:03 -05:00
Jeremy Long
e899ad8caa ensured resources are properely closed in finally block
Former-commit-id: f508620d90e43b35fc3d0a3c65b858ce52f731a9
2013-11-30 18:41:36 -05:00
Jeremy Long
579e76430d ensured resources are properely closed in finally block
Former-commit-id: d77e0085fc383a607ba8c55cacef60c8b9a9736c
2013-11-30 18:41:36 -05:00
Jeremy Long
c8c6e0350a Updated to support suppression file configuration
Former-commit-id: a84b9b51cf57e0449299d5815a5464b0f74e4a26
2013-11-30 18:17:58 -05:00
Jeremy Long
36dd7269e2 Updated to support suppression file configuration
Former-commit-id: 77c9cfcc307a682dc3786957b88e24afe9f7e33e
2013-11-30 18:17:58 -05:00
Jeremy Long
8faaf6a469 Updated to highlight the help and command line arguments
Former-commit-id: f03a036f1f8822fc3ea95d42d4007d62a5316f65
2013-11-30 18:13:11 -05:00
Jeremy Long
6596cb014f Updated to highlight the help and command line arguments
Former-commit-id: 85b13cf94e984c7ca8a88860da2c19c3c0bc16a3
2013-11-30 18:13:11 -05:00
Jeremy Long
1a0bd89c9d updated to support suppression file configuration
Former-commit-id: 0b6737e1f764c0bdf09d989edbd1c6258b437836
2013-11-30 18:12:43 -05:00
Jeremy Long
62ac63fd77 updated to support suppression file configuration
Former-commit-id: 7bffaef4bf07310c100ae570e44cbbc2fec9a12f
2013-11-30 18:12:43 -05:00
Jeremy Long
6a9308b514 Updated to delete refused CVE entries
Former-commit-id: d17a7dc43a742a86f1f9aafa5bf379b90f40d058
2013-11-30 17:23:23 -05:00
Jeremy Long
e6e8d96f12 Updated to delete refused CVE entries
Former-commit-id: b16207fa8dfa294a256402e12b278433293106d2
2013-11-30 17:23:23 -05:00
Jeremy Long
1b1f5203f1 updated to use UTF-8
Former-commit-id: a9b40a63905122413c896c8d41b777c11549544d
2013-11-30 17:23:00 -05:00
Jeremy Long
f80464ea31 updated to use UTF-8
Former-commit-id: 61fc6d7e5feeedbc74988b5a57639c3e298d01de
2013-11-30 17:23:00 -05:00
Jeremy Long
e2c78e546d checkstyle fixes
Former-commit-id: c5488d61958f91a8f47f4df4b2206f0193eed8dd
2013-11-30 10:00:22 -05:00
Jeremy Long
75b0c6f7a3 checkstyle fixes
Former-commit-id: ae5823ce9c01c4b36e6339fb57c39a47275d56dd
2013-11-30 10:00:22 -05:00
Jeremy Long
dc02757bc3 added support for suppression rules, initial version
Former-commit-id: 803669d51e0b36a17c3353e40c6ebd2d8197cd76
2013-11-30 08:56:44 -05:00
Jeremy Long
f95ce8c7b5 added support for suppression rules, initial version
Former-commit-id: c58bea577282155661b4c6e1991178ea07e7eb98
2013-11-30 08:56:44 -05:00
Jeremy Long
19a2265792 removed
Former-commit-id: e938fad7ee4ca21107c607a056d89df4565907c5
2013-11-30 08:55:45 -05:00
Jeremy Long
c991a3ccfd removed
Former-commit-id: f7ebd94d66bf90f4178b2bbe8d14e16bbaf7f7a2
2013-11-30 08:55:45 -05:00
Jeremy Long
7666ed070a added new services
Former-commit-id: 53f5e71bd6f16e1bddd606b72d1fdc9ca9917f06
2013-11-30 08:54:39 -05:00
Jeremy Long
a1d612b1f6 added new services
Former-commit-id: 8e4875fcca4241a57881429791d419e2256ff408
2013-11-30 08:54:39 -05:00
Jeremy Long
d088e4574e added new suppression schema
Former-commit-id: 7e828e04ad79f41704a38b3aaa25fbb4b4c602f8
2013-11-30 08:54:08 -05:00
Jeremy Long
d3cbd20c5e added new suppression schema
Former-commit-id: b519078a17700369646b686ce570cca74e71ea7a
2013-11-30 08:54:08 -05:00
Jeremy Long
dd8798e52b added new package
Former-commit-id: 2a95b095f3b3a8aba014f259e54f5a9f1e218203
2013-11-30 08:53:46 -05:00
Jeremy Long
cff4f29ba4 added new package
Former-commit-id: 966169962b5ef6f51366048aa7734f41ac162e8a
2013-11-30 08:53:46 -05:00
Jeremy Long
623d992e34 added new exception
Former-commit-id: b3fa50b10c1888cf88f7ed265a670d47b29038b3
2013-11-30 08:52:49 -05:00
Jeremy Long
dc08363360 added new exception
Former-commit-id: 6e6e82a1bb9b69cacabfabcdfa110a1d4a63e0d6
2013-11-30 08:52:49 -05:00
Jeremy Long
420f9a068d added test data
Former-commit-id: 912afc4bc9990f98a226c1caf4f99f9e25b0fb1d
2013-11-30 08:52:15 -05:00
Jeremy Long
a2aa8d9336 added test data
Former-commit-id: bdca1bcf6a146577abab09d415ab65183bac3322
2013-11-30 08:52:15 -05:00
Jeremy Long
864807196c updated getFile to return null if property is not defined
Former-commit-id: b9373294be1860ecc0bbe0193fe2704f0678db69
2013-11-29 07:45:41 -05:00
Jeremy Long
ab2bfa951c updated getFile to return null if property is not defined
Former-commit-id: 3dbd8d356cc509619fe8caa9539a4d01906aa3f9
2013-11-29 07:45:41 -05:00
Jeremy Long
a71c8cef83 renamged getFile to getDataFle (settings class)
Former-commit-id: 9a4fceaf67e3d453b13794de2a14182b877ff42a
2013-11-28 06:22:50 -05:00
Jeremy Long
e871d37044 renamged getFile to getDataFle (settings class)
Former-commit-id: 8b632f78685d0a66bc061bcefd46de4b56d45347
2013-11-28 06:22:50 -05:00
Jeremy Long
f34a3e421d renamged getFile to getDataFle (settings class)
Former-commit-id: 26f07b57ffa3462c6c43ef920e7964961d24a592
2013-11-28 06:22:02 -05:00
Jeremy Long
e32ee71bea renamged getFile to getDataFle (settings class)
Former-commit-id: 16a7e7f6e27026faade75351b34e54ebdc977f8c
2013-11-28 06:22:02 -05:00
Jeremy Long
0440a4aa7e renamged getFile to getDataFle (settings class)
Former-commit-id: 792c7dd2297616b705b4d93a3ee03ff00b3078e2
2013-11-28 06:20:52 -05:00
Jeremy Long
3bc8823e54 renamged getFile to getDataFle (settings class)
Former-commit-id: 940c970878ca7236892e30f74eab37f5eacae4e6
2013-11-28 06:20:52 -05:00
Jeremy Long
0faa49d0e5 renamged getFile to getDataFle (settings class)
Former-commit-id: 18ff20a2369b7ae71c6cce8bb49d258718649eaa
2013-11-28 06:20:05 -05:00
Jeremy Long
a4b9dfaf1c renamged getFile to getDataFle (settings class)
Former-commit-id: 79f2655e3c4f5d53bdb076ea6907baec03701dba
2013-11-28 06:20:05 -05:00
Jeremy Long
9dfc25559e renamed getFile to getDataFile and added a no frills getFile function
Former-commit-id: 26c515de47c1ec510c1249e7caab0b69ef189523
2013-11-26 05:35:40 -05:00
Jeremy Long
c7c85ac676 renamed getFile to getDataFile and added a no frills getFile function
Former-commit-id: 73c2b4d2f5c153bd49873b153e4bbd31ea8b66f8
2013-11-26 05:35:40 -05:00
Jeremy Long
ee6dd0e794 added key for suppression file
Former-commit-id: 6818ec53ed3174592ebdec3e7db6841791c9b5cc
2013-11-25 19:34:49 -05:00
Jeremy Long
1af445a390 added key for suppression file
Former-commit-id: f4f13fb2319d5a8851d46b35a87b8d08f90b00d8
2013-11-25 19:34:49 -05:00
Jeremy Long
10824e9731 updated schema
Former-commit-id: b573be465ddcefd10fc1f14ef8e40549b31d4617
2013-11-25 19:34:07 -05:00
Jeremy Long
4236a2e6f7 updated schema
Former-commit-id: 8a78c1f646d48aa61d46f62e36bfdf34f8818a1e
2013-11-25 19:34:07 -05:00
Jeremy Long
edcf708945 checkstyle corrections
Former-commit-id: 01bfb4aae9a49f002d9633093b6b7a2385470214
2013-11-23 22:38:55 -05:00
Jeremy Long
47e58942f8 checkstyle corrections
Former-commit-id: 2a13933e132d41db6143e214d51efaa3ca20a765
2013-11-23 22:38:55 -05:00
Jeremy Long
c96375a16c initial generated version
Former-commit-id: dac89806d53350b47a4315b92e7d26ce75c9fa4a
2013-11-23 22:07:11 -05:00
Jeremy Long
f854ed50d6 initial generated version
Former-commit-id: 6d97f9f7a43a2d9f8bb605c38b087f1e95e34462
2013-11-23 22:07:11 -05:00
Jeremy Long
5cbf49a3dd initial version
Former-commit-id: 7a4a699b6de99d67ee5fd5bd1b10d991f9845d2d
2013-11-23 22:06:27 -05:00
Jeremy Long
2933a173a2 initial version
Former-commit-id: 11e93c9a8f356483ead2b5c5ba0264fdde5a1f94
2013-11-23 22:06:27 -05:00
Jeremy Long
eebd0491a3 initial version
Former-commit-id: 65a4d406c95101cbfc7cabb8db7cb1f5c2df768c
2013-11-23 22:00:07 -05:00
Jeremy Long
39c45cd329 initial version
Former-commit-id: 8f31fa2e59679aa1c070e8e03458f58797f947d6
2013-11-23 22:00:07 -05:00
Jeremy Long
8c38a0e6cc removed call to BatchUpdateTask
Former-commit-id: 90e72fcc67d2c2773afb6b4e8a1ba2bef3636a19
2013-11-23 21:59:11 -05:00
Jeremy Long
93e6473828 removed call to BatchUpdateTask
Former-commit-id: 134c6ac5eec282b142febd1341ccdb9936219eb7
2013-11-23 21:59:11 -05:00
Jeremy Long
5b9fe065d7 deprecated batch update
Former-commit-id: ff25e317e24ebe0f112e4483b9bf7b9b0bfbd187
2013-11-23 21:58:18 -05:00
Jeremy Long
2cf96bef52 deprecated batch update
Former-commit-id: bf654a174500c4727ec1d0b66368cf06fdabee54
2013-11-23 21:58:18 -05:00
Jeremy Long
8567610ddc split out core DB functions into a base class to support storing settings in the database
Former-commit-id: 88abaeb5ed81793d0f15462b5bf1d9b7ad9387dc
2013-11-19 21:05:12 -05:00
Jeremy Long
3850ef4355 split out core DB functions into a base class to support storing settings in the database
Former-commit-id: 0c9d507e2e9e229691965aca09ef9f6c9e7e0965
2013-11-19 21:05:12 -05:00
Jeremy Long
52c186868e added drop table if exists settings
Former-commit-id: 17aa304097415c585e7812d81ec3e01514cb5ad2
2013-11-19 21:04:16 -05:00
Jeremy Long
d29f989c22 added drop table if exists settings
Former-commit-id: 5ea0128271f3a7e2985eadd330bfa02c4db21dc3
2013-11-19 21:04:16 -05:00
Jeremy Long
2699f8ee85 removed unused code
Former-commit-id: 3f2c0f3dab1d6a129eabdcbdaaa2277d48cdbe33
2013-11-17 22:44:33 -05:00
Jeremy Long
0e31d503d0 removed unused code
Former-commit-id: 1f6158daa812a15baf0d88ee689b49681e67aeed
2013-11-17 22:44:33 -05:00
Jeremy Long
ebaf33a36f fixed imports
Former-commit-id: b2ecd90cd34a5c249874633f396a63f813e18505
2013-11-17 22:44:24 -05:00
Jeremy Long
8c2d552238 fixed imports
Former-commit-id: 9a2c867a83a67bf727381d9c717846993ae56fe7
2013-11-17 22:44:24 -05:00
Jeremy Long
b0f3c76f76 fixed logging statement
Former-commit-id: bc04e34e4c39e739acf8bac7735a9e20cebc76a4
2013-11-17 22:44:03 -05:00
Jeremy Long
1b6cb61f8a fixed logging statement
Former-commit-id: d2f20844c229d73321b3832d9dec22f4e7a55e5b
2013-11-17 22:44:03 -05:00
Jeremy Long
acd118a58c removed references to CPE data directory as this has been moved to a RAMDisk directory
Former-commit-id: 8f4dafe9a687f254bec75703a1f392333cfbde54
2013-11-17 22:40:51 -05:00
Jeremy Long
b6e0fa9085 removed references to CPE data directory as this has been moved to a RAMDisk directory
Former-commit-id: 678eab78293357e3e89566917e73f9b5d3313ab5
2013-11-17 22:40:51 -05:00
Jeremy Long
dff0b497b0 introduced property for max thread size
Former-commit-id: 4b2175859ada2e8d375486627235ea8892f8d7ce
2013-11-17 22:37:30 -05:00
Jeremy Long
1f983d502e introduced property for max thread size
Former-commit-id: 5d48fbedf4b71be52fb1c6eefe3e7b02aa4d5082
2013-11-17 22:37:30 -05:00
Jeremy Long
e34f51a1b0 introduced property for max thread size
Former-commit-id: b3516d41bb6aebb910a73329f2bb102d9df54903
2013-11-17 22:36:41 -05:00
Jeremy Long
13637be1aa introduced property for max thread size
Former-commit-id: e349329de9a98335ccfc4c8216993a1a6693c447
2013-11-17 22:36:41 -05:00
Jeremy Long
e82e996fe5 updated to make downloading of the NVD CVE a multi-threaded operations
Former-commit-id: 4fea16628e8a7a3c5bfd1418129e0ec2d2d97e39
2013-11-17 22:30:31 -05:00
Jeremy Long
8f22740e07 updated to make downloading of the NVD CVE a multi-threaded operations
Former-commit-id: 28e7467020db617007e89018d2d9fed8de335181
2013-11-17 22:30:31 -05:00
Jeremy Long
238abd009d initial version of Callable Download Task - used to make the downloads multi-threaded
Former-commit-id: a13d22e4197e1e9c2dc772767015871925d61901
2013-11-17 22:29:53 -05:00
Jeremy Long
03d5cc7521 initial version of Callable Download Task - used to make the downloads multi-threaded
Former-commit-id: f3f7e880e1fabece990d2ed14bd459a3ffe8c955
2013-11-17 22:29:53 -05:00
Jeremy Long
c9f9e2b97d updated data
Former-commit-id: 74473ad6f21f47c06264819a4733ba67de2996b7
2013-11-17 20:50:31 -05:00
Jeremy Long
25e929c10e removed un-needed test
Former-commit-id: 912d30a7a6b29b21531a525e1c53b04a922a1503
2013-11-17 20:50:07 -05:00
Jeremy Long
8ca4ede403 removed un-needed test
Former-commit-id: 175840ea9fda4a65db61c73d36fdd33c167d7380
2013-11-17 20:50:07 -05:00
Jeremy Long
0e9f5978e1 updated lucene version number
Former-commit-id: cb826e6fac1b2ba1bd04b68b0929b3dc7ec0b22f
2013-11-17 15:21:38 -05:00
Jeremy Long
b50be86615 updated lucene version number
Former-commit-id: cf381ccd9365fa184a94e5a3c860f7c3b180a32a
2013-11-17 15:21:38 -05:00
Jeremy Long
1024b11eeb updated functionality and incremented database schema version
Former-commit-id: fdf58314c5357a43828e6da1e95a5a88f15d1472
2013-11-17 15:20:53 -05:00
Jeremy Long
fe1a8f4425 updated functionality and incremented database schema version
Former-commit-id: 64184f1362e5725c2e9c5d228850b547981e0c75
2013-11-17 15:20:53 -05:00
Jeremy Long
a390418f83 new exception type added
Former-commit-id: 1cae76bac4c92af9e1d98fd7a8c2a10ce3bd9edd
2013-11-17 15:20:01 -05:00
Jeremy Long
dd472c1322 new exception type added
Former-commit-id: ac3650af279b14e5a32add2f6894ad60177fd243
2013-11-17 15:20:01 -05:00
Jeremy Long
182c131ee0 initial version of cpe memory index
Former-commit-id: d4c002c275928b09d63d2ada34ed85fed0a331d3
2013-11-17 15:19:26 -05:00
Jeremy Long
a636adec10 initial version of cpe memory index
Former-commit-id: 5f0d1bb0110361f99a60ad4476c43c1ad1c244bf
2013-11-17 15:19:26 -05:00
Jeremy Long
1d5d104bbc updated version of lucene
Former-commit-id: 2c92ad10267847c3bee362da91151a1b449bd800
2013-11-17 15:18:55 -05:00
Jeremy Long
e3960445ae updated version of lucene
Former-commit-id: db3174428fcb3e789426bec5c9776f3a4b3f4bc8
2013-11-17 15:18:55 -05:00
Jeremy Long
53cf0863d0 updated the version of lucene used
Former-commit-id: 5aec5c97c540b24246c7847344b05bd268c5988b
2013-11-17 15:18:26 -05:00
Jeremy Long
c631b7cd8a updated the version of lucene used
Former-commit-id: adc5e1361c68abf997b0cef401441bf62a169c56
2013-11-17 15:18:26 -05:00
Jeremy Long
5bc64c6925 updated to use the CpeMemoryIndex
Former-commit-id: 0e309506e5503c5960e381ebebcd39fee7ab01b5
2013-11-17 15:17:56 -05:00
Jeremy Long
bb2bf12808 updated to use the CpeMemoryIndex
Former-commit-id: 7cd46e9de48661a1ee9c213889cf3a9d51f1517e
2013-11-17 15:17:56 -05:00
Jeremy Long
c2f9d3f455 updated ensureDataExists()
Former-commit-id: b0878d9d6077a199a639d6518cffffadcb848e7b
2013-11-17 15:17:21 -05:00
Jeremy Long
db95dfe208 updated ensureDataExists()
Former-commit-id: 2ceaa062391abd1a5e74aa5b0cb13de1d7c896e1
2013-11-17 15:17:21 -05:00
Jeremy Long
ddd93f518d updated lucene version
Former-commit-id: 0d315d17205781233a63e57ac5826e6b0a2ba8ee
2013-11-17 14:56:58 -05:00
Jeremy Long
86d052e51e updated lucene version
Former-commit-id: 3611f6887deda4c14caf5fc9ea0c9c8b7762bf0c
2013-11-17 14:56:58 -05:00
Jeremy Long
6d7de79fa9 added constant Version so on the next upgrade this only needs to be updated in one location
Former-commit-id: 2131a7bae9cc75f7d7d727f0ed191f6d90d426d2
2013-11-17 08:08:59 -05:00
Jeremy Long
fb55b9db17 added constant Version so on the next upgrade this only needs to be updated in one location
Former-commit-id: 172abf4686300b258b93026e404276fbf46f7dd0
2013-11-17 08:08:59 -05:00
Jeremy Long
df0f05197a added constructor for DatabaseException(ex)
Former-commit-id: 63b28cecfd5ce5b83ac3353aec0c3c74709532ed
2013-11-17 08:08:01 -05:00
Jeremy Long
ad3ad81c1e added constructor for DatabaseException(ex)
Former-commit-id: 178a4f2ea8d71c148892ab95dc480e88b1186105
2013-11-17 08:08:01 -05:00
Jeremy Long
e3186e6c4c updated javadoc
Former-commit-id: 3b650e1cada9aa78c1b7995ae15286f829e25d6a
2013-11-17 08:00:32 -05:00
Jeremy Long
dccb84ded8 updated javadoc
Former-commit-id: 03c6ba2d0d9cc03f3b9efd6fdb9a8d4972ac4f5d
2013-11-17 08:00:32 -05:00
Jeremy Long
18bca6352d updated javadoc
Former-commit-id: eaf307a386981f0f5e6b63be92350edaea9294ed
2013-11-17 07:59:23 -05:00
Jeremy Long
510c693871 updated javadoc
Former-commit-id: 7ee24e9da15877c3138380c92c29c20757bb78fa
2013-11-17 07:59:23 -05:00
Jeremy Long
fd7299c86f added the ability to retrieve the entire list of vendor/product combinations
Former-commit-id: a1e09bf566f09cb2de1ba800c56628a6e49ccd51
2013-11-16 23:19:52 -05:00
Jeremy Long
8696df12ac added the ability to retrieve the entire list of vendor/product combinations
Former-commit-id: c15c6727f00a18c58590b9a1d6cea4767ca12c5f
2013-11-16 23:19:52 -05:00
Jeremy Long
f572d32f5b no-op
Former-commit-id: 219a41ed15bd973c7f6f248ffa4bb6e74c82e2cb
2013-11-16 23:05:59 -05:00
Jeremy Long
d56e0b0eba no-op
Former-commit-id: 0c024f815e7a766b99473f40086f2cfeb4f97aa8
2013-11-16 23:05:59 -05:00
Jeremy Long
e534d41d81 no-op
Former-commit-id: c5d0631d3692122bc1edbbc920af3a7a871520b9
2013-11-16 23:05:46 -05:00
Jeremy Long
29d77b2f2c no-op
Former-commit-id: 3388d8fab9ab7c35b26b4e374349bf3008aa84c0
2013-11-16 23:05:46 -05:00
Jeremy Long
a641c9858c removed CPE from database updates
Former-commit-id: 0243c4b17c672afd10f77db9edb8a92ea9eeb764
2013-11-16 23:05:23 -05:00
Jeremy Long
4e131cd059 removed CPE from database updates
Former-commit-id: d2054cf9b9b4a28fba11ebb5c9ed565263bc4ef8
2013-11-16 23:05:23 -05:00
Jeremy Long
c8e339a58d version 1.0.6-SNAPSHOT
Former-commit-id: 3ee701ebd5869f9a4ba43933cba349e392310869
2013-11-16 13:48:51 -05:00
Jeremy Long
4c1f3948a3 version 1.0.6-SNAPSHOT
Former-commit-id: c8eb084b1b9de6b8bfa5432b1db33f417dd47572
2013-11-16 13:48:51 -05:00
Jeremy Long
5cfb83a912 version 1.0.5
Former-commit-id: 3315c121f8adeeb5e4dc9fff9d2753bc5faf78fc
2013-11-16 13:42:19 -05:00
Jeremy Long
c40ff67704 version 1.0.5
Former-commit-id: bc5f1fb33d118b811bc8ee15808d8ee320475766
2013-11-16 13:42:19 -05:00
Jeremy Long
85540e6fe3 updated import list to remove .* imports
Former-commit-id: 9e4cfec62260d663af9836984367ea2bb0985fe0
2013-11-16 13:18:11 -05:00
Jeremy Long
af6ac8bd4f updated import list to remove .* imports
Former-commit-id: a73e57c0b4d3194dcbd44071f99dbf6d568bd26e
2013-11-16 13:18:11 -05:00
Jeremy Long
eda770570c added javadoc comments
Former-commit-id: 0c3f625e56e09965a34b3707dcea4598408eaea9
2013-11-16 13:17:34 -05:00
Jeremy Long
70211a8407 added javadoc comments
Former-commit-id: ad59c4d7e8c5b7f1e010fc53ce9425851da286e4
2013-11-16 13:17:34 -05:00
Jeremy Long
41476943ef minor checkstyle fix
Former-commit-id: 3081c6252d389f3ec051982e07f5fc680475d506
2013-11-16 13:12:05 -05:00
Jeremy Long
4d6b83425b minor checkstyle fix
Former-commit-id: e9f54697859f68f2bf067c4bb0ec9738ba8c2579
2013-11-16 13:12:05 -05:00
Jeremy Long
68857fea24 suppressed null warnings
Former-commit-id: 50dbea3c9b9a101b1e4bcb9714845d9cf182fea9
2013-11-16 13:09:33 -05:00
Jeremy Long
985396aaf9 suppressed null warnings
Former-commit-id: 6e249fd024f1674242f2660f56ffa96edccfe80f
2013-11-16 13:09:33 -05:00
Jeremy Long
98911eca05 fixed bug in verbose logging
Former-commit-id: fd4a9b85c3b54ce9f96eaba12b2305614407729d
2013-11-16 13:04:05 -05:00
Jeremy Long
d86c14d3a6 fixed bug in verbose logging
Former-commit-id: bfa66668d3e7b98b651814824562962bb2af4ec6
2013-11-16 13:04:05 -05:00
Jeremy Long
d71e61df8b fixed string format newline character
Former-commit-id: 490c6b3666f03c6796ddd9b47ce83fe8bc070645
2013-11-16 13:03:46 -05:00
Jeremy Long
3bdb3a6b87 fixed string format newline character
Former-commit-id: fee94cf75cdbfe5e52f840514e150a9fa6cef510
2013-11-16 13:03:46 -05:00
Jeremy Long
3188b0f6cb added information about configuring the verbose log file
Former-commit-id: 1d6927fbe8b880894b1e49ed5df2151501961270
2013-11-16 09:26:22 -05:00
Jeremy Long
8dac57d4cf added information about configuring the verbose log file
Former-commit-id: 90e9c7ea24698d8a1a8b5c52828b7bc64dda8b4e
2013-11-16 09:26:22 -05:00
Jeremy Long
9885b8d117 added the ability to retrieve the number of documents in the index
Former-commit-id: a88ba4ac5e919f0cac03e08c04d8f4554a22903b
2013-11-16 09:18:02 -05:00
Jeremy Long
a91e7b9ed0 added the ability to retrieve the number of documents in the index
Former-commit-id: 9a430f2a1805669d3ef2450d98ca7c2b6ed12ee3
2013-11-16 09:18:02 -05:00
Jeremy Long
f868c3d172 Updated error reporting if data does not exist
Former-commit-id: 99047450cd010ba92e14d2dd70701b3fa38f60f1
2013-11-16 09:17:13 -05:00
Jeremy Long
220b2c9a2a Updated error reporting if data does not exist
Former-commit-id: 72db8d8232a2f70c2fc46af095e531b913d1ca38
2013-11-16 09:17:13 -05:00
Jeremy Long
a169183783 Updated error reporting if data does not exist
Former-commit-id: 299c9815cc5c65d7d16c267a185388367529ee90
2013-11-16 09:16:35 -05:00
Jeremy Long
06bc8ed4a4 Updated error reporting if data does not exist
Former-commit-id: b09181a3429f713f084e905e608431f437e60e60
2013-11-16 09:16:35 -05:00
Jeremy Long
415edd2265 updated configuration settings
Former-commit-id: d7156d493cae5ab5ee8b0d1e75bd0260f065da50
2013-11-08 19:15:44 -05:00
Jeremy Long
648863d21b updated configuration settings
Former-commit-id: 3b84fd1eb72ccb772ec1ee6f808876fc235eb9ca
2013-11-08 19:15:44 -05:00
Jeremy Long
255c80953d Merge branch 'master' of https://github.com/jeremylong/DependencyCheck
Former-commit-id: 3793397b9e14acedaff1425461b907b05e69fa16
2013-11-02 07:19:49 -04:00
Jeremy Long
3232e60467 Merge branch 'master' of https://github.com/jeremylong/DependencyCheck
Former-commit-id: baaa780bc99e81b6ae0eacdb7736898d86cd906a
2013-11-02 07:19:49 -04:00
Jeremy Long
bf08aeeaad updated base class of test case to ensure data exists for analysis
Former-commit-id: 19ced06bad2174e5877790d35d86d3e1c0028496
2013-11-02 07:18:26 -04:00
Jeremy Long
da81ea4e57 updated base class of test case to ensure data exists for analysis
Former-commit-id: 4abb5c7c2898a637b7cac759a2156f401a02d2d4
2013-11-02 07:18:26 -04:00
Jeremy Long
45143ba8d4 added support for tar and gz files
Former-commit-id: 4ab0e862a52b22ad20c7c1d1de2121c29aa2ebb1
2013-11-02 07:02:02 -04:00
Jeremy Long
42baec7c72 added support for tar and gz files
Former-commit-id: 7027891fc6ed7959a7eca4f635b6a58ddc91bf05
2013-11-02 07:02:02 -04:00
Jeremy Long
ffeac233c2 added new exception type
Former-commit-id: 5b5154cba53bbaa5a57ae9ee1aa4e35fb8243dc1
2013-11-02 06:49:17 -04:00
Jeremy Long
1accdfe2e6 added new exception type
Former-commit-id: 06f91e8f71d943993b8a6c557350dc29c682f175
2013-11-02 06:49:17 -04:00
Jeremy Long
6903ecbeb4 added license file for commons-compress
Former-commit-id: f72b7a92442da254125c8cca9d1459316b00b17d
2013-10-27 14:29:18 -04:00
Jeremy Long
f625653b30 added license file for commons-compress
Former-commit-id: b112f7151061bd5f54f6b7c7276e30662bded64a
2013-10-27 14:29:18 -04:00
Jeremy Long
64f0c37251 updated test cases
Former-commit-id: c5b3e27cd038a8f73dadac8f95f589809e90f1c6
2013-10-27 14:28:47 -04:00
Jeremy Long
2682187fa3 updated test cases
Former-commit-id: b828cccfbc3ddbdb72fa1eacfbd7d500e7fa70be
2013-10-27 14:28:47 -04:00
Jeremy Long
2331c569df added additional test files
Former-commit-id: 4cffba9e158421721a02a21514abed58451d2750
2013-10-27 14:28:26 -04:00
Jeremy Long
090f3fafa9 added additional test files
Former-commit-id: 21dc900da9b472efc9f80bc0466bbbf4d4802c8c
2013-10-27 14:28:26 -04:00
Steve Springett
34ae6fd089 Merge remote-tracking branch 'origin/master'
Former-commit-id: 8af006894ebed7450ea1253e277674f7f5abae86
2013-10-27 12:42:41 -05:00
Steve Springett
de81ed0c61 Merge remote-tracking branch 'origin/master'
Former-commit-id: ae263584f1cbbddfbc9dde165e2c3ed440454f19
2013-10-27 12:42:41 -05:00
Steve Springett
5b58894b02 Adding support for proxy authentication to core, cli, ant and maven.
Former-commit-id: 80048b95bcef525d34f517ddf4dbfffc67b9d410
2013-10-27 12:42:27 -05:00
Steve Springett
49465888b2 Adding support for proxy authentication to core, cli, ant and maven.
Former-commit-id: 1461b13a3fd8c0ca309e56afb67148fc8de31e63
2013-10-27 12:42:27 -05:00
Jeremy Long
ed5e8e2666 added additional verbose logging capabilities
Former-commit-id: 2a14a2c3ee30f85d3400858be24e5f87d8aa1d9b
2013-10-27 09:13:21 -04:00
Jeremy Long
1555185d60 added additional verbose logging capabilities
Former-commit-id: 8ea1b36130c5dbc86641768de929e1b0f3e928c6
2013-10-27 09:13:21 -04:00
Jeremy Long
f903d91dca added false positive checks for axis vs axis2
Former-commit-id: 4548c6d0e8ba036756721460d0d439ff90279dd4
2013-10-26 17:21:14 -04:00
Jeremy Long
e5235bd714 added false positive checks for axis vs axis2
Former-commit-id: 69bcb7c2921fe3713c3ad548cd2ceb101b3c0ce2
2013-10-26 17:21:14 -04:00
Jeremy Long
58cfdd6d05 attempted to fix minor bug of files not being extracted due to a failure when calling mkdirs()
Former-commit-id: 9136102643bb654b28c39571bbe8ac568a592ea5
2013-10-26 17:19:55 -04:00
Jeremy Long
1b4fe6135f attempted to fix minor bug of files not being extracted due to a failure when calling mkdirs()
Former-commit-id: 2ca6840f3198adb11df764bf11a96c23885f3217
2013-10-26 17:19:55 -04:00
Jeremy Long
28523c356c incremented version to 1.0.5-SNAPSHOT
Former-commit-id: 778b13f3c67aa760c1f577037b5e76554be6e067
2013-10-21 21:28:04 -04:00
Jeremy Long
9481b29d6b incremented version to 1.0.5-SNAPSHOT
Former-commit-id: 9ab1791c78c5bb7331c598c60bec0e39d6ba650e
2013-10-21 21:28:04 -04:00
Jeremy Long
20115e6557 version 1.0.4
Former-commit-id: 0b789dd5afd9cceafc7cce1d651c8ebd376cd79a
2013-10-21 21:16:20 -04:00
Jeremy Long
ee47136fb4 initial version
Former-commit-id: 4fb4c44bee8cfab4ff9ab5ee1aeee3945aca2532
2013-10-20 21:29:12 -04:00
Jeremy Long
83dece68fc moved logging initializatoin to utility class
Former-commit-id: c7979aaa8018355b65788b6b31827910ffe2fd35
2013-10-20 21:28:45 -04:00
Jeremy Long
fce7083e28 updated to make tests go faster. Only downloading recent CVE data files
Former-commit-id: 610b6b6854835017e040d0f43e139c7607e78918
2013-10-20 21:28:00 -04:00
Jeremy Long
5268375153 added anoter mergeProperties to take a File object instead of a String path
Former-commit-id: 97598e74ab61752ab42793bd233e3010321fb86a
2013-10-20 21:27:18 -04:00
Jeremy Long
3598f59123 updated initialize to not ignore errors generaged when creating directories
Former-commit-id: eafcc5c7c7e5e2cad4ec1a2639b1aa95215227d6
2013-10-20 21:26:18 -04:00
Jeremy Long
557f491a7e minor update to logged message
Former-commit-id: d00002337ca34c75d1c193473fbe69af4145d7cc
2013-10-20 21:25:25 -04:00
Jeremy Long
5aa876da72 minor change to FileHandler.pattern
Former-commit-id: 3a792f63ffbae182a7687c9eabfe70191172ebd9
2013-10-20 21:24:42 -04:00
Jeremy Long
7e7a66595b added cli argument to enable verbose logging
Former-commit-id: 261ad7be19eb3058d5bc9521a5c462c2d2ed5f44
2013-10-20 21:23:59 -04:00
Jeremy Long
c429bdf139 moved logger setup to utility class
Former-commit-id: e2c1e20f3538423ccd7428b11bd347873e5713d1
2013-10-20 21:23:13 -04:00
Jeremy Long
22d22f3afa moved logger setup to utlity class
Former-commit-id: 645b08fa4695a3504049d6b3a55cc4fa213b30a7
2013-10-20 21:22:34 -04:00
Jeremy Long
f5845908b9 improved logging
Former-commit-id: 889e0938642ecc754b02ad14a8ddaf457c955425
2013-10-15 21:03:10 -04:00
Jeremy Long
138ce1c69a fixed npe
Former-commit-id: 235ae4ebeea96e9b261ef5d578324b2d60e927bc
2013-10-15 20:34:34 -04:00
Jeremy Long
8366ec5831 version 1.0.4-SNAPSHOT
Former-commit-id: 13eb567ad735cb24b9d1f963daf70545fd2a63fb
2013-10-14 14:05:15 -04:00
Jeremy Long
383f0a7f43 version 1.0.3
Former-commit-id: 76e31ea08acce6b13245f0b63c6fa825b2c69020
2013-10-14 13:45:43 -04:00
Jeremy Long
22e5a5cafd Merge branch 'master' of https://github.com/jeremylong/DependencyCheck
Former-commit-id: 232fd9692b90f77e6cc445f2baddbeb29d38dcde
2013-10-13 14:06:46 -04:00
Jeremy Long
8d6255aa55 updated data
Former-commit-id: 538c82b995c6da81df0fd389aa179f8c81fd6dd9
2013-10-13 14:06:14 -04:00
Jeremy Long
8fd6f7add9 added ftp:ftp as a false positive for Java projects
Former-commit-id: dbc2c6dc2d2d2b439f0e148f5c8ad17fe6ee4a11
2013-10-13 14:03:52 -04:00
Jeremy Long
623c2cb9f1 fixed bug 24 - short package names are no longer added as evvidence
Former-commit-id: cab8910b3aba41a8b7205491ef1e669b25ec87a9
2013-10-13 13:19:56 -04:00
Jeremy Long
259e87442d changed logging level to info
Former-commit-id: 27816e1cd3ccdcf57e0e741ca1b82eee85b293b6
2013-10-13 13:18:42 -04:00
Jeremy Long
8655e025a2 changed logging level to info
Former-commit-id: 529bd317072f4a2f2df37038ab24e0254c0f20b0
2013-10-13 13:18:29 -04:00
Jeremy Long
aba2a9f504 changed saveEntry to a private method
Former-commit-id: 25cc3dc1b825772c0ad56b0f5e66ff94fa6c215a
2013-10-10 18:20:59 -04:00
Jeremy Long
9aa76bd088 removed unused variables (pmd)
Former-commit-id: 7386857733fb5ba4b3c860a0ded9573b6d840261
2013-10-09 09:22:18 -04:00
Jeremy Long
10faef62fa checkstyle corrections
Former-commit-id: 784b14351589b8d4184e931a2b9bf680af2a7283
2013-10-08 20:59:30 -04:00
Jeremy Long
6b291a5ce5 refactoring update tasks
Former-commit-id: bf5280fd1e2e47b3958a75c32af444be9535dc05
2013-10-08 15:19:22 -04:00
Jeremy Long
164f1dcfd4 checkstyle correction
Former-commit-id: 7cbdead3fe54729dd17b77d0688fce0b6b3ad938
2013-10-08 15:18:32 -04:00
Jeremy Long
b7d6d027d3 checkstyle correction
Former-commit-id: 7768a0eeb08bc06bff07e94e1a4da34370adda16
2013-10-08 15:17:52 -04:00
Jeremy Long
c4869f1917 checkstyle correction
Former-commit-id: c74fc3538a9fa0d41dfe04873a535b3f622721aa
2013-10-08 15:17:03 -04:00
Jeremy Long
79c31b5f54 Improved update process, including initial lock support
Former-commit-id: d6fc00406765f4680d900eb0474fed9ade727a0a
2013-10-08 10:58:29 -04:00
Jeremy Long
89e99219d7 removed call to system.out
Former-commit-id: a0cdcc8b975657c06606c9a2467a4c732fee82e5
2013-10-08 10:48:35 -04:00
Jeremy Long
a9b6c68ce3 added the creation of the DataStoreMetaInfo in the constructor
Former-commit-id: 4ca8a0a8ad66aeb15dc410baa20d60dce88c1ecd
2013-10-05 07:42:08 -04:00
Jeremy Long
0563077fb9 fixed bug with delete on exit deleting updated files
Former-commit-id: d26151e944f5af674c256a37694c1e5eaed4b8cc
2013-10-05 07:40:39 -04:00
Jeremy Long
e2f174e92e added additional null checks
Former-commit-id: 74979677f056de15cdcb1322dfd6c0fcd4ceb9a3
2013-10-03 09:01:59 -04:00
Jeremy Long
861bdb47ed implemented necassary test case
Former-commit-id: d1115558dc86f88372ee815300c688f719934f18
2013-09-27 18:30:22 -04:00
Steve Springett
9f9e2d12c4 Fixed minor issue with xsd so the xml report would validate. Added unit test for xml report generation. Adding DependencyCheck.xsd to jar.
Former-commit-id: 5dc93c191f001e92b92a1eb1b02e10e33719ca08
2013-09-23 17:51:22 -05:00
Jeremy Long
03f504cadc seperated functionality to make the update procedure easier to understand
Former-commit-id: a39a0cc6adfd5e3856df3700b698e1ea5e7969a9
2013-09-22 21:52:31 -04:00
Jeremy Long
182c7e827b added additional checks for false positives (apache maven and cvs:cvs)
Former-commit-id: 3a5d19ebd8d432883b5edd7ae552c47f6a16ca68
2013-09-17 10:42:54 -04:00
Jeremy Long
61e0cfc979 added additional test dependencies
Former-commit-id: 65174625469145c3959250d0ffa397666876a2f1
2013-09-17 10:42:23 -04:00
Jeremy Long
3ea3f01394 updated data
Former-commit-id: 4234203ea0c0d3b6262f9f7955ffedb2904ee705
2013-09-17 10:41:43 -04:00
Jeremy Long
fc5b8ca1e5 changed html encoding to xml encoding
Former-commit-id: 33b719b306ee10da411dea91705b03cfcec73261
2013-09-14 10:20:40 -04:00
Jeremy Long
5d67b2f9dc corrected a typo in the report
Former-commit-id: 24c2b1787cc76e1d051091f4527a7e2162a4875a
2013-09-14 10:20:15 -04:00
Jeremy Long
bcf4fd9e93 updated integration test to generate all reports
Former-commit-id: b1878b71606b1ae3c2c8e247c874cc5b989f5b2e
2013-09-14 10:19:38 -04:00
Jeremy Long
5b5faad553 changed https links to http for github pages
Former-commit-id: 1278d25c892a04f25fc3537c6f9b8bb74b81f94f
2013-09-09 10:25:22 -04:00
Jeremy Long
5299261d18 updated links to bintray
Former-commit-id: 2fd6d382fbe06baa882e5e75e9a1e33cfa92f317
2013-09-09 10:09:20 -04:00
Jeremy Long
f852851886 updated info
Former-commit-id: f636fb4794c853d9e9e961a099c13bc6bce02b76
2013-09-09 10:02:53 -04:00
Jeremy Long
20a4d9adb8 updated info
Former-commit-id: f99e1ce85f822b4dbdc28591016d1c66940d7612
2013-09-09 10:01:00 -04:00
Jeremy Long
13997cd282 updated logic to make specification-version lower quality evidence
Former-commit-id: 7f29adc8590243ac6a8719a391318fa3818e27eb
2013-09-05 21:34:33 -04:00
Jeremy Long
965429296b updated version to 1.0.3-SNAPSHOT
Former-commit-id: bfe7bc1f483ce3d5cabfb33d7180696d177a1e8f
2013-09-03 21:47:53 -04:00
Jeremy Long
d9750ce4dc Updated to version 1.0.2
Former-commit-id: 7151b290e4e333f2fbc273d5d04cb82d8f71184e
2013-09-03 21:13:01 -04:00
Jeremy Long
d0fb41e582 fixed git merge problem
Former-commit-id: b1d18d5ce568d266837ddf06174b15d7462b8fcd
2013-09-02 16:19:47 -04:00
Jeremy Long
f7a83d5a60 fixed merge issues
Former-commit-id: fe669abc52c1cbcdec9de8bc1693cea12d9abe0c
2013-09-02 15:54:35 -04:00
Jeremy Long
fc52462df4 resolved merge conflicts
Former-commit-id: d0ce45a374336184101179b73b6019fb1240b9b3
2013-09-02 15:42:24 -04:00
Jeremy Long
119804794f updated site information
Former-commit-id: c4c0356cac5adb52285b14db4a6b7651f9ce7b76
2013-09-02 14:34:46 -04:00
Jeremy Long
f23bd0b268 fixed base test case to ensure data exists for other tests
Former-commit-id: f5c7b0a2c5d87fce004c050744b18ed4baf1d306
2013-09-02 13:03:00 -04:00
Jeremy Long
d6f61b4faf updated site
Former-commit-id: ef0b47bbbef1b3d68d6005a08ac9e25c233756b9
2013-09-02 13:02:35 -04:00
Jeremy Long
4e4b7a1c39 ensured the properties file was closed after being read
Former-commit-id: bee36a9892968a5455508e2275fdb1787e04c1c2
2013-09-02 12:48:17 -04:00
Jeremy Long
376bfb6799 updated site information
Former-commit-id: 9c60f1219a84ad5e58beb0f055a628e951c8d924
2013-09-02 12:44:24 -04:00
Jeremy Long
12bdba9a9c updated site information
Former-commit-id: 032930907c01ad54b0d03004ad7b5e73b541c397
2013-09-02 12:42:44 -04:00
Jeremy Long
33fa1e1350 updated documentation
Former-commit-id: d8912348f3b80e1d03f66b3c57a9d6b84a94be92
2013-09-01 15:35:53 -04:00
Jeremy Long
94e1a4f793 minor checkstyle updates
Former-commit-id: dc9c50f0627222169eceb94a44b8b4b4fa1af267
2013-09-01 15:11:49 -04:00
Jeremy Long
2603d960b7 moved test data.zip to parent so it can be used by other projects
Former-commit-id: 6de6b6231df68d64837a03c4204e58cfc74a54f3
2013-09-01 12:22:08 -04:00
Jeremy Long
b8433c4ea7 moved test data.zip to parent so it can be used by other projects
Former-commit-id: 5d0e82fcaf170af7086de306abc9eb2ed488bc79
2013-09-01 12:21:56 -04:00
Jeremy Long
fc30aeea61 updated Settigns to get the temp directory
Former-commit-id: d9a1e89ce829ab06e5aa1cd454184966d1e4b115
2013-09-01 07:46:43 -04:00
Jeremy Long
01d6e1f14d updated tests to utilize temp directory
Former-commit-id: 984f69e2528d37586a2d7d981d17671e17e7ca0d
2013-09-01 07:27:13 -04:00
Jeremy Long
3b4a65deaa updated to work with the new zip file and folder structure
Former-commit-id: 4ab18e5d93a71124aaf57d1d0b6945c7516e4463
2013-08-31 07:35:20 -04:00
Jeremy Long
2ec5ec78a9 removed unused imports
Former-commit-id: fee44850bba2b1af19989bc14aef99a38e725185
2013-08-31 07:04:17 -04:00
Jeremy Long
6b416b8494 added a test case to test batch update without a modified url
Former-commit-id: 5d10d888c927f86a76f983011cab47d4c2725333
2013-08-31 06:48:59 -04:00
Jeremy Long
eac470e081 updates to batch update mode to allow batch updates without a modified URL
Former-commit-id: 5e8ff7c0d9c880f2421f020f2891a6f7a794570a
2013-08-31 06:48:10 -04:00
Jeremy Long
34ce50b7b5 removed duplicate code by adding a public getPropertiesFile method to obtain the File
Former-commit-id: cd3c7fdad8907eb28704e1e8342dfe41e08d9da3
2013-08-31 06:46:26 -04:00
Jeremy Long
6d85e7cdf7 added test case for removeProperty
Former-commit-id: 7ae029f35b6f1aadd20abac560ae62d377b5557d
2013-08-29 17:01:47 -04:00
Jeremy Long
23a47a6f63 added ability to remove a property (for test cases)
Former-commit-id: b2388ddb516b2f5b32f54398c11fc0c00990c9c8
2013-08-29 16:56:00 -04:00
Jeremy Long
d2bfcc6f0e fixed broken test case
Former-commit-id: b4f434d0d19a24938b2e795d1773c551fba70474
2013-08-29 16:50:21 -04:00
Jeremy Long
7495392aa2 fixed bug due caused by moving properties from cve to data directory
Former-commit-id: 508894a061b40bb80fb294835021e3ba8f34037b
2013-08-29 16:49:09 -04:00
Jeremy Long
c4ddf84ba8 removed duplicate test case
Former-commit-id: 8fd1309deb179486d6042a2b5119caca70437b19
2013-08-29 16:41:41 -04:00
Jeremy Long
aad6c28e4d fixed broken test case
Former-commit-id: 84d34cf826fc4eda8fa72592d9f3f959e9bf4cea
2013-08-29 16:38:08 -04:00
Jeremy Long
2bd03dada4 code reorganization, moved files around to better seperate functionality
Former-commit-id: da6b75d818d67b0c1c695860504aacc00991effa
2013-08-29 06:42:16 -04:00
Jeremy Long
5fab16ad06 temporarily commented out broken tests
Former-commit-id: 1ce099712487d7f1a3e13f3444fe2493181c08cf
2013-08-29 06:41:03 -04:00
Jeremy Long
6a4d1ed44d temporarily commented out broken tests
Former-commit-id: e05b064c6b076bb218b500b7a0feb26044f43d7a
2013-08-29 06:40:37 -04:00
Jeremy Long
db22159a89 added to externalize the meta info about the data used
Former-commit-id: 1fb0bf0594245fc7095c085faf18a000bf76d7f8
2013-08-29 06:15:20 -04:00
Jeremy Long
029e0e5044 updated test for getFile to return the DATA_DIRECTORY
Former-commit-id: f16d34a12416999c28597261b409c997ebc0c3ad
2013-08-29 06:14:25 -04:00
Jeremy Long
3f1ee0b1b8 new test data
Former-commit-id: 7b2bc59faf30d9bdc700bd4f2f5073de738c2b48
2013-08-29 06:13:20 -04:00
Jeremy Long
8009794cca Updated to externalize the data properties file
Former-commit-id: 729b2181f3cfcb7aa2862c1874b8aaacb154d46b
2013-08-29 06:12:55 -04:00
Jeremy Long
12ce96d802 updated getFile to correctly get the main data directory
Former-commit-id: 4c175b6c218c264c8255614858545224c0c597f7
2013-08-28 06:15:24 -04:00
Jeremy Long
53bd62b236 updated data
Former-commit-id: 4fd690df0f94e241f01ce49708117e45932175f3
2013-08-24 20:16:32 -04:00
Jeremy Long
cd7362c654 updated how initial test data is updated
Former-commit-id: dd94b61a39efdd619c23beddf25f683dc1fe5791
2013-08-24 20:00:09 -04:00
Jeremy Long
788b5633cb minor update to test class
Former-commit-id: c4e38c8f5f3ed154216aad0b023176c74e5fa4a4
2013-08-24 19:59:31 -04:00
Jeremy Long
46d106e6e2 updated how initial test data is updated
Former-commit-id: c63f49d89c63446c9ed73800e8cdd17f0a977986
2013-08-24 19:58:54 -04:00
Jeremy Long
8ffb91022e minor update of annotations
Former-commit-id: b29855c5afc64d91c2931aef5debb410b5f457c8
2013-08-24 19:57:55 -04:00
Jeremy Long
57c09d1772 updated how initial test data is updated
Former-commit-id: 7fac5faf5a82bedc6f323f85cee2cd47c984fb74
2013-08-24 19:57:14 -04:00
Jeremy Long
0731ed2c7a updated database schema version so the fix to the lucene index is enforced on clients
Former-commit-id: b743deca9949b67ce5e94c52fff6125e65bf340b
2013-08-24 19:56:13 -04:00
Jeremy Long
19ecb67f2d updates as the CPEAnalyzer was moved
Former-commit-id: d3c21f1c0187a94e56aeff55fd0874273cc65faf
2013-08-24 17:02:27 -04:00
Jeremy Long
d16123c276 updates to ensure backward compatability with 1.6
Former-commit-id: b98e3caf316ea880b6c0adb25f62338e8d16f40e
2013-08-24 17:01:39 -04:00
Jeremy Long
f90b168fdd commiting deletions and no-ops
Former-commit-id: 920f16fc7fb20d5536c62e1ccc180fa248f76802
2013-08-24 16:23:57 -04:00
Jeremy Long
09f416efdf modified CPE Index to seperate writer/reader in prep for adding locking
Former-commit-id: baa48c8e70b36b9b14591d581bc1180b6d30d686
2013-08-24 16:21:32 -04:00
Jeremy Long
05f40f3451 updated javadoc
Former-commit-id: 21268a3107bf50b84d02f8ed68dd567bba7d6de9
2013-08-18 05:55:31 -04:00
Jeremy Long
d81206fe2e Added an implementation of a spin lock that can be used to lock a directory.
Former-commit-id: 121a3d5d026f524698762b377c3582fbc9303bf2
2013-08-18 05:54:11 -04:00
Jeremy Long
f166ef9313 made non-vulnerable jars hidden by default
Former-commit-id: 61cd10a3844a73ac8ee2aadabfe5f1b51998033d
2013-08-16 14:49:48 -04:00
Jeremy Long
14704f9b4d updated jar plugin
Former-commit-id: cd78c43734a1a92c30800eae51c398e328ee4849
2013-08-16 14:49:23 -04:00
Jeremy Long
8381daeeb7 Merge pull request #13 from eoftedal/master
Styling and toggling on HTML-report

Former-commit-id: 99ac0d70c3f94f8245e94e62eca6863faa687898
2013-08-16 11:22:13 -07:00
Jeremy Long
164ed75af2 corrected minor issue with path to zipped test data
Former-commit-id: 44feb56bedd15a651e371a3506142b751961086e
2013-08-16 14:13:12 -04:00
Jeremy Long
1f7c64e279 corrected minor issue with path to zipped test data
Former-commit-id: 9d4d5d6aa5d56028a8fcb871498f20a7cf2febc9
2013-08-16 14:13:01 -04:00
Jeremy Long
a76bf03bc9 updated the scanned test dependencies
Former-commit-id: eac650187d8e8872ff1550148f1a26d640096444
2013-08-16 12:48:54 -04:00
Jeremy Long
e50d7f7b95 increased the ignore list for parts of the domain that will not be used as evidence
Former-commit-id: 1f7d410c1d8c6b9548412b151763fda6e7323d7d
2013-08-16 12:48:22 -04:00
Jeremy Long
45b1327c58 added WAR files so that they will be analyzed
Former-commit-id: 2aa266d40d5d3c1b3511db642e8b23331abf4b29
2013-08-16 12:47:30 -04:00
Jeremy Long
fe60421731 updated dependencies for test cases
Former-commit-id: 8ca0be6ef84b6db1baf3e8b05142fbd86bae97a7
2013-08-16 12:46:41 -04:00
Jeremy Long
0404fe9044 changed dependency references used during test
Former-commit-id: 64f18029835d6739034eaa9e44e9a974145d2aaf
2013-08-16 12:06:13 -04:00
Jeremy Long
8cf6c59ec7 removed from test resource to a test dependency
Former-commit-id: 44dab7bb5eed97a2fc48859136725ce62f0f6d1a
2013-08-16 11:18:50 -04:00
Jeremy Long
7b817ff866 minor update to remove lib from scanned directory during test
Former-commit-id: 7284871eb641a85f1f4d70c74b98e01c55b962b2
2013-08-16 11:18:31 -04:00
Jeremy Long
f087f70a2c updated dependencies that are only scanned during tests to be provided/optional and copied them to test-classes
Former-commit-id: f7c7f5c0e258cc333931ed0980a04dce4cce36b3
2013-08-16 11:17:44 -04:00
Jeremy Long
b05752f430 added hazelcase-2.5.jar to the test cases
Former-commit-id: d048612ddd8c5ffe6d2b587a817aae274b728b98
2013-08-16 07:15:56 -04:00
Jeremy Long
c4cde366e8 fixed bug with short words at the end of a CPE were being ignored in verifyEntry. Also, added a min score of 0.08 for documents retrieved from lucene in order to prune bad matches earlier
Former-commit-id: b1720b2fba627507c601dc1e5b08a5b540095271
2013-08-16 07:15:10 -04:00
Jeremy Long
33249fad21 added "lib" directory to engine integration test so that new dependencies to test can be added to the pom in the test scope
Former-commit-id: 7e8b95db4698e6505170fce016124910512b4f3a
2013-08-16 07:13:07 -04:00
Jeremy Long
f0dd28d4db updated test class path
Former-commit-id: c29fa3df038932ffa9f3356327c7706133081137
2013-08-16 07:12:01 -04:00
Jeremy Long
c0e35aa9fa set version to 1.0.2-SNAPSHOT
Former-commit-id: 68029d97497bb2c7adb05869f3d4a2f4891eeb62
2013-08-14 20:11:52 -04:00
Jeremy Long
1fd633a23b upgraded to use apache commons compress instead of core java zip api to accomodate UTF-8
Former-commit-id: 9a681b87ad8f53a909939360733f04b1e552f481
2013-08-14 20:06:26 -04:00
Erlend Oftedal
9a65e26e71 Styling and toggling on HTML-report
Former-commit-id: bfb745138b5bfbf1206135bd1d53ca463b46fcf0
2013-08-13 16:08:25 +02:00
Jeremy Long
f22cabc32a update
Former-commit-id: d4fcc81fca0f0070352b9a6c9b8e79704819e146
2013-08-07 22:49:56 -04:00
Jeremy Long
b97d57f00b updated information and added links to gh-pages
Former-commit-id: dc36d56de5d6bd7bc82680cd263ead8ceeea139b
2013-08-07 22:47:30 -04:00
Jeremy Long
5db3544683 removed gpg signing
Former-commit-id: 9782dddf82265be0f675f5e5f9f9849bfcc5b3ae
2013-08-07 22:42:32 -04:00
Jeremy Long
96eee95596 updated readme
Former-commit-id: 4cf254d41b78f8e9b232d6b40ab866fee05deac6
2013-08-07 22:41:29 -04:00
Jeremy Long
ffb3243bb6 reverting back to v1.0.1
Former-commit-id: 1000c0503272c412520a2b7f63c2f90dbcae9b5b
2013-08-07 22:37:35 -04:00
Jeremy Long
09f07902ef updated batch update functionality
Former-commit-id: f62347bd25b61f048f18fb8cb23b8de7c053659e
2013-08-06 19:34:11 -04:00
Jeremy Long
43583bbc2e updated tests
Former-commit-id: f290ba61239a0a5beee9522e036100753ddef2f7
2013-08-06 19:33:37 -04:00
Jeremy Long
2ebc713cbb added new test data in zip archive
Former-commit-id: 941e6cff1ecd034d3450f81fd986c3c245cb42e1
2013-08-06 19:32:37 -04:00
Jeremy Long
65ecc0f3bb removed
Former-commit-id: 312a48623f9b1d9ecd9950a2a8d719ad28ce82f9
2013-08-06 19:31:45 -04:00
Jeremy Long
ebabc1117e added additional tests
Former-commit-id: b377007cf39b3f828fb336e336804b7db56ff923
2013-08-04 14:48:21 -04:00
Jeremy Long
672e59e657 commiting initial (and likely broken) version including batch updates - commiting as I need tests done with more OSes
Former-commit-id: 38f07a64633e0762623cdb5a00478a5bafd159b3
2013-08-04 14:47:54 -04:00
Jeremy Long
882e11f558 attempting fix for Windows file:/// URI
Former-commit-id: 38a26b41aa2ebed8e043ec4dd5a0096a353b650d
2013-08-04 14:44:53 -04:00
Jeremy Long
1cd5acb972 updated fetchFile test to remove un-needed argument
Former-commit-id: fab441c8cb525226f8e246e258e6705ed7167bbf
2013-08-04 10:48:10 -04:00
Jeremy Long
464a6efd28 removed some un-needed functions relating to downloading files
Former-commit-id: 95735c796df1ae95be5273c66722a5cbfbc81c36
2013-08-04 10:46:06 -04:00
Jeremy Long
18c3c1f475 added new exception
Former-commit-id: 919a3a7beaf09c6bd98c48c94d7712f51cd7624a
2013-08-04 10:34:20 -04:00
Jeremy Long
52de46aeb3 moved unzip functionality to FileUtils
Former-commit-id: 3f791cb94b5ec94d17118d25cb08598c1769edda
2013-08-04 10:33:28 -04:00
Jeremy Long
b80d088254 added a file.delete that will delete the file on JVM exit if the original delete fails
Former-commit-id: 6007a325a0796b8ad881df6c8f3568fe131a764b
2013-08-04 10:32:53 -04:00
Jeremy Long
7d0d85aeb7 removed unused properties and added BATCH_UPDATE_URL
Former-commit-id: ef80d9a274071342026a619b88183bfca4988074
2013-08-03 12:12:59 -04:00
Jeremy Long
d19ef8322e removed unused property in test case
Former-commit-id: 608279aaf7e507621454065a9f62f25883c61002
2013-08-03 12:11:46 -04:00
Jeremy Long
840b4d7619 updated comments
Former-commit-id: 93c3f238c44a604e25ac8706f0efbc70d6158c9b
2013-08-03 12:10:50 -04:00
Jeremy Long
e4a36545d7 updated getLastModified() to support the file:// protocol
Former-commit-id: e23b72db0070c2ecf22a725cc936451440ad530f
2013-08-03 12:09:44 -04:00
Jeremy Long
31fbc7389b made getDataDirectory static
Former-commit-id: b347a95eb968ae49fb7a904c4a8ed5d7a00e85dd
2013-08-03 12:07:05 -04:00
Jeremy Long
19ec936d38 added application name and version properties
Former-commit-id: d99340e153b1548b9483b346a3aa488462f5689e
2013-08-03 12:06:24 -04:00
Jeremy Long
939c67d41c added application name and version properties
Former-commit-id: fe8db80a771f7a45875136295412a3becaed3b0d
2013-08-03 12:05:54 -04:00
Jeremy Long
9614e4f115 added version to data directory path
Former-commit-id: f5ca8a7c4ef98c5e7b72c410691b069c6221c9e1
2013-08-02 23:41:21 -04:00
Jeremy Long
c48150a792 updated installation download urls
Former-commit-id: f496586d54e157764d32ee81d0f8a60d3c377523
2013-08-01 11:56:15 -04:00
Jeremy Long
60687502d1 version 1.0.2-SNAPSHOT
Former-commit-id: e3dfa2662b85df65a91ab016c512ef0fb9dcfd0e
2013-08-01 11:50:37 -04:00
Jeremy Long
2fab58759e version 1.0.1
Former-commit-id: c8cb49627593ccb3ad9033222341c04af3feb2f9
2013-08-01 11:09:07 -04:00
Jeremy Long
a42c586bb2 fixed issue with data directory and made a few other minor changes
Former-commit-id: 46f89f4deb6b0b55f34ee61c61424f87bf0334d8
2013-08-01 10:57:44 -04:00
Jeremy Long
a6b76b3494 Updated installation instructions
Former-commit-id: 3a8ea34b6e4a3eb3b2877d30b3c211290f758c0b
2013-08-01 10:57:13 -04:00
Jeremy Long
a6eaf7fc84 [maven-release-plugin] prepare for next development iteration
Former-commit-id: b55c872dbc13979238a795d1eb2ebb7539522860
2013-07-31 15:25:50 -04:00
Jeremy Long
97ba9b42eb [maven-release-plugin] prepare release dependency-check-1.0.0
Former-commit-id: 6119beae5eca578e8c0f1847a4a5d1b4de1353d7
2013-07-31 15:25:26 -04:00
Jeremy Long
e0a71f0373 snapshot 1.0.0
Former-commit-id: 2a24202dc7e55e11d975b79f7972ca6f792d991d
2013-07-31 15:10:15 -04:00
Jeremy Long
b8875d7f1c [maven-release-plugin] prepare for next development iteration
Former-commit-id: c8259bf06880587c957e31bd65b2aae8aad0e594
2013-07-31 14:41:20 -04:00
Jeremy Long
67dfd9a942 [maven-release-plugin] prepare release dependency-check-1.0.0
Former-commit-id: 793202c9cad55877dd574b109b17aee7158021e8
2013-07-31 11:21:09 -04:00
Jeremy Long
db46b03d0c releasing updates from private repo
Former-commit-id: 745279b1fbbfe1e331adbf52ca4ccd9e75a18178
2013-07-31 10:21:31 -04:00
Jeremy Long
5672c86905 removed todo comment
Former-commit-id: fc33e187defbec9a57ef66aca2ab0486b14d9d55
2013-06-25 22:35:34 -04:00
Jeremy Long
d5406270a5 improved exception handling
Former-commit-id: bd0f78d44a0079181f9a7b461c0599a4f57db01b
2013-06-25 22:31:59 -04:00
Jeremy Long
0b3f5e408b moved jaxb generated code
Former-commit-id: 1847d2987af92aea9f72d83165600dacbfd54510
2013-06-25 22:19:40 -04:00
Jeremy Long
2ce432ac77 moved jaxb generated code
Former-commit-id: cf1b87989c9bea724a852d2293e11255cdf2ffcf
2013-06-25 22:18:58 -04:00
Jeremy Long
6cb26b3fbb added extra jar to analyze test to correct http false positives
Former-commit-id: 584f7924b1a50de4cf358d7880dbca6646161d98
2013-06-23 22:42:40 -04:00
Jeremy Long
a9b5949191 added correction to deal with http urls causing false positives
Former-commit-id: 8fc7b6ec7754d83eca030968e851a13ef0b2b6ff
2013-06-23 22:40:58 -04:00
Jeremy Long
6016370515 Added methods to test strings for urls and to extract important portions of the url
Former-commit-id: be5878b61d1ce226a4d802b431cfa6c0d32252d1
2013-06-23 22:38:45 -04:00
Jeremy Long
f3c026f278 few minor updates
Former-commit-id: 2b41a7ee44fde511a47bb76f7c366db123eb2528
2013-06-23 22:37:27 -04:00
Jeremy Long
8f218bd6d6 added common-validator to help solve the url problem
Former-commit-id: c926c675c51d0e22f2552a1d1822bb16d25501c7
2013-06-23 22:34:12 -04:00
Jeremy Long
59fd89bf68 extracted common parts of the tokenizing filters to create the AbstractTokenizingFilter
Former-commit-id: 5ecb6ad7f16de5d9a22789b4cfbbf38c40a8fb35
2013-06-23 22:33:07 -04:00
Jeremy Long
d27a6235f0 added the AbstractTokenizingFilter
Former-commit-id: 043e4f9940c341dc05529c08d154f523735756d3
2013-06-23 22:30:47 -04:00
Jeremy Long
c23febbcf0 added UrlTokenizingFilter
Former-commit-id: 6868a5b16e8d44f8761028278b6c292f98f53a7b
2013-06-23 22:29:54 -04:00
Jeremy Long
81e85a4d0d added UrlTokenizingFilter
Former-commit-id: 23c7e8caa1e554141b1f02adae6469d94ed29f8e
2013-06-23 22:27:50 -04:00
Jeremy Long
44ba1bc85b fixed the addEvidenceWithoutduplicateTerms - but allowed the same term to be added multiple times
Former-commit-id: 415bde97d05cb6c7dc221d2671f37156a17a7003
2013-06-23 22:26:37 -04:00
Jeremy Long
6244fe5a93 added suppertsExtension method to determine if any analyzer supports a specified extension
Former-commit-id: b889407df86d1611fee3e09039a7f0113f3167a2
2013-06-19 23:28:08 -04:00
Jeremy Long
973335db56 updated to version 0.3.2.5-SNAPSHOT
Former-commit-id: 8d0d2f1ed56c85a6291e4ad0723133d9afd0527e
2013-06-17 20:44:05 -04:00
Jeremy Long
4b2c4f88d3 updated to version 0.3.2.4
Former-commit-id: e8184de2ff4248eba5996cb8024fd804d273ae7f
2013-06-17 20:42:07 -04:00
Jeremy Long
bbd2ca0d68 updated logging
Former-commit-id: 940e4d2a7aba51931b1024c7426ba31bc686cc16
2013-06-17 20:40:29 -04:00
Jeremy Long
a82c225841 added message about BH Arsenal
Former-commit-id: f793bc5197eb7483774e8c9f3f5325e77e41b090
2013-06-17 20:25:40 -04:00
Jeremy Long
f9a6852aaa checkstyle correction
Former-commit-id: 63e61948becf22440bab7c34ccb304205bc60174
2013-06-16 07:43:54 -04:00
Jeremy Long
fad704b692 updated logging
Former-commit-id: b305a66140786ce59f547a7fce4a211e092a883d
2013-06-16 07:24:34 -04:00
Jeremy Long
e362632477 updated logging
Former-commit-id: 665f57b1a1aca0ab8b2ee5a370ef17089d00c813
2013-06-16 06:36:14 -04:00
Jeremy Long
4558b49c1b updated logging
Former-commit-id: 4d6b0268527200b6472c2068c2e835ae003a9f44
2013-06-15 23:42:45 -04:00
Jeremy Long
4357d8788a fixed null pointer exception
Former-commit-id: a4ec4a993db877914ba7742e4c1eb04d8cb76a0c
2013-06-15 22:40:11 -04:00
Jeremy Long
78b7c24c15 minor updates - still no implementation though
Former-commit-id: 02bcef8ced0cbca52f79d4f4e02aa388a5aab60c
2013-06-11 06:23:05 -04:00
Jeremy Long
127e9e9f74 updated javadoc
Former-commit-id: 0ec1e86a1aad644b242d0c2add4a1f91787c9bf3
2013-06-11 06:20:00 -04:00
Jeremy Long
1951ae1cce fixed compilation issue due to changes in other classes
Former-commit-id: 1f34406810b81131a2fab354b92a96295c3911cd
2013-06-11 06:05:07 -04:00
Jeremy Long
79e2fd4b52 added a temp directory property
Former-commit-id: 4eef30988909b1ba51ee4556fe3f1d3b93189278
2013-06-11 06:03:52 -04:00
Jeremy Long
2265a2c43d added a getInt with a default value
Former-commit-id: 4447f876376b8f2919bca5d784749205d9a01055
2013-06-11 06:03:13 -04:00
Jeremy Long
1e7e543ab0 minor update to support new analyzer
Former-commit-id: c30cd9fee16331a50b33792b0cfc3d48e33fb5b3
2013-06-11 06:00:09 -04:00
Jeremy Long
9671a73bd6 added netbeans configuration files too
Former-commit-id: 9cb38b18c5b87a88c01b16b9a81414d8524897ca
2013-06-11 05:58:06 -04:00
Jeremy Long
5bbee94d68 added throws clause to initialize and close as specified by the interface
Former-commit-id: 4a081a980f370513f54c23e6a6d2c2c41c0ff200
2013-06-07 22:24:01 -04:00
Jeremy Long
9d7122d69c re-arranged code and improved documentation (some)
Former-commit-id: 7e52b2625f3cf4f30c6d250c00104fe7742e11f2
2013-06-07 22:04:35 -04:00
Jeremy Long
6b1270a4f9 made snapshot
Former-commit-id: fc59277b3a8d29c0b19f4c89129fa137bb440290
2013-06-07 22:00:36 -04:00
Jeremy Long
3c8de2be3f v0.3.2.3
Former-commit-id: 50b7db9ccbac552ebd06dd85045b3da0c1414f07
2013-06-07 15:53:03 -04:00
Jeremy Long
5afb5f0e83 v0.3.2.3
Former-commit-id: 5e838c7e8f7facd79cbfb0f63dac3d4a39034e38
2013-06-07 15:52:24 -04:00
Jeremy Long
7f42d0df40 to revert
Former-commit-id: 02de6f9d928f3d18cd4b23fdff26aac4c9c99d74
2013-06-07 15:51:20 -04:00
Jeremy Long
0df54c9021 next snapshot
Former-commit-id: eb08242da149b71a8c552d0d1ea7d589397c8104
2013-06-07 15:47:33 -04:00
Jeremy Long
41bc33f4ba removed deprecated code
Former-commit-id: 73b72b8f5aba62876655bd6912365da378d3e804
2013-06-07 15:46:30 -04:00
Jeremy Long
dcc883fa27 v0.3.2.3
Former-commit-id: ff715cd36a4c2340b563bf8df720ee90f33a095b
2013-06-07 15:46:17 -04:00
Jeremy Long
492c5d01bf checkstyle fix
Former-commit-id: a2537f620af11103ebefa0f94afc60b35cc82be5
2013-06-07 15:46:02 -04:00
Jeremy Long
49eaca1290 checkstyle fix
Former-commit-id: 6115652bf743e0fbb3d54fb294426de97496c6b7
2013-06-07 15:45:32 -04:00
Jeremy Long
ce43b586ad added vulnerable library count
Former-commit-id: 2913ff54090a0527bf34c0740898644e4b82efde
2013-06-07 15:44:15 -04:00
Jeremy Long
ae49cd6a26 added a new vulnerability report
Former-commit-id: 58c096683a2a382100352262dfd13b511a696447
2013-06-07 15:20:38 -04:00
Jeremy Long
6ad3897af8 added Stupid Table Plugin
Former-commit-id: 110e79a21c6e1f61d503ab1fa9331f76b5da13b2
2013-06-07 15:20:23 -04:00
Jeremy Long
53ddb067ea version 0.3.2.3-SNAPSHOT
Former-commit-id: 043e562ba47635a3a25e8724fb36f246ecd97cf2
2013-06-05 00:07:59 -04:00
Jeremy Long
a9762170bc version 0.3.2.2
Former-commit-id: 98ef7905c06f8489c0e685fa8992d0f08985340e
2013-06-05 00:06:09 -04:00
Jeremy Long
4d91403fd2 checkstyle fix
Former-commit-id: 885c335fc8fd4b8eea0e074c919f02c3cc26e32c
2013-06-05 00:05:46 -04:00
Jeremy Long
e1cd4a63d0 checkstle fixes
Former-commit-id: 473ff93fdc20125b97459a8e0cb51fd115b410e3
2013-06-04 23:47:22 -04:00
Jeremy Long
18f3874dab checkstyle fixes
Former-commit-id: fecdd752a18a9ea349fcba0ac9a6b5e76abeccde
2013-06-04 23:40:37 -04:00
Jeremy Long
6efcee500d updated javadoc
Former-commit-id: 686cdfb01938f14c5856300f3a7965c1aa22da6e
2013-06-04 23:40:11 -04:00
Jeremy Long
8c0532f363 updated javadoc
Former-commit-id: 43e1db973c4e4d9f36eb7fd18da76f5a0226fabf
2013-06-04 23:40:02 -04:00
Jeremy Long
fdb0d07ab8 fixed bug where dependencies would get bundled even if they were different versions
Former-commit-id: 23eb0cb89d4372611d552e3691727ac8477b245c
2013-06-04 23:27:14 -04:00
Jeremy Long
58e30649a3 added equals and hashCode
Former-commit-id: e7091b8f28f1a24d761729fe213b6208fe2ee03b
2013-06-04 23:06:02 -04:00
Jeremy Long
85feef3a60 added filter to add the correct Maven namespace to the POM if it is missing
Former-commit-id: a330eb5ade23e02e8ba450750f4051fd8844df39
2013-06-04 22:54:28 -04:00
Jeremy Long
fccd913a8a added filter to add the correct Maven namespace to the POM if it is missing
Former-commit-id: e8e3901878beacc0837e7b0578c810b2283727f0
2013-06-04 22:54:09 -04:00
Jeremy Long
dd119edafe minor bug fix
Former-commit-id: 0f0d101a22e904db91348dd40a40780d9bcb85ad
2013-06-04 05:09:04 -04:00
Jeremy Long
f6633fb16c checkstyle fixes (javadoc, final variables, etc)
Former-commit-id: f1ee986631ba810cea2ca2101948c11c03c0d62c
2013-06-03 20:23:23 -04:00
Jeremy Long
d243bf4f48 added attribute to ignore a findbugs style error
Former-commit-id: e675e7d62a96807f686f8a3a992b97be13b7e0dd
2013-06-03 20:17:07 -04:00
Jeremy Long
92d306f777 findbugs fixes
Former-commit-id: 390c00542b8ee16746118126bd9d6b7f4f98b546
2013-06-03 20:07:39 -04:00
Jeremy Long
0ea29b3d7c add jsoup to help convert the HTML, specified within nodes in the POM, into text.
Former-commit-id: d32fbfe3e1d9a26f053773d7b9566acead1acc1c
2013-06-02 21:45:49 -04:00
Jeremy Long
c8e6e8eb32 added code to remove additional false positives
Former-commit-id: dfe20849d2c7d4674331f44af3a82112a99b993c
2013-06-02 21:44:20 -04:00
Jeremy Long
a6aae6292e added initial version filter - only supporting struts1/2 right now
Former-commit-id: aa432c189c55d9ed66cf86d48041dd69dd43ab86
2013-05-31 22:57:04 -04:00
Jeremy Long
e33100b075 added another manifest entry to ignore
Former-commit-id: d8329c24f05a157cb94c8a9effbde52af31bfd76
2013-05-31 22:32:56 -04:00
Jeremy Long
84a229d286 added another manifest entry to ignore
Former-commit-id: 026080b556ab2a1736f137f87b7bf5c43cfecf6e
2013-05-31 21:52:36 -04:00
Jeremy Long
ab32c42487 fixed javadoc typo
Former-commit-id: d6d2c1998c8a8c933608351fd2b301b94480236f
2013-05-31 21:24:33 -04:00
Jeremy Long
0dc3744859 fixed javadoc typo
Former-commit-id: c631903f6567a3889722c9f19597651117c1d83d
2013-05-31 21:24:06 -04:00
Jeremy Long
d22eab4155 reduced complexity around determining if the jar contains classes
Former-commit-id: 3d31a3cbebcf0bebec17ee5f8c9a060f60458db8
2013-05-31 20:48:33 -04:00
Jeremy Long
ea9bfec3c9 removed a reported exception for javadoc or sources jar files for not having a manifest
Former-commit-id: bebbf0a2ef45f8d035a8420e036c6ac034a89760
2013-05-31 20:41:23 -04:00
Jeremy Long
02b43a5d66 minor update to text
Former-commit-id: 3d7ed5dfd4bef89e002d5bb3e49dc581a4863529
2013-05-27 22:22:44 -04:00
Jeremy Long
e0fc7952f4 v0.3.2.1-SNAPSHOT
Former-commit-id: 08cae57ef475f148c4d9754ab3414a41bfece536
2013-05-27 22:18:20 -04:00
Jeremy Long
66ec2c5d27 0.3.2.0
Former-commit-id: 9e3ef33d93a6d7d5e65cac75adf97cd3dc81f69e
2013-05-27 22:14:27 -04:00
Jeremy Long
f5a78402a6 testing
Former-commit-id: 13fe0b65c1061084d1716db13c18d19ed1797fce
2013-05-27 22:12:25 -04:00
Jeremy Long
29bfd7325d reset username and blank password
Former-commit-id: eb9ffb878d8f5c943bb5651ee9c2c18d9af7243f
2013-05-27 21:32:05 -04:00
Jeremy Long
318962c01f updated H2 version
Former-commit-id: 34b9d13b96c8891525c505dfbe0a41bed3422bb7
2013-05-27 20:47:13 -04:00
Jeremy Long
8ca49fafa1 added compile time support for findbugs suppress warning annotation
Former-commit-id: 189e2b7c84b49413c141810ac7efca31910eb7e1
2013-05-27 20:02:54 -04:00
Jeremy Long
656e783894 updated javadoc
Former-commit-id: c0ae715bd4042302ae97dd7834764629559d691c
2013-05-27 20:01:47 -04:00
Jeremy Long
18c6d60a85 updated javadoc
Former-commit-id: 7b5aaeab99df80b48414e880f05583f851c772d2
2013-05-27 20:01:16 -04:00
Jeremy Long
b202121c21 added findbugs suppression for a non-issue and made a few checkstyle corrections
Former-commit-id: 60a3757ce97ec7cccc07b66ef4541db3e2c2bdac
2013-05-27 20:00:46 -04:00
Jeremy Long
ea3672dd08 added findbugs suppress warning for a false positive
Former-commit-id: 439a2c5f6bf957535779f702532d1edb609330e5
2013-05-27 19:59:16 -04:00
Jeremy Long
88037af7ef collapsed nested if statements
Former-commit-id: 7e70e8a399042c413e86a772b6345fc6e52df235
2013-05-27 19:58:26 -04:00
Jeremy Long
4bda5b619d added supresswarnings for findbugs false positive
Former-commit-id: 6fd172530338f4fc22777eab7a36465be7d12119
2013-05-27 19:56:19 -04:00
Jeremy Long
a0645ea30f updated javadoc
Former-commit-id: 2af65f75bb0d0b28c33a9945ee27cf83912128ff
2013-05-27 19:55:13 -04:00
Jeremy Long
a3e4adb0af checkstyle fixes
Former-commit-id: 4585dce6788c08f6e63a0bb34572874f7eb02877
2013-05-27 19:54:41 -04:00
Jeremy Long
e18aedfabf reduced size to make tests fasters
Former-commit-id: 9d29ec809fe43f21d89f77e1200d92af1a103bd6
2013-05-27 19:53:14 -04:00
Jeremy Long
44529a78d2 updated javadoc and copyright
Former-commit-id: bd41e8c200b3a5386cb3c07bb2b398700d70ff16
2013-05-27 09:14:56 -04:00
Jeremy Long
bb9025364b Merge branch 'master' of https://github.com/jeremylong/DependencyCheck
Former-commit-id: 401adb5d528324f9af19745068868924c808d02b
2013-05-27 09:07:18 -04:00
Steve Springett
7c78283b46 Adding more control over data directory path
Former-commit-id: 926b9f3d2ed0a19a28a3d23a64bada70b5da22a6
2013-05-27 00:10:08 -07:00
Jeremy Long
f7d6ca5c11 Applied patch from Steve to change the loading of the H2 db
Former-commit-id: 46d4bd628f0d7ecfaffc7881f8bc47bee6c55a5f
2013-05-25 10:56:41 -04:00
Steve Springett
172a341b40 Adding more control over data directory path
Former-commit-id: af198db00ee4d1330ff0d4105f319c739c80bb8b
2013-05-24 23:53:24 -07:00
Steve Springett
09aef67808 Fixed Velocity logging issues in server environment.
Former-commit-id: 663447c35a74d17d2c2af4b62f4591924d6387a5
2013-05-24 16:00:10 -07:00
Steve Springett
a400312d3a Forcing the class loading of the H2 JDBC driver.
Former-commit-id: 97c59fc760efc9e8aa8df081759889f921d4822b
2013-05-22 01:11:02 -07:00
Jeremy Long
1b01b35b03 made outDir final
Former-commit-id: 0a1354925aac773035aa15b04912c30c585ed243
2013-05-20 22:54:35 -04:00
Jeremy Long
2d0acaa8ae various updates recommended by intelliJ
Former-commit-id: b3b3e4accfbf29d8df38eeb39a469881348ee26f
2013-05-20 22:50:21 -04:00
Jeremy Long
a31a73320b various updates recommended by intelliJ
Former-commit-id: 298ccc5ba67197542c729911b5b2222363833530
2013-05-20 22:17:19 -04:00
Jeremy Long
75da352806 version 0.3.1.1-snapshot
Former-commit-id: ce6e012112b05f79439b18612cea8a0131faa7b5
2013-05-20 17:04:03 -04:00
Jeremy Long
61b0c9b1c1 version 0.3.1.1
Former-commit-id: d44728ba689897645f7d18f3ee562e82355b1c9c
2013-05-20 17:01:02 -04:00
Jeremy Long
2185fe0f4c fixed typo that prevented some information from being displayed
Former-commit-id: 59c9c97fb478d52782afad114a0257fc045e3090
2013-05-20 17:00:21 -04:00
Jeremy Long
4ee0977aa1 corrected file path of related dependencies
Former-commit-id: 9a24e7e36474e387ac29021ed17bb38c1df5fccf
2013-05-19 08:29:00 -04:00
Jeremy Long
1ba44771bb bug fix, report generation failed if target directory didn't exist
Former-commit-id: bce38747178da61a08d726d32da575f4026dd26d
2013-05-18 10:23:57 -04:00
Jeremy Long
9966eec1df updated exception logging message
Former-commit-id: 206fd2354786aa53db3024b94a7ac4120c28f900
2013-05-18 09:00:34 -04:00
Jeremy Long
dd444f5f76 PMD fix
Former-commit-id: 18f1bac263b4bda33a58f11e1b35fd7602c462f1
2013-05-18 08:49:08 -04:00
Jeremy Long
a0a6089057 checkstyle fix
Former-commit-id: 67cdcf9f745f7220d02b84ac5e918ef65e324b30
2013-05-18 08:45:58 -04:00
Jeremy Long
4be72fc989 updated global Settings and moved connectionTimeout, proxyUrl, and proxyPort from system properties to normal command line properties
Former-commit-id: 0e7e552768dd43e9d0cb40052589a34d0738df37
2013-05-18 08:45:16 -04:00
Jeremy Long
033cbf696a updated autor email address to my owasp address
Former-commit-id: f6c6715b3fc1461afd543fb8d89b81fea1a8bbed
2013-05-17 23:57:59 -04:00
Jeremy Long
805bc85ea9 added equals and hashcode methods
Former-commit-id: 8c6e8bae17d2fcea4b52d46cda218922749cd9cf
2013-05-17 22:39:28 -04:00
Jeremy Long
0d057d500e v0.3.1.0-snapshot
Former-commit-id: 912467cad5ada2d445d96d2312b83ec76b5b6cff
2013-05-17 22:26:22 -04:00
Jeremy Long
7462500e20 v0.3.1.0
Former-commit-id: d1ea402f6bf49f88c06b17865be30ead766b6fd8
2013-05-17 22:24:24 -04:00
Jeremy Long
3e06a4a7c5 fixed logging bug
Former-commit-id: 8aa994957fcbf55ecd7c05964768bff901d64547
2013-05-13 12:11:22 -04:00
Jeremy Long
e0684ab086 Checkstyle fix
Former-commit-id: 4adf3d0e81f213bc324fc646abe8280385e81429
2013-05-13 11:54:50 -04:00
Jeremy Long
e7be883e2e Improved logging on failed updates
Former-commit-id: edfd14af594e7692e238a69b4fd2090361efddd5
2013-05-13 11:54:25 -04:00
Jeremy Long
8fe80a4507 Improved logging on failed updates
Former-commit-id: 61f2ba2acd867043f92904f1e1f038a25355f155
2013-05-13 11:52:54 -04:00
Jeremy Long
68084c4567 minor update to prepareLogger
Former-commit-id: f982fb266ee46fbe37334ef246c59fc861a2a523
2013-05-13 11:41:55 -04:00
Jeremy Long
9c27545f5f source formating update
Former-commit-id: 02681646cb18f9dbe7a4744af77128fc62865220
2013-05-13 11:09:39 -04:00
Jeremy Long
6da8af7680 updated title
Former-commit-id: cb455d4c1f34008e67f391644620f60367602798
2013-05-12 07:00:58 -04:00
Jeremy Long
1b7ce93623 file header update
Former-commit-id: 0a13aa9960848b5a97dcba0e51a89145e012ebc8
2013-05-10 06:34:45 -04:00
Jeremy Long
5f6480527e minor bug fix
Former-commit-id: c1417cb0cd8d0a65838feaa5b33c85e73e56a3e2
2013-05-10 06:29:08 -04:00
Jeremy Long
4d7b4ce877 checkstyle fix
Former-commit-id: f8a632d0d1f2c7c3b6b7e2553cda738b725f14d7
2013-05-10 06:05:59 -04:00
Jeremy Long
fd61f7d363 updated file header
Former-commit-id: 8d3dcd110d96d93d2f267e77d303e076be71db5c
2013-05-10 06:04:28 -04:00
Jeremy Long
47cc3d7358 checkstyle fixes
Former-commit-id: 213d1375060723f9bded7680cf07ad0f790cd71c
2013-05-10 06:03:00 -04:00
Jeremy Long
d180618634 updated file header comment
Former-commit-id: ef8657a90b398f59cc0693f0a094292609fdd9ef
2013-05-10 05:52:44 -04:00
Jeremy Long
b2b96426d7 minor correction
Former-commit-id: 436e1ffb049bce43cf0dce2f881b9b61744085b4
2013-05-10 05:33:57 -04:00
Jeremy Long
5796d4b969 Fixed bug when analyzing maven repositories - related JARs would not get bundled
Former-commit-id: 8b5386ba522277a0fa8c982e8e5bd55277edc258
2013-05-09 23:03:03 -04:00
Jeremy Long
37957613df bug fixes
Former-commit-id: 4c1161542509a2e2e9b78be119a230e1d8cf4cfc
2013-05-09 22:34:47 -04:00
Jeremy Long
cb82f02eb4 spelling fixes
Former-commit-id: d118f6474726c5cb39c246789830c4626a2bba7a
2013-05-09 19:49:25 -04:00
Jeremy Long
3feccefee8 improved pom analysis
Former-commit-id: 8da3f802dbf2c3d8cd63d07a1a0a5d984074f007
2013-05-03 20:23:42 -04:00
Jeremy Long
910b1dca85 minor update to references where the actual licenses are for the 3rd party components
Former-commit-id: a7f85046bbf88b3c1abc99481f3ff7bbff39f670
2013-04-24 20:03:02 -04:00
Jeremy Long
d71c6f055b changed logging level when logging update exceptions
Former-commit-id: 4608aad994437e1ebffff2dbb2d97dafdf138ab5
2013-04-23 21:35:23 -04:00
Jeremy Long
536f373b91 checkstyle/pmd/findbugs fixes
Former-commit-id: ed64aebbc7c5f25978b8e4b6391a6d7fc08749be
2013-04-23 20:22:51 -04:00
Jeremy Long
6987845228 added commons-lang dependency
Former-commit-id: 2078cb15e694c9c0122a27cc188522a9771980a9
2013-04-23 07:10:31 -04:00
Jeremy Long
2edd2bf763 added FileUtilsTest
Former-commit-id: ca4a9781c134e4f01a64d4bf59489103d34d1f70
2013-04-23 07:09:56 -04:00
Jeremy Long
2605761d76 bug fixes
Former-commit-id: 29c74c9ac0bad912e90b6adb888fbeae10180835
2013-04-23 07:09:18 -04:00
Jeremy Long
391d261ca1 added removal off spurious CPE entries
Former-commit-id: c91ac1b042f691daa3312d9c2fcfd5e49cbea3d2
2013-04-23 07:08:29 -04:00
Jeremy Long
6a7531f1e6 added pre finding and post finding phases
Former-commit-id: 006203fe9c4ca27bed29601af6fd35f276ce5366
2013-04-23 07:07:19 -04:00
Jeremy Long
fb294e8bea added tests for DependencyVersionUtil
Former-commit-id: fcbc3b4f9d619be77d78d011926751d528cb1eb1
2013-04-23 07:06:30 -04:00
Jeremy Long
a1046488c3 added better version analysis for dependency bundling
Former-commit-id: c32d49d50c87a0c3b87da777af524d413cc7c7f3
2013-04-23 07:05:42 -04:00
Jeremy Long
8cef56265c bug fixed regarding whether or not to include packages as evidence
Former-commit-id: 24c6a76d8088cf951db9765a9c618057e2fe5ec9
2013-04-23 07:03:57 -04:00
Jeremy Long
ec30851247 added axis and axis2 for testing
Former-commit-id: d0f114a142bb8d115caacaeb25d09497cd3420ba
2013-04-23 07:02:48 -04:00
Jeremy Long
7420c12b89 fixed bug in removing sources and javadoc JARs from analysis
Former-commit-id: 1386148a368a193ce70f1fae8784215d62706ee9
2013-04-21 05:18:50 -04:00
Jeremy Long
895c770c24 added code to filter out sources.jar and javadoc.jar if no class files are contained
Former-commit-id: ff77b49af31258a12433f8a78d13a6cbf36d11c1
2013-04-20 15:43:12 -04:00
Jeremy Long
606070f449 started snapshot
Former-commit-id: f4551455036cf1050f0fcf7e3ca74f2796989403
2013-04-20 15:42:21 -04:00
Jeremy Long
ec41493d91 fixed line break issues
Former-commit-id: 2018eb293b9a79cc892e37994ba1efac7b179600
2013-04-20 15:03:32 -04:00
Jeremy Long
d551093199 fixed line break issues
Former-commit-id: 0fc9f2954c5368e9300039e70ef63dd0f0bbfe1e
2013-04-20 15:02:38 -04:00
Jeremy Long
f7f8b2da62 fixed line breaks in the usage
Former-commit-id: 556823a8af6e13cc7a18c248d3e51946b46d3d28
2013-04-20 15:00:58 -04:00
Jeremy Long
1378b630a6 release 0.3.0.0
Former-commit-id: 65d4221afe3637a4d5cca28b7f9e158e936bd919
2013-04-20 14:55:28 -04:00
Jeremy Long
9726d86ab0 minor bug fix
Former-commit-id: ecf116ac73e7d6a0abd4cfe2952551deaddaf148
2013-04-20 14:48:58 -04:00
Jeremy Long
c9364e7b94 added a schema for the dependency-check XML report
Former-commit-id: a1ddac261454dd46e4d875c0de451db943db3674
2013-04-20 14:41:08 -04:00
Jeremy Long
1e6780a2e3 minor updates
Former-commit-id: 688d326e5d15ecc45ac8c7f5a7c53dfaf2615fac
2013-04-20 13:36:44 -04:00
Jeremy Long
72855d4d7a removed un-necassary functionality from all analyzers and the base engine
Former-commit-id: e6b97601ff24ced2a2016d03b35869d083b947db
2013-04-20 13:12:16 -04:00
Jeremy Long
c0359da930 added related dependencies
Former-commit-id: ae645b937c26ab850194cfe70b1b64f40f7eb62c
2013-04-20 13:11:31 -04:00
Jeremy Long
b4f39b0bfc Correctly implemented this analyzer (hopefully)
Former-commit-id: 0fb69a26a8c1da952894ec410f8ef0e4e40d1914
2013-04-20 13:11:01 -04:00
Jeremy Long
d7af145f3b checkstyle/PMD updates
Former-commit-id: d970e6d49ba78a1e563b4ab5598c242d4dbca80e
2013-04-20 11:49:59 -04:00
Jeremy Long
b078d8477e added test case for VulnerableSoftware
Former-commit-id: 935832719235e07a4c7f1fe0c989cae3864b5ce9
2013-04-20 07:18:27 -04:00
Jeremy Long
02b64e1a4b correct and issue with the comparable interface (invalid sort order)
Former-commit-id: 2d819f088d098560c678912e9dfffb2f8cca8f06
2013-04-20 07:18:05 -04:00
Jeremy Long
f444825e42 minor bug fix
Former-commit-id: 7feaa7f3595ba0d198aff445fdb377b86a76e4fd
2013-04-20 06:28:40 -04:00
Jeremy Long
9fa62ef388 added vulnerable software to the report
Former-commit-id: 97658f4c2776c47b41d74db3be180c871dbcf243
2013-04-20 06:16:43 -04:00
Jeremy Long
e73ad07836 added a link to the NVD
Former-commit-id: 6686314a88f3a2f0aa93de2c753a0962cb902a07
2013-04-20 06:03:37 -04:00
Jeremy Long
a680e79686 added license information
Former-commit-id: d5eccd06a7bd8829487616bf000250bf00e56bec
2013-04-20 06:00:36 -04:00
Jeremy Long
728c05262c updated license information
Former-commit-id: ab4882e7a44896c670295dd56e12b25bc568c7cc
2013-04-20 06:00:02 -04:00
Jeremy Long
23e08c1ca1 updated output format to accept 'ALL' to generated both HTML and XML reports
Former-commit-id: 002943f373d5541d0ede54d00beb9c155eb454c0
2013-04-19 18:52:02 -04:00
Jeremy Long
198d73acfa Updates to abstract analyzer and subclasses - removed duplicate code
Former-commit-id: e0acf33d81dcf5e2d6383345927287dbe918d03c
2013-04-19 18:46:01 -04:00
Jeremy Long
71e210b66c Updated to accomadate removing dependencies (used by the DependencyBundlingAnalyzer)
Former-commit-id: c5f530bce2d82e30795d327c8da03b66bce7785b
2013-04-19 18:45:40 -04:00
Jeremy Long
2f31c53fd4 Updating Dependency Bundler to group related dependencies
Former-commit-id: f9d971b134dc75847b45c1bb3b0bc2fce37e5c1a
2013-04-19 18:44:25 -04:00
Jeremy Long
9f661535e0 Updating Dependency Bundler to group related dependencies
Former-commit-id: 4d2d05f0ba2fc3890de7fba8f6ff0a7b6a858f4b
2013-04-19 18:43:31 -04:00
Jeremy Long
5b0d4bf8e6 Adding Dependency Bundling to collapse multiple related dependencies into a single reportable instance
Former-commit-id: 17a6af2954e8b6da6ecd0b97895372624945d138
2013-04-18 17:58:47 -04:00
Jeremy Long
a639264149 checkstyle fix
Former-commit-id: e99149f776739afa17c930f0e9666c53f92a0296
2013-04-18 07:02:05 -04:00
Jeremy Long
91ab257eb6 PMD fixes
Former-commit-id: f34bcaff389cbfbcaa2e6b2244be3fbe16d01b52
2013-04-18 07:00:33 -04:00
Jeremy Long
e24a62d621 checkstyle fixes
Former-commit-id: 2bd6f330836c7dab07e5968ef845b4d48ede4abe
2013-04-18 06:54:36 -04:00
Jeremy Long
ec9f4b2b61 minor update to the description
Former-commit-id: c0af5d3511ac7ccb11d36193793baa9f2b2a2cb3
2013-04-18 06:54:24 -04:00
Jeremy Long
b66c7da4b3 bug fixes
Former-commit-id: 488d8b3e2b3db0bab3bc84091bac1b758336a3e6
2013-04-18 06:46:03 -04:00
Jeremy Long
6544cc98d5 minor update
Former-commit-id: 69b26d4f5a82c312242fa088306cf3c3628c4796
2013-04-18 06:45:41 -04:00
Jeremy Long
2dbef9e1fa added sorting for References via Comparable interface
Former-commit-id: bd93d1f376ab5869b3a9718a6017f2c311c83bb3
2013-04-18 06:29:08 -04:00
Jeremy Long
a924e81adb minor bug fix with sorted set
Former-commit-id: a53c5c220bb460b378583aa73c01ec2dfa81a196
2013-04-18 06:25:12 -04:00
Jeremy Long
1ded1b603e added vulnerable software
Former-commit-id: dd4b3a9e06bb33e4f895565bec4588a8b38f6f5d
2013-04-18 06:24:40 -04:00
Jeremy Long
a3012a29c2 updated to use SortedSet instead of Set in a couple of places
Former-commit-id: ae1d42bbf2ccb5994cb793872ff228c8ca9fbd86
2013-04-18 05:50:17 -04:00
Jeremy Long
8fcd800aff implemented the Comparable interface
Former-commit-id: 23c9ecf90a0392e2398376e63c78134de6d2de9e
2013-04-18 05:43:13 -04:00
Jeremy Long
4d414ea082 implemented the Comparable interface
Former-commit-id: 2be5ef6e2d0d9570186273fb6b8fc42e372ff251
2013-04-18 05:42:25 -04:00
Jeremy Long
d5b2380bc2 checkstyle patches
Former-commit-id: d06ea48208fa0b3d35b9a8d21b3b7b8e8172aaa6
2013-04-11 23:18:28 -04:00
Jeremy Long
d2853fafa9 updated to release a snapshot
Former-commit-id: 2fb68d59dac83f3f27c601b66d33448bd101faea
2013-04-11 23:01:18 -04:00
Jeremy Long
0e5a207c44 added functionality to remove some false positives
Former-commit-id: 4de4e94c96a3e65454f7626bee604b9286bd9a9b
2013-04-11 22:59:46 -04:00
Jeremy Long
d7744537ae Implemented the Comparable interface
Former-commit-id: 07d5fd34d76c296cfc2c1f049b285bbd9b05189a
2013-04-11 06:05:58 -04:00
Jeremy Long
9e79e9efb6 added counts for imported quantities
Former-commit-id: 39e4c4029ac3cf6ea76e2ac35370692e1fb1caea
2013-04-09 06:56:09 -04:00
Jeremy Long
a04338d184 added counts for imported quantities
Former-commit-id: 17673e8771d4314fc48bcf63f95a8992e6cbe17e
2013-04-09 06:55:43 -04:00
Jeremy Long
772b0ca2b0 checkstyle updates
Former-commit-id: e18a6c9a01cf3fdbbdd87446bb25b77e3e455c0f
2013-03-30 22:11:04 -04:00
Jeremy Long
13eb2b75d5 checkstyle corrections
Former-commit-id: eb05a880382ec71f00df8bb7f9b25aa98ceeb182
2013-03-28 22:44:11 -04:00
Jeremy Long
c800440e44 removed old file
Former-commit-id: 5490212a8587339f653f6b21ac1856b28835c40c
2013-03-28 21:51:07 -04:00
Jeremy Long
05f822380c updated dependencies and plugins
Former-commit-id: 9b528552fbc01c195250b1d2e2609296f31a8187
2013-03-28 21:50:28 -04:00
Jeremy Long
7896c81e98 added ignores for Eclipse project files
Former-commit-id: cc744fa73f6fc36650bd9ececf198f1c4cb353c3
2013-03-27 07:22:47 -04:00
Jeremy Long
ea50569b2a version 0.2.6.1
Former-commit-id: d249ee7a38c7443c030b1db4042cf92a34f7a8f8
2013-03-16 16:56:34 -04:00
Jeremy Long
7bce07aa0e checkstyle fixes
Former-commit-id: 31ff9324a8acd201002e4843deb5a2cfb08f2d88
2013-03-16 16:53:41 -04:00
Jeremy Long
5ef02290dd added package name scanning back in if no other data was found
Former-commit-id: e83c18cd1cd5f08ffb85cd91f0df2a8fe6382a81
2013-03-10 08:18:25 -04:00
Jeremy Long
34d5ba7d35 Added 'deep scan' argument/property to indicate more evidence should be collected even if it increases false positives
Former-commit-id: cc2c489f8187eb459301a132ff63a2ebe4289e01
2013-03-08 17:33:01 -05:00
Jeremy Long
55004e7832 fixed bug
Former-commit-id: 94c67d4289b5766c3d184cddfc8231efec645764
2013-03-08 17:32:16 -05:00
Jeremy Long
4945446171 bug fix regarding duplicate terms being added to the lucene query
Former-commit-id: d12f68cfe986918f1be438fdb8d4281bcf1dd441
2013-03-03 09:50:12 -05:00
Jeremy Long
0e2d2408ca bug fixes
Former-commit-id: 2bbdb3407b26b6d10a65abc81643d4b8ede3d74c
2013-03-03 09:47:54 -05:00
Jeremy Long
8b8707c36e change in namespace as this is now an OWASP project
Former-commit-id: 162fbfc156a284f1597d230f65eaf29dc0f3e0fb
2013-03-03 08:57:38 -05:00
Jeremy Long
3bd9caf113 completed version 1 of XML report
Former-commit-id: 5768da52f398b124f79e25f40ba2bcd5a0931666
2013-02-22 21:47:41 -05:00
Jeremy Long
f713a83abf added XML Report Template
Former-commit-id: c9ca7e19d955d0d112749bb550b3880f80e6b9b7
2013-02-21 02:33:11 -05:00
Jeremy Long
b0e0f8c8bf converted README.txt to MarkDown
Former-commit-id: 34e7f81a6946c77b5bb4d2076b9a179a6d76b0df
2013-02-20 07:27:06 -05:00
Jeremy Long
c8623fd3a2 updated
Former-commit-id: 17bdf87061690071911d7e45d74d136dd46ba9cd
2013-02-20 07:25:28 -05:00
Jeremy Long
c6aad2c2d4 updated
Former-commit-id: b78334f9a2cab81bd1a899a9552d0c231fd78e0b
2013-02-20 07:23:28 -05:00
Jeremy Long
7ede87753b updated
Former-commit-id: b1e2063d8a9257c5d951f38457daa2bfb6a8af55
2013-02-20 07:22:30 -05:00
Jeremy Long
59bed5a0fa converted README.txt to MarkDown
Former-commit-id: 702563b2fd101576431e646ccab39388ef038a4d
2013-02-20 07:19:56 -05:00
Jeremy Long
e59377d9a3 spelling fixes
Former-commit-id: 8d53d845ec1212370aec6f58bec97cd94ef9b20d
2013-02-19 21:40:42 -05:00
Jeremy Long
6274cfce4b cleanup and spelling fixes
Former-commit-id: 9c44ae88606f12728bc424d566ef11194c5c399b
2013-02-19 21:35:24 -05:00
Jeremy Long
9d624702f6 add ignore for IntelliJ files
Former-commit-id: 06c627dce1fcd6cdb8c48a707555590248e7a798
2013-02-19 20:25:00 -05:00
Jeremy Long
f9d8ff3f74 spelling errors corrected
Former-commit-id: 1173c3632cdbcdafc111062e5c343b3a49bb7398
2013-02-17 07:46:10 -05:00
Jeremy Long
6c837f0639 Patches from Steve Springett for XML report format
Former-commit-id: 711371d19c3b79cc6411adef59d992cc16d5bf57
2013-02-17 07:27:01 -05:00
Jeremy Long
03c9ce3589 updated failing test
Former-commit-id: 12be2627cab271c3a15e484681965fcb0f4480e0
2013-02-13 21:38:03 -05:00
Jeremy Long
1ac7cdacb0 updated notice
Former-commit-id: 8f74cc2b80dbbebfa57cd3e8fff8dc33e0cc046c
2013-02-03 08:20:47 -05:00
Jeremy Long
ba93be1814 [maven-release-plugin] prepare release dependency-check-0.2.6.0
Former-commit-id: 3e72fb031177b1aac466a3c30be88a839667aef9
2013-02-02 17:12:48 -05:00
Jeremy Long
1404bbab9f updated
Former-commit-id: 080d367023ff85e259e725a8d1f754040a2e92aa
2013-02-02 16:59:55 -05:00
Jeremy Long
a5f8ed6378 updated version
Former-commit-id: 847e8e79ebf18fbacdd77ea6593433ec63e6c85f
2013-02-02 16:50:29 -05:00
Jeremy Long
1b59212003 updated usage
Former-commit-id: ab5472c4c3d89916c20741e84c29203e24a37f4c
2013-02-02 16:49:11 -05:00
Jeremy Long
4142901dc6 bug fixes and additions
Former-commit-id: 6ac1a641dce3b4826aadf886ec45364fd9b6ea5a
2013-02-02 16:44:46 -05:00
Jeremy Long
4ba9431e6f bug fixes and additions
Former-commit-id: e0d87c47ba547a14cdb67721e807776ec426b1ec
2013-02-02 16:44:06 -05:00
Jeremy Long
5da83517a8 added CWE Names
Former-commit-id: 60803fba6071a09ae03a18410c103a587f5fd61d
2013-01-14 22:14:45 -05:00
Jeremy Long
a7e95c2a4d minor update
Former-commit-id: 79b44ce9a813e9b20c0915c5a5aac368d0643219
2013-01-13 17:05:19 -05:00
Jeremy Long
ae7fbbb04f added CWE
Former-commit-id: ce1b558996087cf4b95ca485de236f9bed477d2b
2013-01-13 17:01:46 -05:00
Jeremy Long
cc18ef9aa8 fixed analysis phase
Former-commit-id: 45112eb83551a22f380c676e9fd2bc9e9d73afa8
2013-01-13 16:53:28 -05:00
Jeremy Long
4202e8a7ba Added CVSS Scores
Former-commit-id: 2c670c2e08def9095a8526b6a9cf64664cc1c89e
2013-01-13 16:48:27 -05:00
Jeremy Long
882ff8a325 version 0.2.5.1
Former-commit-id: a9d02a59a7f91fb02a4a920e74d6fb25aa0cd4b8
2013-01-09 22:51:06 -05:00
Jeremy Long
1b29957731 additional spring jar files for testing
Former-commit-id: 4de847b3212e2c54a70df4bb3533a2849e58b644
2013-01-09 22:50:11 -05:00
Jeremy Long
5702543bc5 fixed analyzer method signature, added SpringCleaningAnalyzer, and removed ArchiveAnalyzer interface
Former-commit-id: 9060cd5d69d499b808e16d1171ac3cd3b077548d
2013-01-09 22:49:41 -05:00
Jeremy Long
c810f0647a added 2013 NVD CVE file
Former-commit-id: 77350c8956596ba2da1401bb2c82d2a412563e59
2013-01-08 15:40:58 -05:00
Jeremy Long
d366b67bee added mailing list
Former-commit-id: 6ddd9f7d38893237b33052921bb5008af627fb4a
2013-01-06 12:38:56 -05:00
Jeremy Long
85286b3cf9 version 0.2.5.0
Former-commit-id: 68aa4287866052e89fd4bb4164341ae7914a57e0
2013-01-06 12:13:08 -05:00
Jeremy Long
ae4b5464c7 bug fixes/replaced CVE datastore (lucene->H2)
Former-commit-id: 58386fc80bd3a9dca8bc486c56037efa91b1b81e
2013-01-06 12:04:27 -05:00
Jeremy Long
dec2536e3e updated file header
Former-commit-id: 49307eadff2fde3fe6dd211606f414f3c1d872d2
2012-12-30 17:37:21 -05:00
Jeremy Long
30ea512dcc added equals and hashCode
Former-commit-id: 9a7aa87fdaff6395dd6c65d406aa054d925c0d6e
2012-12-30 16:50:19 -05:00
Jeremy Long
f6cdf34b25 format fix
Former-commit-id: dd0aeaa7dd3efb39e02e81892512ab1c45ba8149
2012-12-30 16:49:51 -05:00
Jeremy Long
99818d038b fixed commons-io reference
Former-commit-id: 6504b636a8b233e776d1577590b6bc36103f9d4a
2012-12-30 16:48:05 -05:00
Jeremy Long
c35ce8e195 added db4o as project-local repo
Former-commit-id: b5f672db3db5bf09930b414b3ebcc5ecc0707c7a
2012-12-30 15:58:11 -05:00
Jeremy Long
2ae856b0dd added vulnerable software
Former-commit-id: 77aced7512a8e1b7f7cba8653c7724472064003c
2012-12-30 15:57:34 -05:00
Jeremy Long
e592598990 minor update
Former-commit-id: 315b35c7098d506c3636544eb5d456a35e6c7ef1
2012-12-30 15:56:29 -05:00
Jeremy Long
07af34fbd0 minor update
Former-commit-id: 71400fe6b401169bdcec13aecededea0e7ece7a0
2012-12-30 15:56:21 -05:00
Jeremy Long
0b3e313260 adding vulnerable software
Former-commit-id: 8ce12bbab5ad294a3565f3f13e72611e3345168d
2012-12-30 09:46:21 -05:00
Jeremy Long
21947de4e0 formating update
Former-commit-id: 930cd5460070e28da8913860f727d83b318cc5b4
2012-12-30 09:31:49 -05:00
Jeremy Long
3cdd0baabb minor bug fixes
Former-commit-id: a605c8a5f8dbf18186cdfc6e4460956702100339
2012-12-30 09:30:12 -05:00
Jeremy Long
f851e62330 removed deprecated functionality
Former-commit-id: 56f9dba3e11d33a9e735465938d7c9b8997193a1
2012-12-30 09:09:23 -05:00
Jeremy Long
bea19ad8ce Update NVD CVE timestamp checking
Former-commit-id: a0b977d3b3066ff369967c4b6abad2a8d2ca0eeb
2012-12-30 08:53:14 -05:00
Jeremy Long
f5b48f5390 added Vulnerability class
Former-commit-id: 3ea88eb3c608f4eac7058c415b9e3d4eae045bae
2012-12-29 10:16:34 -05:00
Jeremy Long
cc712b86d5 updated to v0.2.4.0
Former-commit-id: 1e8ec2b1b85d5aa8ecb975c5b0cbecbf50f33141
2012-12-29 08:31:09 -05:00
Jeremy Long
0cf6cfc2b0 updates and bug fixes for CPE data
Former-commit-id: 83635e150d5030b81a6b56d55115bb4ca19089f9
2012-12-29 08:28:23 -05:00
Jeremy Long
6f19360da5 updated test data
Former-commit-id: e9c938ba4ab6d766eefde8670f2516a216341285
2012-12-22 06:44:32 -05:00
Jeremy Long
f216b4716f version 0.2.3.2
Former-commit-id: 9e85ddb155da34e54b0a2d57c79a77c2066c0326
2012-12-22 06:16:46 -05:00
Jeremy Long
3bf638f7c6 added find bugs and fixed some bugs
Former-commit-id: 4448947c0e718bdef87d241008043e76c001feea
2012-12-22 06:15:39 -05:00
Jeremy Long
5ec9a24c99 continued removal of cpe.xml - it is incomplete for our purpose
Former-commit-id: 1e1a61f92edfd8ba27530fd53fa0d21bf7862ea4
2012-12-22 04:30:26 -05:00
Jeremy Long
23caa1d0b5 bug fixes
Former-commit-id: 266897e8a32735a77f1b3e7aa1e0842e0fc69b65
2012-12-20 21:39:02 -05:00
Jeremy Long
36ecf7c7fd upgrade to lucene 4.0
Former-commit-id: 97ae6c47d6498fea873202dae257a2dfab0b683f
2012-12-16 21:26:30 -05:00
Jeremy Long
0027e75a45 bug fixes
Former-commit-id: a415f5e84dbe7c887a20a8acd18403655c82f9be
2012-12-02 22:22:25 -05:00
Jeremy Long
4cd759bfa6 fixed reported bug
Former-commit-id: a60403eea234dd78663314c9405c6629d60fa5ae
2012-11-20 20:11:08 -05:00
Jeremy Long
0f2752220a Cleaned up reporting
Former-commit-id: 87f2ddb1f8e9d764cf641d86bed23cbec4b509d7
2012-11-17 07:57:55 -05:00
Jeremy Long
ce1ed46851 v0.2.3
Former-commit-id: cb65976e03e63f296f2eefc5d8ef2c7462abc7ee
2012-11-12 14:50:04 -05:00
Jeremy Long
aa795ee7eb updated to use directory of jar instead of working directory to store data
Former-commit-id: 93b0784cd0f38445c0550737b2377618f4ebee1e
2012-11-12 14:48:39 -05:00
Jeremy Long
5c83671739 general updates
Former-commit-id: 9ad33356df25672ff4e9c91e8c1d456450069402
2012-11-12 13:36:44 -05:00
Jeremy Long
3fb9390040 location of data files is no longer the working directory, rather the location of the JAR file itself
Former-commit-id: b3f83447f9422618d6db60d49488830381787110
2012-11-12 12:19:39 -05:00
Jeremy Long
965687186c updated to v0.2.2
Former-commit-id: 68e8e536a18fb8e42943ca90e0fa10427815089e
2012-11-12 10:54:38 -05:00
Jeremy Long
83742437d6 Added support to parse pom.xml contained within a JAR
Former-commit-id: 2074209494ac958b83d49b3d9918b4badae0d17c
2012-11-12 10:53:27 -05:00
Jeremy Long
a37e53769c release v0.2.1
Former-commit-id: 9dc7ec7489e3b6f76141e342f985cb558a063c32
2012-10-30 21:27:52 -04:00
Jeremy Long
084a389a02 changed logging levels
Former-commit-id: 710e6386b39675c1672a5c2d81c62862349fac78
2012-10-30 21:21:12 -04:00
Jeremy Long
7971c42814 performance enhancement for nvd cve import.
Former-commit-id: 5a40d5798c804c4632e6ed2dd04d6d7c9e0f51b8
2012-10-30 21:13:47 -04:00
Jeremy Long
c694461abc updated data
Former-commit-id: eac04a6cce2a24bcc53db0802cd4cd2c092264e8
2012-10-30 00:39:06 -04:00
371 changed files with 73178 additions and 190885 deletions

13
.gitignore vendored
View File

@@ -7,8 +7,19 @@
# Eclipse project files
.classpath
.project
.settings
maven-eclipse.xml
.externalToolBuilders
# Netbeans configuration
nb-configuration.xml
/target/
#maven-shade-plugin generated pom
dependency-reduced-pom.xml
dependency-reduced-pom.xml
#ruby Gemfile, etc. This is a java project, Gemfile is here to check site problem with Jekyll
Gemfile
Gemfile.lock
_site/**
#unknown as to why these are showing up... but need to be ignored.
.LCKpom.xml~
#coverity
/cov-int/

View File

@@ -1,674 +1,202 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -14,7 +14,7 @@ For instructions on the use of the Jenkins plugin please see the [Jenkins depend
### Command Line
More detailed instructions can be found on the [dependency-check github pages](http://jeremylong.github.io/DependencyCheck/dependency-check-cli/installation.html).
The latest CLI can be downloaded from bintray's [dependency-check page](https://bintray.com/jeremy-long/owasp/dependency-check).
The latest CLI can be downloaded from bintray's [dependency-check page](https://bintray.com/jeremy-long/owasp/dependency-check).
On *nix
```
@@ -29,7 +29,7 @@ On Windows
### Maven Plugin
More detailed instructions can be found on the [dependency-check-maven github pages](http://jeremylong.github.io/DependencyCheck/dependency-check-maven/installation.html).
More detailed instructions can be found on the [dependency-check-maven github pages](http://jeremylong.github.io/DependencyCheck/dependency-check-maven/usage.html).
The plugin can be configured using the following:
```xml
@@ -40,7 +40,6 @@ The plugin can be configured using the following:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>1.0.2</version>
<executions>
<execution>
<goals>
@@ -59,7 +58,7 @@ The plugin can be configured using the following:
### Ant Task
For instructions on the use of the Ant Task, please see the [dependency-check-ant github page](http://jeremylong.github.io/DependencyCheck/dependency-check-maven/installation.html).
For instructions on the use of the Ant Task, please see the [dependency-check-ant github page](http://jeremylong.github.io/DependencyCheck/dependency-check-ant/installation.html).
Development Usage
-------------
@@ -82,7 +81,7 @@ On Windows
> dependency-check-cli/target/release/bin/dependency-check.bat --app Testing --out . --scan ./src/test/resources
```
Then load the resulting 'DependencyCheck-Report.html' into your favourite browser.
Then load the resulting 'DependencyCheck-Report.html' into your favorite browser.
Mailing List
------------
@@ -96,9 +95,9 @@ Archive: [google group](https://groups.google.com/forum/#!forum/dependency-check
Copyright & License
-
Dependency-Check is Copyright (c) 2012-2013 Jeremy Long. All Rights Reserved.
Dependency-Check is Copyright (c) 2012-2014 Jeremy Long. All Rights Reserved.
Permission to modify and redistribute is granted under the terms of the GPLv3 license. See the [LICENSE.txt] [GPLv3] file for the full license.
Permission to modify and redistribute is granted under the terms of the Apache 2.0 license. See the [LICENSE.txt](https://github.com/jeremylong/DependencyCheck/dependency-check-cli/blob/master/LICENSE.txt) file for the full license.
Dependency-Check makes use of several other open source libraries. Please see the [NOTICE.txt] [notices] file for more information.
@@ -106,5 +105,4 @@ Dependency-Check makes use of several other open source libraries. Please see th
[wiki]: https://github.com/jeremylong/DependencyCheck/wiki
[subscribe]: mailto:dependency-check+subscribe@googlegroups.com
[post]: mailto:dependency-check@googlegroups.com
[GPLv3]: https://github.com/jeremylong/DependencyCheck/blob/master/LICENSE.txt
[notices]: https://github.com/jeremylong/DependencyCheck/blob/master/NOTICES.txt
[notices]: https://github.com/jeremylong/DependencyCheck/blob/master/NOTICES.txt

View File

@@ -1,674 +1,202 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -18,8 +18,8 @@ Post: [dependency-check@googlegroups.com](mailto:dependency-check@googlegroups.c
Copyright & License
-------------------
Dependency-Check is Copyright (c) 2012-2013 Jeremy Long. All Rights Reserved.
Dependency-Check is Copyright (c) 2012-2014 Jeremy Long. All Rights Reserved.
Permission to modify and redistribute is granted under the terms of the GPLv3 license. See the [LICENSE.txt](https://github.com/jeremylong/DependencyCheck/dependency-check-ant/blob/master/LICENSE.txt) file for the full license.
Permission to modify and redistribute is granted under the terms of the Apache 2.0 license. See the [LICENSE.txt](https://github.com/jeremylong/DependencyCheck/dependency-check-cli/blob/master/LICENSE.txt) file for the full license.
Dependency-Check-Ant makes use of other open source libraries. Please see the [NOTICE.txt](https://github.com/jeremylong/DependencyCheck/dependency-check-ant/blob/master/NOTICES.txt) file for more information.

View File

@@ -1,223 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<!--
If you set the basedir property below, then all reported file
names will be relative to the specified directory. See
http://checkstyle.sourceforge.net/5.x/config.html#Checker
<property name="basedir" value="${basedir}"/>
-->
<property name="severity" value="error"/>
<module name="SuppressionFilter">
<property name="file" value="${checkstyle.suppressions.file}"/>
</module>
<module name="JavadocPackage">
<property name="allowLegacy" value="false"/>
</module>
<module name="Translation">
<property name="severity" value="warning"/>
</module>
<module name="FileTabCharacter">
<property name="eachLine" value="false"/>
</module>
<module name="FileLength">
<property name="fileExtensions" value="java"/>
</module>
<module name="NewlineAtEndOfFile">
<property name="fileExtensions" value="java"/>
<property name="lineSeparator" value="lf"/>
</module>
<module name="RegexpHeader">
<property name="headerFile" value="${checkstyle.header.file}"/>
<property name="fileExtensions" value="java"/>
<property name="id" value="header"/>
</module>
<module name="RegexpSingleline">
<property name="format" value="\s+$"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
</module>
<module name="TreeWalker">
<property name="tabWidth" value="4"/>
<module name="AvoidStarImport"/>
<module name="ConstantName"/>
<module name="EmptyBlock"/>
<module name="EmptyForIteratorPad"/>
<module name="EqualsHashCode"/>
<module name="OneStatementPerLine"/>
<!-- module name="IllegalCatch"/ -->
<!--module name="ImportControl">
<property name="file" value="${checkstyle.importcontrol.file}"/>
</module-->
<module name="IllegalImport"/>
<module name="IllegalInstantiation"/>
<module name="IllegalThrows"/>
<module name="InnerAssignment"/>
<module name="JavadocType">
<property name="authorFormat" value="\S"/>
</module>
<module name="JavadocMethod">
<property name="allowUndeclaredRTE" value="true"/>
<property name="allowThrowsTagsForSubclasses" value="true"/>
<property name="allowMissingPropertyJavadoc" value="true"/>
</module>
<module name="JavadocVariable"/>
<module name="JavadocStyle">
<property name="scope" value="public"/>
</module>
<module name="LeftCurly">
<property name="option" value="eol"/>
<property name="tokens" value="CLASS_DEF"/>
<property name="tokens" value="CTOR_DEF"/>
<property name="tokens" value="INTERFACE_DEF"/>
<property name="tokens" value="METHOD_DEF"/>
<property name="tokens" value="LITERAL_CATCH"/>
<property name="tokens" value="LITERAL_DO"/>
<property name="tokens" value="LITERAL_ELSE"/>
<property name="tokens" value="LITERAL_FINALLY"/>
<property name="tokens" value="LITERAL_FOR"/>
<property name="tokens" value="LITERAL_IF"/>
<property name="tokens" value="LITERAL_SWITCH"/>
<property name="tokens" value="LITERAL_SYNCHRONIZED"/>
<property name="tokens" value="LITERAL_TRY"/>
<property name="tokens" value="LITERAL_WHILE"/>
</module>
<module name="OuterTypeNumber"/>
<module name="LineLength">
<property name="ignorePattern" value="^ *\* *[^ ]+$"/>
<property name="max" value="150"/>
</module>
<module name="MethodCount">
<property name="maxTotal" value="40"/>
</module>
<module name="LocalFinalVariableName"/>
<module name="LocalVariableName"/>
<module name="MemberName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="MethodLength">
<property name="max" value="160"/>
<property name="countEmpty" value="false"/>
</module>
<module name="MethodName"/>
<module name="MethodParamPad"/>
<module name="ModifierOrder"/>
<module name="NeedBraces"/>
<module name="NoWhitespaceAfter">
<property name="tokens" value="ARRAY_INIT"/>
<property name="tokens" value="BNOT"/>
<property name="tokens" value="DEC"/>
<property name="tokens" value="DOT"/>
<property name="tokens" value="INC"/>
<property name="tokens" value="LNOT"/>
<property name="tokens" value="UNARY_MINUS"/>
<property name="tokens" value="UNARY_PLUS"/>
</module>
<module name="NoWhitespaceBefore"/>
<module name="NoWhitespaceBefore">
<property name="tokens" value="DOT"/>
<property name="allowLineBreaks" value="true"/>
</module>
<module name="OperatorWrap"/>
<module name="OperatorWrap">
<property name="tokens" value="ASSIGN"/>
<property name="tokens" value="DIV_ASSIGN"/>
<property name="tokens" value="PLUS_ASSIGN"/>
<property name="tokens" value="MINUS_ASSIGN"/>
<property name="tokens" value="STAR_ASSIGN"/>
<property name="tokens" value="MOD_ASSIGN"/>
<property name="tokens" value="SR_ASSIGN"/>
<property name="tokens" value="BSR_ASSIGN"/>
<property name="tokens" value="SL_ASSIGN"/>
<property name="tokens" value="BXOR_ASSIGN"/>
<property name="tokens" value="BOR_ASSIGN"/>
<property name="tokens" value="BAND_ASSIGN"/>
<property name="option" value="eol"/>
</module>
<module name="PackageName"/>
<module name="ParameterName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="ParameterNumber">
<property name="id" value="paramNum"/>
</module>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>
<module name="RedundantImport"/>
<module name="RedundantModifier"/>
<module name="RightCurly">
<property name="option" value="same"/>
</module>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<module name="StaticVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="TypeName"/>
<module name="UnusedImports"/>
<module name="UpperEll"/>
<module name="VisibilityModifier"/>
<module name="WhitespaceAfter"/>
<module name="WhitespaceAround"/>
<module name="GenericWhitespace"/>
<module name="FinalClass"/>
<module name="MissingSwitchDefault"/>
<!--module name="MagicNumber"/-->
<!--module name="Indentation">
<property name="basicOffset" value="4"/>
<property name="braceAdjustment" value="0"/>
<property name="caseIndent" value="0"/>
</module-->
<module name="ArrayTrailingComma"/>
<module name="FinalLocalVariable"/>
<module name="EqualsAvoidNull"/>
<module name="ParameterAssignment"/>
<!-- Generates quite a few errors -->
<module name="CyclomaticComplexity">
<property name="severity" value="ignore"/>
</module>
<module name="NestedForDepth">
<property name="max" value="2"/>
</module>
<module name="NestedIfDepth">
<property name="max" value="4"/>
</module>
<module name="NestedTryDepth">
<property name="max" value="2"/>
</module>
<!--module name="ExplicitInitialization"/-->
<module name="AnnotationUseStyle"/>
<module name="MissingDeprecated"/>
<module name="MissingOverride">
<property name="javaFiveCompatibility" value="true"/>
</module>
<module name="PackageAnnotation"/>
<module name="SuppressWarnings"/>
<module name="OuterTypeFilename"/>
<module name="HideUtilityClassConstructor"/>
</module>
</module>

View File

@@ -1,19 +0,0 @@
^/\*\s*$
^ \* This file is part of dependency-check-ant\.\s*$
^ \*\s*$
^ \* Dependency-check-ant is free software\: you can redistribute it and/or modify it\s*$
^ \* under the terms of the GNU General Public License as published by the Free\s*$
^ \* Software Foundation, either version 3 of the License, or \(at your option\) any\s*$
^ \* later version\.
^ \*\s*$
^ \* Dependency-check-ant is distributed in the hope that it will be useful, but\s*$
^ \* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\s*$
^ \* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more\s*$
^ \* details\.\s*$
^ \*\s*$
^ \* You should have received a copy of the GNU General Public License along with\s*$
^ \* dependency-check-ant\. If not, see http://www.gnu.org/licenses/\.\s*$
^ \*\s*$
^ \* Copyright \(c\) 2013 (Jeremy Long|Steve Springett)\. All Rights Reserved\.\s*$
^ \*/\s*$
^package

View File

@@ -1,9 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Puppy Crawl//DTD Suppressions 1.0//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_0.dtd">
<suppressions>
<suppress checks=".*" files=".*[\\/]package-info\.java" />
</suppressions>

View File

@@ -1,35 +1,33 @@
<!--
This file is part of dependency-check-ant.
Dependency-check-ant is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Dependency-check is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
http://www.apache.org/licenses/LICENSE-2.0
You should have received a copy of the GNU General Public License
along with dependency-check-ant. If not, see <http://www.gnu.org/licenses />.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-parent</artifactId>
<version>1.0.4</version>
<version>1.2.7</version>
</parent>
<artifactId>dependency-check-ant</artifactId>
<packaging>jar</packaging>
<name>Dependency-Check Ant Task</name>
<description>Dependency-check is a utility that attempts to detect publicly disclosed vulnerabilities contained within project dependencies. It does this by determining if there is a Common Platform Enumeration (CPE) identifier for a given dependency. If found, it will generate a report linking to the associated CVE entries.</description>
<description>dependency-check-ant is an Ant Task that uses dependency-check-core to detect publicly disclosed vulnerabilities associated with the project's dependencies. The task will generate a report listing the dependency, any identified Common Platform Enumeration (CPE) identifiers, and the associated Common Vulnerability and Exposure (CVE) entries.</description>
<!-- begin copy from http://minds.coremedia.com/2012/09/11/problem-solved-deploy-multi-module-maven-project-site-as-github-pages/ -->
<distributionManagement>
<site>
@@ -238,8 +236,11 @@ Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.2</version>
<version>2.6</version>
<configuration>
<instrumentation>
<ignoreTrivial>true</ignoreTrivial>
</instrumentation>
<check>
<branchRate>85</branchRate>
<lineRate>85</lineRate>
@@ -268,14 +269,9 @@ Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<version>2.16</version>
<configuration>
<systemProperties>
<property>
<name>net.sourceforge.cobertura.datafile</name>
<value>${project.build.directory}/cobertura/cobertura.ser</value>
<workingDirectory>target</workingDirectory>
</property>
<property>
<name>data.directory</name>
<value>${project.build.directory}/dependency-check-data</value>
@@ -286,9 +282,11 @@ Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<version>3.1</version>
<configuration>
<showDeprecation>false</showDeprecation>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
@@ -300,7 +298,7 @@ Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
<dependency>
<groupId>org.apache.maven.doxia</groupId>
<artifactId>doxia-module-markdown</artifactId>
<version>1.4</version>
<version>1.5</version>
</dependency>
</dependencies>
<configuration>
@@ -309,7 +307,7 @@ Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.6</version>
<version>2.7</version>
<reportSets>
<reportSet>
<reports>
@@ -324,7 +322,10 @@ Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9</version>
<version>2.9.1</version>
<configuration>
<bottom>Copyright© 2012-14 Jeremy Long. All Rights Reserved.</bottom>
</configuration>
<reportSets>
<reportSet>
<id>default</id>
@@ -337,7 +338,7 @@ Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.0</version>
<version>2.1</version>
<reportSets>
<reportSet>
<reports>
@@ -350,17 +351,17 @@ Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>2.3</version>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.2</version>
<version>2.6</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.14</version>
<version>2.16</version>
<reportSets>
<reportSet>
<reports>
@@ -396,12 +397,12 @@ Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.10</version>
<version>2.11</version>
<configuration>
<enableRulesSummary>false</enableRulesSummary>
<configLocation>${basedir}/config/checkstyle-checks.xml</configLocation>
<headerLocation>${basedir}/config/checkstyle-header.txt</headerLocation>
<suppressionsLocation>${basedir}/config/checkstyle-suppressions.xml</suppressionsLocation>
<configLocation>${basedir}/../src/main/config/checkstyle-checks.xml</configLocation>
<headerLocation>${basedir}/../src/main/config/checkstyle-header.txt</headerLocation>
<suppressionsLocation>${basedir}/../src/main/config/checkstyle-suppressions.xml</suppressionsLocation>
<suppressionsFileExpression>checkstyle.suppressions.file</suppressionsFileExpression>
</configuration>
</plugin>
@@ -413,12 +414,21 @@ Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
<targetJdk>1.6</targetJdk>
<linkXref>true</linkXref>
<sourceEncoding>utf-8</sourceEncoding>
<excludes>
<exclude>**/generated/*.java</exclude>
</excludes>
<rulesets>
<ruleset>../src/main/config/dcrules.xml</ruleset>
<ruleset>/rulesets/java/basic.xml</ruleset>
<ruleset>/rulesets/java/imports.xml</ruleset>
<ruleset>/rulesets/java/unusedcode.xml</ruleset>
</rulesets>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.5.2</version>
<version>2.5.3</version>
</plugin>
</reportPlugins>
</configuration>
@@ -431,6 +441,11 @@ Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
<artifactId>dependency-check-core</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-utils</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-core</artifactId>
@@ -441,12 +456,12 @@ Copyright (c) 2013 - Jeremy Long. All Rights Reserved.
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.9.1</version>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-testutil</artifactId>
<version>1.9.1</version>
<version>1.9.3</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-ant.
*
* Dependency-check-ant is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-ant is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-ant. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
@@ -33,7 +32,11 @@ import org.apache.tools.ant.types.ResourceCollection;
import org.apache.tools.ant.types.resources.FileProvider;
import org.apache.tools.ant.types.resources.Resources;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.data.nvdcve.CveDB;
import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
import org.owasp.dependencycheck.data.nvdcve.DatabaseProperties;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.dependency.Identifier;
import org.owasp.dependencycheck.dependency.Vulnerability;
import org.owasp.dependencycheck.reporting.ReportGenerator;
import org.owasp.dependencycheck.reporting.ReportGenerator.Format;
@@ -43,7 +46,7 @@ import org.owasp.dependencycheck.utils.Settings;
/**
* An Ant task definition to execute dependency-check during an Ant build.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class DependencyCheckTask extends Task {
@@ -55,6 +58,14 @@ public class DependencyCheckTask extends Task {
* Name of the logging properties file.
*/
private static final String LOG_PROPERTIES_FILE = "log.properties";
/**
* System specific new line character.
*/
private static final String NEW_LINE = System.getProperty("line.separator", "\n").intern();
/**
* The logger.
*/
private static final Logger LOGGER = Logger.getLogger(DependencyCheckTask.class.getName());
/**
* Construct a new DependencyCheckTask.
@@ -87,8 +98,8 @@ public class DependencyCheckTask extends Task {
}
/**
* Returns the path. If the path has not been initialized yet, this class is
* synchronized, and will instantiate the path object.
* Returns the path. If the path has not been initialized yet, this class is synchronized, and will instantiate the
* path object.
*
* @return the path
*/
@@ -110,8 +121,7 @@ public class DependencyCheckTask extends Task {
}
/**
* Add a reference to a Path, FileSet, DirSet, or FileList defined
* elsewhere.
* Add a reference to a Path, FileSet, DirSet, or FileList defined elsewhere.
*
* @param r the reference to a path, fileset, dirset or filelist.
*/
@@ -123,8 +133,7 @@ public class DependencyCheckTask extends Task {
}
/**
* If this is a reference, this method will add the referenced resource
* collection to the collection of paths.
* If this is a reference, this method will add the referenced resource collection to the collection of paths.
*
* @throws BuildException if the reference is not to a resource collection
*/
@@ -184,8 +193,7 @@ public class DependencyCheckTask extends Task {
this.dataDirectory = dataDirectory;
}
/**
* Specifies the destination directory for the generated Dependency-Check
* report.
* Specifies the destination directory for the generated Dependency-Check report.
*/
private String reportOutputDirectory = ".";
@@ -207,11 +215,9 @@ public class DependencyCheckTask extends Task {
this.reportOutputDirectory = reportOutputDirectory;
}
/**
* Specifies if the build should be failed if a CVSS score above a specified
* level is identified. The default is 11 which means since the CVSS scores
* are 0-10, by default the build will never fail and the CVSS score is set
* to 11. The valid range for the fail build on CVSS is 0 to 11, where
* anything above 10 will not cause the build to fail.
* Specifies if the build should be failed if a CVSS score above a specified level is identified. The default is 11
* which means since the CVSS scores are 0-10, by default the build will never fail and the CVSS score is set to 11.
* The valid range for the fail build on CVSS is 0 to 11, where anything above 10 will not cause the build to fail.
*/
private float failBuildOnCVSS = 11;
@@ -233,8 +239,8 @@ public class DependencyCheckTask extends Task {
this.failBuildOnCVSS = failBuildOnCVSS;
}
/**
* Sets whether auto-updating of the NVD CVE/CPE data is enabled. It is not
* recommended that this be turned to false. Default is true.
* Sets whether auto-updating of the NVD CVE/CPE data is enabled. It is not recommended that this be turned to
* false. Default is true.
*/
private boolean autoUpdate = true;
@@ -256,9 +262,8 @@ public class DependencyCheckTask extends Task {
this.autoUpdate = autoUpdate;
}
/**
* The report format to be generated (HTML, XML, VULN, ALL). This
* configuration option has no affect if using this within the Site plugin
* unless the externalReport is set to true. Default is HTML.
* The report format to be generated (HTML, XML, VULN, ALL). This configuration option has no affect if using this
* within the Site plugin unless the externalReport is set to true. Default is HTML.
*/
private String reportFormat = "HTML";
@@ -280,26 +285,50 @@ public class DependencyCheckTask extends Task {
this.reportFormat = reportFormat.getValue();
}
/**
* The Proxy URL.
* The Proxy Server.
*/
private String proxyUrl;
private String proxyServer;
/**
* Get the value of proxyUrl.
* Get the value of proxyServer.
*
* @return the value of proxyUrl
* @return the value of proxyServer
*/
public String getProxyUrl() {
return proxyUrl;
public String getProxyServer() {
return proxyServer;
}
/**
* Set the value of proxyUrl.
* Set the value of proxyServer.
*
* @param proxyUrl new value of proxyUrl
* @param server new value of proxyServer
*/
public void setProxyServer(String server) {
this.proxyServer = server;
}
/**
* Get the value of proxyServer.
*
* @return the value of proxyServer
* @deprecated use {@link org.owasp.dependencycheck.taskdefs.DependencyCheckTask#getProxyServer()} instead
*/
@Deprecated
public String getProxyUrl() {
return proxyServer;
}
/**
* Set the value of proxyServer.
*
* @param proxyUrl new value of proxyServer
* @deprecated use {@link org.owasp.dependencycheck.taskdefs.DependencyCheckTask#setProxyServer(java.lang.String)}
* instead
*/
@Deprecated
public void setProxyUrl(String proxyUrl) {
this.proxyUrl = proxyUrl;
LOGGER.warning("A deprecated configuration option 'proxyUrl' was detected; use 'proxyServer' instead.");
this.proxyServer = proxyUrl;
}
/**
* The Proxy Port.
@@ -323,6 +352,50 @@ public class DependencyCheckTask extends Task {
public void setProxyPort(String proxyPort) {
this.proxyPort = proxyPort;
}
/**
* The Proxy username.
*/
private String proxyUsername;
/**
* Get the value of proxyUsername.
*
* @return the value of proxyUsername
*/
public String getProxyUsername() {
return proxyUsername;
}
/**
* Set the value of proxyUsername.
*
* @param proxyUsername new value of proxyUsername
*/
public void setProxyUsername(String proxyUsername) {
this.proxyUsername = proxyUsername;
}
/**
* The Proxy password.
*/
private String proxyPassword;
/**
* Get the value of proxyPassword.
*
* @return the value of proxyPassword
*/
public String getProxyPassword() {
return proxyPassword;
}
/**
* Set the value of proxyPassword.
*
* @param proxyPassword new value of proxyPassword
*/
public void setProxyPassword(String proxyPassword) {
this.proxyPassword = proxyPassword;
}
/**
* The Connection Timeout.
*/
@@ -367,6 +440,444 @@ public class DependencyCheckTask extends Task {
public void setLogFile(String logFile) {
this.logFile = logFile;
}
/**
* The path to the suppression file.
*/
private String suppressionFile;
/**
* Get the value of suppressionFile.
*
* @return the value of suppressionFile
*/
public String getSuppressionFile() {
return suppressionFile;
}
/**
* Set the value of suppressionFile.
*
* @param suppressionFile new value of suppressionFile
*/
public void setSuppressionFile(String suppressionFile) {
this.suppressionFile = suppressionFile;
}
/**
* flag indicating whether or not to show a summary of findings.
*/
private boolean showSummary = true;
/**
* Get the value of showSummary.
*
* @return the value of showSummary
*/
public boolean isShowSummary() {
return showSummary;
}
/**
* Set the value of showSummary.
*
* @param showSummary new value of showSummary
*/
public void setShowSummary(boolean showSummary) {
this.showSummary = showSummary;
}
/**
* Sets whether or not the analyzer is enabled.
*
* @param jarAnalyzerEnabled the value of the new setting
*/
public void setJarAnalyzerEnabled(boolean jarAnalyzerEnabled) {
this.jarAnalyzerEnabled = jarAnalyzerEnabled;
}
/**
* Whether or not the Archive Analyzer is enabled.
*/
private boolean archiveAnalyzerEnabled = true;
/**
* Returns whether or not the analyzer is enabled.
*
* @return true if the analyzer is enabled
*/
public boolean isArchiveAnalyzerEnabled() {
return archiveAnalyzerEnabled;
}
/**
* Whether or not the .NET Assembly Analyzer is enabled.
*/
private boolean assemblyAnalyzerEnabled = true;
/**
* Sets whether or not the analyzer is enabled.
*
* @param archiveAnalyzerEnabled the value of the new setting
*/
public void setArchiveAnalyzerEnabled(boolean archiveAnalyzerEnabled) {
this.archiveAnalyzerEnabled = archiveAnalyzerEnabled;
}
/**
* Returns whether or not the analyzer is enabled.
*
* @return true if the analyzer is enabled
*/
public boolean isAssemblyAnalyzerEnabled() {
return assemblyAnalyzerEnabled;
}
/**
* Sets whether or not the analyzer is enabled.
*
* @param assemblyAnalyzerEnabled the value of the new setting
*/
public void setAssemblyAnalyzerEnabled(boolean assemblyAnalyzerEnabled) {
this.assemblyAnalyzerEnabled = assemblyAnalyzerEnabled;
}
/**
* Whether or not the .NET Nuspec Analyzer is enabled.
*/
private boolean nuspecAnalyzerEnabled = true;
/**
* Returns whether or not the analyzer is enabled.
*
* @return true if the analyzer is enabled
*/
public boolean isNuspecAnalyzerEnabled() {
return nuspecAnalyzerEnabled;
}
/**
* Sets whether or not the analyzer is enabled.
*
* @param nuspecAnalyzerEnabled the value of the new setting
*/
public void setNuspecAnalyzerEnabled(boolean nuspecAnalyzerEnabled) {
this.nuspecAnalyzerEnabled = nuspecAnalyzerEnabled;
}
/**
* Whether or not the nexus analyzer is enabled.
*/
private boolean nexusAnalyzerEnabled = true;
/**
* Get the value of nexusAnalyzerEnabled.
*
* @return the value of nexusAnalyzerEnabled
*/
public boolean isNexusAnalyzerEnabled() {
return nexusAnalyzerEnabled;
}
/**
* Set the value of nexusAnalyzerEnabled.
*
* @param nexusAnalyzerEnabled new value of nexusAnalyzerEnabled
*/
public void setNexusAnalyzerEnabled(boolean nexusAnalyzerEnabled) {
this.nexusAnalyzerEnabled = nexusAnalyzerEnabled;
}
/**
* The URL of the Nexus server.
*/
private String nexusUrl;
/**
* Get the value of nexusUrl.
*
* @return the value of nexusUrl
*/
public String getNexusUrl() {
return nexusUrl;
}
/**
* Set the value of nexusUrl.
*
* @param nexusUrl new value of nexusUrl
*/
public void setNexusUrl(String nexusUrl) {
this.nexusUrl = nexusUrl;
}
/**
* Whether or not the defined proxy should be used when connecting to Nexus.
*/
private boolean nexusUsesProxy = true;
/**
* Get the value of nexusUsesProxy.
*
* @return the value of nexusUsesProxy
*/
public boolean isNexusUsesProxy() {
return nexusUsesProxy;
}
/**
* Set the value of nexusUsesProxy.
*
* @param nexusUsesProxy new value of nexusUsesProxy
*/
public void setNexusUsesProxy(boolean nexusUsesProxy) {
this.nexusUsesProxy = nexusUsesProxy;
}
/**
* The database driver name; such as org.h2.Driver.
*/
private String databaseDriverName;
/**
* Get the value of databaseDriverName.
*
* @return the value of databaseDriverName
*/
public String getDatabaseDriverName() {
return databaseDriverName;
}
/**
* Set the value of databaseDriverName.
*
* @param databaseDriverName new value of databaseDriverName
*/
public void setDatabaseDriverName(String databaseDriverName) {
this.databaseDriverName = databaseDriverName;
}
/**
* The path to the database driver JAR file if it is not on the class path.
*/
private String databaseDriverPath;
/**
* Get the value of databaseDriverPath.
*
* @return the value of databaseDriverPath
*/
public String getDatabaseDriverPath() {
return databaseDriverPath;
}
/**
* Set the value of databaseDriverPath.
*
* @param databaseDriverPath new value of databaseDriverPath
*/
public void setDatabaseDriverPath(String databaseDriverPath) {
this.databaseDriverPath = databaseDriverPath;
}
/**
* The database connection string.
*/
private String connectionString;
/**
* Get the value of connectionString.
*
* @return the value of connectionString
*/
public String getConnectionString() {
return connectionString;
}
/**
* Set the value of connectionString.
*
* @param connectionString new value of connectionString
*/
public void setConnectionString(String connectionString) {
this.connectionString = connectionString;
}
/**
* The user name for connecting to the database.
*/
private String databaseUser;
/**
* Get the value of databaseUser.
*
* @return the value of databaseUser
*/
public String getDatabaseUser() {
return databaseUser;
}
/**
* Set the value of databaseUser.
*
* @param databaseUser new value of databaseUser
*/
public void setDatabaseUser(String databaseUser) {
this.databaseUser = databaseUser;
}
/**
* The password to use when connecting to the database.
*/
private String databasePassword;
/**
* Get the value of databasePassword.
*
* @return the value of databasePassword
*/
public String getDatabasePassword() {
return databasePassword;
}
/**
* Set the value of databasePassword.
*
* @param databasePassword new value of databasePassword
*/
public void setDatabasePassword(String databasePassword) {
this.databasePassword = databasePassword;
}
/**
* Additional ZIP File extensions to add analyze. This should be a comma-separated list of file extensions to treat
* like ZIP files.
*/
private String zipExtensions;
/**
* Get the value of zipExtensions.
*
* @return the value of zipExtensions
*/
public String getZipExtensions() {
return zipExtensions;
}
/**
* Set the value of zipExtensions.
*
* @param zipExtensions new value of zipExtensions
*/
public void setZipExtensions(String zipExtensions) {
this.zipExtensions = zipExtensions;
}
/**
* The url for the modified NVD CVE (1.2 schema).
*/
private String cveUrl12Modified;
/**
* Get the value of cveUrl12Modified.
*
* @return the value of cveUrl12Modified
*/
public String getCveUrl12Modified() {
return cveUrl12Modified;
}
/**
* Set the value of cveUrl12Modified.
*
* @param cveUrl12Modified new value of cveUrl12Modified
*/
public void setCveUrl12Modified(String cveUrl12Modified) {
this.cveUrl12Modified = cveUrl12Modified;
}
/**
* The url for the modified NVD CVE (2.0 schema).
*/
private String cveUrl20Modified;
/**
* Get the value of cveUrl20Modified.
*
* @return the value of cveUrl20Modified
*/
public String getCveUrl20Modified() {
return cveUrl20Modified;
}
/**
* Set the value of cveUrl20Modified.
*
* @param cveUrl20Modified new value of cveUrl20Modified
*/
public void setCveUrl20Modified(String cveUrl20Modified) {
this.cveUrl20Modified = cveUrl20Modified;
}
/**
* Base Data Mirror URL for CVE 1.2.
*/
private String cveUrl12Base;
/**
* Get the value of cveUrl12Base.
*
* @return the value of cveUrl12Base
*/
public String getCveUrl12Base() {
return cveUrl12Base;
}
/**
* Set the value of cveUrl12Base.
*
* @param cveUrl12Base new value of cveUrl12Base
*/
public void setCveUrl12Base(String cveUrl12Base) {
this.cveUrl12Base = cveUrl12Base;
}
/**
* Data Mirror URL for CVE 2.0.
*/
private String cveUrl20Base;
/**
* Get the value of cveUrl20Base.
*
* @return the value of cveUrl20Base
*/
public String getCveUrl20Base() {
return cveUrl20Base;
}
/**
* Set the value of cveUrl20Base.
*
* @param cveUrl20Base new value of cveUrl20Base
*/
public void setCveUrl20Base(String cveUrl20Base) {
this.cveUrl20Base = cveUrl20Base;
}
/**
* The path to Mono for .NET assembly analysis on non-windows systems.
*/
private String pathToMono;
/**
* Get the value of pathToMono.
*
* @return the value of pathToMono
*/
public String getPathToMono() {
return pathToMono;
}
/**
* Set the value of pathToMono.
*
* @param pathToMono new value of pathToMono
*/
public void setPathToMono(String pathToMono) {
this.pathToMono = pathToMono;
}
@Override
public void execute() throws BuildException {
@@ -377,36 +888,63 @@ public class DependencyCheckTask extends Task {
validateConfiguration();
populateSettings();
final Engine engine = new Engine();
for (Resource resource : path) {
final FileProvider provider = resource.as(FileProvider.class);
if (provider != null) {
final File file = provider.getFile();
if (file != null && file.exists()) {
engine.scan(file);
Engine engine = null;
try {
engine = new Engine(DependencyCheckTask.class.getClassLoader());
for (Resource resource : path) {
final FileProvider provider = resource.as(FileProvider.class);
if (provider != null) {
final File file = provider.getFile();
if (file != null && file.exists()) {
engine.scan(file);
}
}
}
}
try {
engine.analyzeDependencies();
final ReportGenerator reporter = new ReportGenerator(applicationName, engine.getDependencies(), engine.getAnalyzers());
reporter.generateReports(reportOutputDirectory, reportFormat);
try {
engine.analyzeDependencies();
DatabaseProperties prop = null;
CveDB cve = null;
try {
cve = new CveDB();
cve.open();
prop = cve.getDatabaseProperties();
} catch (DatabaseException ex) {
LOGGER.log(Level.FINE, "Unable to retrieve DB Properties", ex);
} finally {
if (cve != null) {
cve.close();
}
}
final ReportGenerator reporter = new ReportGenerator(applicationName, engine.getDependencies(), engine.getAnalyzers(), prop);
reporter.generateReports(reportOutputDirectory, reportFormat);
if (this.failBuildOnCVSS <= 10) {
checkForFailure(engine.getDependencies());
if (this.failBuildOnCVSS <= 10) {
checkForFailure(engine.getDependencies());
}
if (this.showSummary) {
showSummary(engine.getDependencies());
}
} catch (IOException ex) {
LOGGER.log(Level.FINE, "Unable to generate dependency-check report", ex);
throw new BuildException("Unable to generate dependency-check report", ex);
} catch (Exception ex) {
LOGGER.log(Level.FINE, "An exception occurred; unable to continue task", ex);
throw new BuildException("An exception occurred; unable to continue task", ex);
}
} catch (DatabaseException ex) {
LOGGER.log(Level.SEVERE, "Unable to connect to the dependency-check database; analysis has stopped");
LOGGER.log(Level.FINE, "", ex);
} finally {
Settings.cleanup(true);
if (engine != null) {
engine.cleanup();
}
} catch (IOException ex) {
Logger.getLogger(DependencyCheckTask.class.getName()).log(Level.FINE, null, ex);
throw new BuildException("Unable to generate dependency-check report", ex);
} catch (Exception ex) {
Logger.getLogger(DependencyCheckTask.class.getName()).log(Level.SEVERE, null, ex);
throw new BuildException("An exception occured; unable to continue task", ex);
}
}
/**
* Validate the configuration to ensure the parameters have been properly
* configured/initialized.
* Validate the configuration to ensure the parameters have been properly configured/initialized.
*
* @throws BuildException if the task was not configured correctly.
*/
@@ -420,24 +958,24 @@ public class DependencyCheckTask extends Task {
}
/**
* Takes the properties supplied and updates the dependency-check settings.
* Additionally, this sets the system properties required to change the
* proxy url, port, and connection timeout.
* Takes the properties supplied and updates the dependency-check settings. Additionally, this sets the system
* properties required to change the proxy server, port, and connection timeout.
*/
private void populateSettings() {
Settings.initialize();
InputStream taskProperties = null;
try {
taskProperties = this.getClass().getClassLoader().getResourceAsStream(PROPERTIES_FILE);
Settings.mergeProperties(taskProperties);
} catch (IOException ex) {
Logger.getLogger(DependencyCheckTask.class.getName()).log(Level.WARNING, "Unable to load the dependency-check ant task.properties file.");
Logger.getLogger(DependencyCheckTask.class.getName()).log(Level.FINE, null, ex);
LOGGER.log(Level.WARNING, "Unable to load the dependency-check ant task.properties file.");
LOGGER.log(Level.FINE, null, ex);
} finally {
if (taskProperties != null) {
try {
taskProperties.close();
} catch (IOException ex) {
Logger.getLogger(DependencyCheckTask.class.getName()).log(Level.FINEST, null, ex);
LOGGER.log(Level.FINEST, null, ex);
}
}
}
@@ -453,24 +991,82 @@ public class DependencyCheckTask extends Task {
Settings.setBoolean(Settings.KEYS.AUTO_UPDATE, autoUpdate);
if (proxyUrl != null && !proxyUrl.isEmpty()) {
Settings.setString(Settings.KEYS.PROXY_URL, proxyUrl);
if (proxyServer != null && !proxyServer.isEmpty()) {
Settings.setString(Settings.KEYS.PROXY_SERVER, proxyServer);
}
if (proxyPort != null && !proxyPort.isEmpty()) {
Settings.setString(Settings.KEYS.PROXY_PORT, proxyPort);
}
if (proxyUsername != null && !proxyUsername.isEmpty()) {
Settings.setString(Settings.KEYS.PROXY_USERNAME, proxyUsername);
}
if (proxyPassword != null && !proxyPassword.isEmpty()) {
Settings.setString(Settings.KEYS.PROXY_PASSWORD, proxyPassword);
}
if (connectionTimeout != null && !connectionTimeout.isEmpty()) {
Settings.setString(Settings.KEYS.CONNECTION_TIMEOUT, connectionTimeout);
}
if (suppressionFile != null && !suppressionFile.isEmpty()) {
Settings.setString(Settings.KEYS.SUPPRESSION_FILE, suppressionFile);
}
//File Type Analyzer Settings
//JAR ANALYZER
Settings.setBoolean(Settings.KEYS.ANALYZER_JAR_ENABLED, jarAnalyzerEnabled);
//NUSPEC ANALYZER
Settings.setBoolean(Settings.KEYS.ANALYZER_NUSPEC_ENABLED, nuspecAnalyzerEnabled);
//NEXUS ANALYZER
Settings.setBoolean(Settings.KEYS.ANALYZER_NEXUS_ENABLED, nexusAnalyzerEnabled);
if (nexusUrl != null && !nexusUrl.isEmpty()) {
Settings.setString(Settings.KEYS.ANALYZER_NEXUS_URL, nexusUrl);
}
Settings.setBoolean(Settings.KEYS.ANALYZER_NEXUS_PROXY, nexusUsesProxy);
//ARCHIVE ANALYZER
Settings.setBoolean(Settings.KEYS.ANALYZER_ARCHIVE_ENABLED, archiveAnalyzerEnabled);
if (zipExtensions != null && !zipExtensions.isEmpty()) {
Settings.setString(Settings.KEYS.ADDITIONAL_ZIP_EXTENSIONS, zipExtensions);
}
//ASSEMBLY ANALYZER
Settings.setBoolean(Settings.KEYS.ANALYZER_ASSEMBLY_ENABLED, assemblyAnalyzerEnabled);
if (pathToMono != null && !pathToMono.isEmpty()) {
Settings.setString(Settings.KEYS.ANALYZER_ASSEMBLY_MONO_PATH, pathToMono);
}
if (databaseDriverName != null && !databaseDriverName.isEmpty()) {
Settings.setString(Settings.KEYS.DB_DRIVER_NAME, databaseDriverName);
}
if (databaseDriverPath != null && !databaseDriverPath.isEmpty()) {
Settings.setString(Settings.KEYS.DB_DRIVER_PATH, databaseDriverPath);
}
if (connectionString != null && !connectionString.isEmpty()) {
Settings.setString(Settings.KEYS.DB_CONNECTION_STRING, connectionString);
}
if (databaseUser != null && !databaseUser.isEmpty()) {
Settings.setString(Settings.KEYS.DB_USER, databaseUser);
}
if (databasePassword != null && !databasePassword.isEmpty()) {
Settings.setString(Settings.KEYS.DB_PASSWORD, databasePassword);
}
if (cveUrl12Modified != null && !cveUrl12Modified.isEmpty()) {
Settings.setString(Settings.KEYS.CVE_MODIFIED_12_URL, cveUrl12Modified);
}
if (cveUrl20Modified != null && !cveUrl20Modified.isEmpty()) {
Settings.setString(Settings.KEYS.CVE_MODIFIED_20_URL, cveUrl20Modified);
}
if (cveUrl12Base != null && !cveUrl12Base.isEmpty()) {
Settings.setString(Settings.KEYS.CVE_SCHEMA_1_2, cveUrl12Base);
}
if (cveUrl20Base != null && !cveUrl20Base.isEmpty()) {
Settings.setString(Settings.KEYS.CVE_SCHEMA_2_0, cveUrl20Base);
}
}
/**
* Checks to see if a vulnerability has been identified with a CVSS score
* that is above the threshold set in the configuration.
* Checks to see if a vulnerability has been identified with a CVSS score that is above the threshold set in the
* configuration.
*
* @param dependencies the list of dependency objects
* @throws BuildException thrown if a CVSS score is found that is higher
* then the threshold set
* @throws BuildException thrown if a CVSS score is found that is higher then the threshold set
*/
private void checkForFailure(List<Dependency> dependencies) throws BuildException {
final StringBuilder ids = new StringBuilder();
@@ -494,8 +1090,47 @@ public class DependencyCheckTask extends Task {
}
/**
* An enumeration of supported report formats: "ALL", "HTML", "XML", "VULN",
* etc..
* Generates a warning message listing a summary of dependencies and their associated CPE and CVE entries.
*
* @param dependencies a list of dependency objects
*/
private void showSummary(List<Dependency> dependencies) {
final StringBuilder summary = new StringBuilder();
for (Dependency d : dependencies) {
boolean firstEntry = true;
final StringBuilder ids = new StringBuilder();
for (Vulnerability v : d.getVulnerabilities()) {
if (firstEntry) {
firstEntry = false;
} else {
ids.append(", ");
}
ids.append(v.getName());
}
if (ids.length() > 0) {
summary.append(d.getFileName()).append(" (");
firstEntry = true;
for (Identifier id : d.getIdentifiers()) {
if (firstEntry) {
firstEntry = false;
} else {
summary.append(", ");
}
summary.append(id.getValue());
}
summary.append(") : ").append(ids).append(NEW_LINE);
}
}
if (summary.length() > 0) {
final String msg = String.format("%n%n"
+ "One or more dependencies were identified with known vulnerabilities:%n%n%s"
+ "%n%nSee the dependency-check report for more details.%n%n", summary.toString());
LOGGER.log(Level.WARNING, msg);
}
}
/**
* An enumeration of supported report formats: "ALL", "HTML", "XML", "VULN", etc..
*/
public static class ReportFormats extends EnumeratedAttribute {
@@ -515,4 +1150,18 @@ public class DependencyCheckTask extends Task {
return values;
}
}
/**
* Whether or not the Jar Analyzer is enabled.
*/
private boolean jarAnalyzerEnabled = true;
/**
* Returns whether or not the analyzer is enabled.
*
* @return true if the analyzer is enabled
*/
public boolean isJarAnalyzerEnabled() {
return jarAnalyzerEnabled;
}
}

View File

@@ -18,18 +18,60 @@ the project's dependencies.
</dependency-check>
</target>
```
The following table lists the configurable properties:
Property | Description | Requirement
----------------------|-------------|---------
ApplicationName | The name of the application to use in the generated report. | Required
ReportFormat | The format of the report to be generated. Allowed values are: HTML, XML, VULN, or ALL. The default value is HTML.| Optional
ReportOutputDirectory | The directory where dependency-check will store data used for analysis. Defaults to the current working directory. | Optional
FailBuildOn | If set and a CVE is found that is greater then the specified value the build will fail. The default value is 11 which means that the build will not fail. Valid values are 0-11. | Optional
AutoUpdate | If set to false the NVD CVE data is not automatically updated. Setting this to false could result in false negatives. However, this may be required in some environments. The default value is true. | Optional
DataDirectory | The directory where dependency-check will store data used for analysis. Defaults to a folder called, called 'dependency-check-data', that is in the same directory as the dependency-check-ant jar file was installed in. *It is not recommended to change this.* | Optional
ProxyUrl | Defines the proxy used to connect to the Internet. | Optional
ProxyPort | Defines the port for the proxy. | Optional
ConnectionTimeout | The connection timeout used when downloading data files from the Internet. | Optional
Configuration
====================
The following properties can be set on the dependency-check-maven plugin.
Property | Description | Default Value
---------------------|------------------------------------|------------------
autoUpdate | Sets whether auto-updating of the NVD CVE/CPE data is enabled. It is not recommended that this be turned to false. | true
externalReport | When using as a Site plugin this parameter sets whether or not the external report format should be used. | false
outputDirectory | The location to write the report(s). Note, this is not used if generating the report as part of a `mvn site` build | 'target'
failBuildOnCVSS | Specifies if the build should be failed if a CVSS score above a specified level is identified. The default is 11 which means since the CVSS scores are 0-10, by default the build will never fail. | 11
format | The report format to be generated (HTML, XML, VULN, ALL). This configuration option has no affect if using this within the Site plugin unless the externalReport is set to true. | HTML
logFile | The file path to write verbose logging information. | &nbsp;
suppressionFile | The file path to the XML suppression file \- used to suppress [false positives](../suppression.html) | &nbsp;
proxyServer | The Proxy Server. | &nbsp;
proxyPort | The Proxy Port. | &nbsp;
proxyUsername | Defines the proxy user name. | &nbsp;
proxyPassword | Defines the proxy password. | &nbsp;
connectionTimeout | The URL Connection Timeout. | &nbsp;
Analyzer Configuration
====================
The following properties are used to configure the various file type analyzers.
These properties can be used to turn off specific analyzers if it is not needed.
Note, that specific analyzers will automatically disable themselves if no file
types that they support are detected - so specifically disabling them may not
be needed.
Property | Description | Default Value
------------------------|---------------------------------------------------------------------------|------------------
archiveAnalyzerEnabled | Sets whether the Archive Analyzer will be used. | true
zipExtensions | A comma-separated list of additional file extensions to be treated like a ZIP file, the contents will be extracted and analyzed. | &nbsp;
jarAnalyzer | Sets whether Jar Analyzer will be used. | true
nexusAnalyzerEnabled | Sets whether Nexus Analyzer will be used. | true
nexusUrl | Defines the Nexus Pro URL. If not set the Nexus Analyzer will be disabled. | &nbsp;
nexusUsesProxy | Whether or not the defined proxy should be used when connecting to Nexus. | true
nuspecAnalyzerEnabled | Sets whether or not the .NET Nuget Nuspec Analyzer will be used. | true
assemblyAnalyzerEnabled | Sets whether or not the .NET Assembly Analyzer should be used. | true
pathToMono | The path to Mono for .NET assembly analysis on non-windows systems. | &nbsp;
Advanced Configuration
====================
The following properties can be configured in the plugin. However, they are less frequently changed. One exception
may be the cvedUrl properties, which can be used to host a mirror of the NVD within an enterprise environment.
Property | Description | Default Value
---------------------|-------------------------------------------------------------------------|------------------
cveUrl12Modified | URL for the modified CVE 1.2 | http://nvd.nist.gov/download/nvdcve-modified.xml
cveUrl20Modified | URL for the modified CVE 2.0 | http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-modified.xml
cveUrl12Base | Base URL for each year's CVE 1.2, the %d will be replaced with the year | http://nvd.nist.gov/download/nvdcve-%d.xml
cveUrl20Base | Base URL for each year's CVE 2.0, the %d will be replaced with the year | http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-%d.xml
dataDirectory | Data directory to hold SQL CVEs contents. This should generally not be changed. | &nbsp;
databaseDriverName | The name of the database driver. Example: org.h2.Driver. | &nbsp;
databaseDriverPath | The path to the database driver JAR file; only used if the driver is not in the class path. | &nbsp;
connectionString | The connection string used to connect to the database. | &nbsp;
databaseUser | The username used when connecting to the database. | &nbsp;
databasePassword | The password used when connecting to the database. | &nbsp;

View File

@@ -3,7 +3,20 @@ Installation
Download dependency-check-ant from [bintray here](http://dl.bintray.com/jeremy-long/owasp/dependency-check-ant-${project.version}.jar).
To install dependency-check-ant place the dependency-check-ant-${project.version}.jar into
the lib directory of your Ant instalation directory. Once installed you can add
the taskdef to you build.xml and add the task to a new or existing target.
the taskdef to you build.xml and add the task to a new or existing target:
```xml
<taskdef name="dependency-check" classname="org.owasp.dependencycheck.taskdefs.DependencyCheckTask"/>
```
If you do not want to install dependency-check-ant into your ant's lib directory when you define the task def you
must add the classpath to the taskdef:
```xml
<taskdef name="dependency-check" classname="org.owasp.dependencycheck.taskdefs.DependencyCheckTask">
<classpath path="[path]/[to]/dependency-check-ant-${project.version}.jar"/>
</taskdef>
```
It is important to understand that the first time this task is executed it may
take 20 minutes or more as it downloads and processes the data from the National

View File

@@ -1,11 +1,19 @@
Usage
====================
First, add the dependency-check-ant taskdef to your build.xml:
First, add the dependency-check-ant taskdef to your build.xml (see the [installation guide](installation.html):
```xml
<taskdef name="dependency-check" classname="org.owasp.dependencycheck.taskdefs.DependencyCheckTask"/>
```
Or
```xml
<taskdef name="dependency-check" classname="org.owasp.dependencycheck.taskdefs.DependencyCheckTask">
<classpath path="[path]/[to]/dependency-check-ant-${project.version}.jar"/>
</taskdef>
```
Next, add the task to a target of your choosing:
```xml

View File

@@ -2,18 +2,17 @@
<!--
This file is part of dependency-check-ant.
Dependency-check-ant is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option) any
later version.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Dependency-check-ant is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
http://www.apache.org/licenses/LICENSE-2.0
You should have received a copy of the GNU General Public License along with
dependency-check-ant. If not, see http://www.gnu.org/licenses/.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Copyright (c) 2013 Jeremy Long. All Rights Reserved.
-->

View File

@@ -1,53 +1,40 @@
/*
* This file is part of dependency-check-ant.
*
* Dependency-check-ant is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-ant is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-ant. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.taskdefs;
import java.io.File;
import static junit.framework.TestCase.assertTrue;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.apache.tools.ant.BuildFileTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.owasp.dependencycheck.data.nvdcve.BaseDBTestCase;
import org.owasp.dependencycheck.utils.Settings;
/**
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class DependencyCheckTaskTest extends BuildFileTest {
public DependencyCheckTaskTest() {
}
@BeforeClass
public static void setUpClass() {
}
@AfterClass
public static void tearDownClass() {
}
@Before
@Override
public void setUp() throws Exception {
Settings.initialize();
BaseDBTestCase.ensureDBExists();
final String buildFile = this.getClass().getClassLoader().getResource("build.xml").getPath();
configureProject(buildFile);
@@ -58,6 +45,7 @@ public class DependencyCheckTaskTest extends BuildFileTest {
public void tearDown() {
//no cleanup...
//executeTarget("cleanup");
Settings.cleanup(true);
}
/**
@@ -65,7 +53,7 @@ public class DependencyCheckTaskTest extends BuildFileTest {
*/
@Test
public void testAddFileSet() throws Exception {
File report = new File("target/DependencyCheck-Report.html");
File report = new File("target/dependency-check-report.html");
if (report.exists()) {
if (!report.delete()) {
throw new Exception("Unable to delete 'target/DependencyCheck-Report.html' prior to test.");
@@ -84,7 +72,7 @@ public class DependencyCheckTaskTest extends BuildFileTest {
*/
@Test
public void testAddFileList() throws Exception {
File report = new File("target/DependencyCheck-Report.xml");
File report = new File("target/dependency-check-report.xml");
if (report.exists()) {
if (!report.delete()) {
throw new Exception("Unable to delete 'target/DependencyCheck-Report.xml' prior to test.");
@@ -102,7 +90,7 @@ public class DependencyCheckTaskTest extends BuildFileTest {
*/
@Test
public void testAddDirSet() throws Exception {
File report = new File("target/DependencyCheck-Vulnerability.html");
File report = new File("target/dependency-check-vulnerability.html");
if (report.exists()) {
if (!report.delete()) {
throw new Exception("Unable to delete 'target/DependencyCheck-Vulnerability.html' prior to test.");

View File

@@ -1,674 +1,202 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -17,8 +17,8 @@ Post: [dependency-check@googlegroups.com](mailto:dependency-check@googlegroups.c
Copyright & License
------------
Dependency-Check is Copyright (c) 2012-2013 Jeremy Long. All Rights Reserved.
Dependency-Check is Copyright (c) 2012-2014 Jeremy Long. All Rights Reserved.
Permission to modify and redistribute is granted under the terms of the GPLv3 license. See the [LICENSE.txt](https://github.com/jeremylong/DependencyCheck/dependency-check-cli/blob/master/LICENSE.txt) file for the full license.
Permission to modify and redistribute is granted under the terms of the Apache 2.0 license. See the [LICENSE.txt](https://github.com/jeremylong/DependencyCheck/dependency-check-cli/blob/master/LICENSE.txt) file for the full license.
Dependency-Check Command Line makes use of other open source libraries. Please see the [NOTICE.txt](https://github.com/jeremylong/DependencyCheck/dependency-check-cli/blob/master/NOTICES.txt) file for more information.

View File

@@ -1,223 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<!--
If you set the basedir property below, then all reported file
names will be relative to the specified directory. See
http://checkstyle.sourceforge.net/5.x/config.html#Checker
<property name="basedir" value="${basedir}"/>
-->
<property name="severity" value="error"/>
<module name="SuppressionFilter">
<property name="file" value="${checkstyle.suppressions.file}"/>
</module>
<module name="JavadocPackage">
<property name="allowLegacy" value="false"/>
</module>
<module name="Translation">
<property name="severity" value="warning"/>
</module>
<module name="FileTabCharacter">
<property name="eachLine" value="false"/>
</module>
<module name="FileLength">
<property name="fileExtensions" value="java"/>
</module>
<module name="NewlineAtEndOfFile">
<property name="fileExtensions" value="java"/>
<property name="lineSeparator" value="lf"/>
</module>
<module name="RegexpHeader">
<property name="headerFile" value="${checkstyle.header.file}"/>
<property name="fileExtensions" value="java"/>
<property name="id" value="header"/>
</module>
<module name="RegexpSingleline">
<property name="format" value="\s+$"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
</module>
<module name="TreeWalker">
<property name="tabWidth" value="4"/>
<module name="AvoidStarImport"/>
<module name="ConstantName"/>
<module name="EmptyBlock"/>
<module name="EmptyForIteratorPad"/>
<module name="EqualsHashCode"/>
<module name="OneStatementPerLine"/>
<!-- module name="IllegalCatch"/ -->
<!--module name="ImportControl">
<property name="file" value="${checkstyle.importcontrol.file}"/>
</module-->
<module name="IllegalImport"/>
<module name="IllegalInstantiation"/>
<module name="IllegalThrows"/>
<module name="InnerAssignment"/>
<module name="JavadocType">
<property name="authorFormat" value="\S"/>
</module>
<module name="JavadocMethod">
<property name="allowUndeclaredRTE" value="true"/>
<property name="allowThrowsTagsForSubclasses" value="true"/>
<property name="allowMissingPropertyJavadoc" value="true"/>
</module>
<module name="JavadocVariable"/>
<module name="JavadocStyle">
<property name="scope" value="public"/>
</module>
<module name="LeftCurly">
<property name="option" value="eol"/>
<property name="tokens" value="CLASS_DEF"/>
<property name="tokens" value="CTOR_DEF"/>
<property name="tokens" value="INTERFACE_DEF"/>
<property name="tokens" value="METHOD_DEF"/>
<property name="tokens" value="LITERAL_CATCH"/>
<property name="tokens" value="LITERAL_DO"/>
<property name="tokens" value="LITERAL_ELSE"/>
<property name="tokens" value="LITERAL_FINALLY"/>
<property name="tokens" value="LITERAL_FOR"/>
<property name="tokens" value="LITERAL_IF"/>
<property name="tokens" value="LITERAL_SWITCH"/>
<property name="tokens" value="LITERAL_SYNCHRONIZED"/>
<property name="tokens" value="LITERAL_TRY"/>
<property name="tokens" value="LITERAL_WHILE"/>
</module>
<module name="OuterTypeNumber"/>
<module name="LineLength">
<property name="ignorePattern" value="^ *\* *[^ ]+$"/>
<property name="max" value="150"/>
</module>
<module name="MethodCount">
<property name="maxTotal" value="40"/>
</module>
<module name="LocalFinalVariableName"/>
<module name="LocalVariableName"/>
<module name="MemberName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="MethodLength">
<property name="max" value="160"/>
<property name="countEmpty" value="false"/>
</module>
<module name="MethodName"/>
<module name="MethodParamPad"/>
<module name="ModifierOrder"/>
<module name="NeedBraces"/>
<module name="NoWhitespaceAfter">
<property name="tokens" value="ARRAY_INIT"/>
<property name="tokens" value="BNOT"/>
<property name="tokens" value="DEC"/>
<property name="tokens" value="DOT"/>
<property name="tokens" value="INC"/>
<property name="tokens" value="LNOT"/>
<property name="tokens" value="UNARY_MINUS"/>
<property name="tokens" value="UNARY_PLUS"/>
</module>
<module name="NoWhitespaceBefore"/>
<module name="NoWhitespaceBefore">
<property name="tokens" value="DOT"/>
<property name="allowLineBreaks" value="true"/>
</module>
<module name="OperatorWrap"/>
<module name="OperatorWrap">
<property name="tokens" value="ASSIGN"/>
<property name="tokens" value="DIV_ASSIGN"/>
<property name="tokens" value="PLUS_ASSIGN"/>
<property name="tokens" value="MINUS_ASSIGN"/>
<property name="tokens" value="STAR_ASSIGN"/>
<property name="tokens" value="MOD_ASSIGN"/>
<property name="tokens" value="SR_ASSIGN"/>
<property name="tokens" value="BSR_ASSIGN"/>
<property name="tokens" value="SL_ASSIGN"/>
<property name="tokens" value="BXOR_ASSIGN"/>
<property name="tokens" value="BOR_ASSIGN"/>
<property name="tokens" value="BAND_ASSIGN"/>
<property name="option" value="eol"/>
</module>
<module name="PackageName"/>
<module name="ParameterName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="ParameterNumber">
<property name="id" value="paramNum"/>
</module>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>
<module name="RedundantImport"/>
<module name="RedundantModifier"/>
<module name="RightCurly">
<property name="option" value="same"/>
</module>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<module name="StaticVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="TypeName"/>
<module name="UnusedImports"/>
<module name="UpperEll"/>
<module name="VisibilityModifier"/>
<module name="WhitespaceAfter"/>
<module name="WhitespaceAround"/>
<module name="GenericWhitespace"/>
<module name="FinalClass"/>
<module name="MissingSwitchDefault"/>
<!--module name="MagicNumber"/-->
<!--module name="Indentation">
<property name="basicOffset" value="4"/>
<property name="braceAdjustment" value="0"/>
<property name="caseIndent" value="0"/>
</module-->
<module name="ArrayTrailingComma"/>
<module name="FinalLocalVariable"/>
<module name="EqualsAvoidNull"/>
<module name="ParameterAssignment"/>
<!-- Generates quite a few errors -->
<module name="CyclomaticComplexity">
<property name="severity" value="ignore"/>
</module>
<module name="NestedForDepth">
<property name="max" value="2"/>
</module>
<module name="NestedIfDepth">
<property name="max" value="4"/>
</module>
<module name="NestedTryDepth">
<property name="max" value="2"/>
</module>
<!--module name="ExplicitInitialization"/-->
<module name="AnnotationUseStyle"/>
<module name="MissingDeprecated"/>
<module name="MissingOverride">
<property name="javaFiveCompatibility" value="true"/>
</module>
<module name="PackageAnnotation"/>
<module name="SuppressWarnings"/>
<module name="OuterTypeFilename"/>
<module name="HideUtilityClassConstructor"/>
</module>
</module>

View File

@@ -1,19 +0,0 @@
^/\*\s*$
^ \* This file is part of dependency-check-cli\.\s*$
^ \*\s*$
^ \* Dependency-check-cli is free software\: you can redistribute it and/or modify it\s*$
^ \* under the terms of the GNU General Public License as published by the Free\s*$
^ \* Software Foundation, either version 3 of the License, or \(at your option\) any\s*$
^ \* later version\.
^ \*\s*$
^ \* Dependency-check-cli is distributed in the hope that it will be useful, but\s*$
^ \* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\s*$
^ \* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more\s*$
^ \* details\.\s*$
^ \*\s*$
^ \* You should have received a copy of the GNU General Public License along with\s*$
^ \* dependency-check-cli\. If not, see http://www.gnu.org/licenses/\.\s*$
^ \*\s*$
^ \* Copyright \(c\) 201[23] (Jeremy Long|Steve Springett)\. All Rights Reserved\.\s*$
^ \*/\s*$
^package

View File

@@ -1,9 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Puppy Crawl//DTD Suppressions 1.0//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_0.dtd">
<suppressions>
<suppress checks=".*" files=".*[\\/]package-info\.java" />
</suppressions>

View File

@@ -1,35 +1,33 @@
<!--
This file is part of Dependency-Check.
Dependency-Check is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Dependency-Check is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
http://www.apache.org/licenses/LICENSE-2.0
You should have received a copy of the GNU General Public License
along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-parent</artifactId>
<version>1.0.4</version>
<version>1.2.7</version>
</parent>
<artifactId>dependency-check-cli</artifactId>
<packaging>jar</packaging>
<name>Dependency-Check Command Line</name>
<description>Dependency-Check-Maven is a Maven Plugin that attempts to detect publicly disclosed vulnerabilities contained within project dependencies. It does this by determining if there is a Common Platform Enumeration (CPE) identifier for a given dependency. If found, it will generate a report linking to the associated CVE entries.</description>
<description>dependency-check-cli is an command line tool that uses dependency-check-core to detect publicly disclosed vulnerabilities associated with the scanned project dependencies. The tool will generate a report listing the dependency, any identified Common Platform Enumeration (CPE) identifiers, and the associated Common Vulnerability and Exposure (CVE) entries.</description>
<!-- begin copy from http://minds.coremedia.com/2012/09/11/problem-solved-deploy-multi-module-maven-project-site-as-github-pages/ -->
<distributionManagement>
<site>
@@ -78,8 +76,11 @@ Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.2</version>
<version>2.6</version>
<configuration>
<instrumentation>
<ignoreTrivial>true</ignoreTrivial>
</instrumentation>
<check>
<branchRate>85</branchRate>
<lineRate>85</lineRate>
@@ -113,14 +114,9 @@ Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<version>2.16</version>
<configuration>
<systemProperties>
<property>
<name>net.sourceforge.cobertura.datafile</name>
<value>${project.build.directory}/cobertura/cobertura.ser</value>
<workingDirectory>target</workingDirectory>
</property>
<property>
<name>cpe</name>
<value>data/cpe</value>
@@ -137,9 +133,11 @@ Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<version>3.1</version>
<configuration>
<showDeprecation>false</showDeprecation>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
@@ -150,7 +148,7 @@ Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
<dependency>
<groupId>org.apache.maven.doxia</groupId>
<artifactId>doxia-module-markdown</artifactId>
<version>1.4</version>
<version>1.5</version>
</dependency>
</dependencies>
<configuration>
@@ -159,7 +157,7 @@ Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.6</version>
<version>2.7</version>
<reportSets>
<reportSet>
<reports>
@@ -174,7 +172,10 @@ Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9</version>
<version>2.9.1</version>
<configuration>
<bottom>Copyright© 2012-14 Jeremy Long. All Rights Reserved.</bottom>
</configuration>
<reportSets>
<reportSet>
<id>default</id>
@@ -187,7 +188,7 @@ Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.0</version>
<version>2.1</version>
<reportSets>
<reportSet>
<reports>
@@ -200,17 +201,17 @@ Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>2.3</version>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.2</version>
<version>2.6</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.14</version>
<version>2.16</version>
<reportSets>
<reportSet>
<reports>
@@ -246,19 +247,19 @@ Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.10</version>
<version>2.11</version>
<configuration>
<enableRulesSummary>false</enableRulesSummary>
<configLocation>${basedir}/config/checkstyle-checks.xml</configLocation>
<headerLocation>${basedir}/config/checkstyle-header.txt</headerLocation>
<suppressionsLocation>${basedir}/config/checkstyle-suppressions.xml</suppressionsLocation>
<configLocation>${basedir}/../src/main/config/checkstyle-checks.xml</configLocation>
<headerLocation>${basedir}/../src/main/config/checkstyle-header.txt</headerLocation>
<suppressionsLocation>${basedir}/../src/main/config/checkstyle-suppressions.xml</suppressionsLocation>
<suppressionsFileExpression>checkstyle.suppressions.file</suppressionsFileExpression>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.0.1</version>
<version>3.1</version>
<configuration>
<targetJdk>1.6</targetJdk>
<linkXref>true</linkXref>
@@ -266,12 +267,18 @@ Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
<excludes>
<exclude>**/generated/*.java</exclude>
</excludes>
<rulesets>
<ruleset>../src/main/config/dcrules.xml</ruleset>
<ruleset>/rulesets/java/basic.xml</ruleset>
<ruleset>/rulesets/java/imports.xml</ruleset>
<ruleset>/rulesets/java/unusedcode.xml</ruleset>
</rulesets>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.5.2</version>
<version>2.5.3</version>
</plugin>
</reportPlugins>
</configuration>
@@ -279,12 +286,12 @@ Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.4</version>
<version>1.8.1</version>
<configuration>
<programs>
<program>
<mainClass>org.owasp.dependencycheck.App</mainClass>
<name>dependency-check</name>
<id>dependency-check</id>
</program>
</programs>
<assembleDirectory>${project.build.directory}/release</assembleDirectory>
@@ -336,5 +343,10 @@ Copyright (c) 2012 - Jeremy Long. All Rights Reserved.
<artifactId>dependency-check-core</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-utils</artifactId>
<version>${project.parent.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,11 +1,11 @@
Copyright (c) 2012-2013 Jeremy Long. All rights reserved.
Licensed under the GPL License, Version 3; you may not use this work
except in compliance with the License. You may obtain a copy of the
License in the LICENSE.txt file, or at:
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.gnu.org/licenses/gpl-3.0.txt
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,

View File

@@ -2,10 +2,8 @@
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
http://maven.apache.org/xsd/assembly-1.1.2.xsd
"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
http://maven.apache.org/xsd/assembly-1.1.2.xsd"
>
<id>release</id>
<formats>

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-cli.
*
* Dependency-check-cli is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-cli is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-cli. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -22,37 +21,27 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.cli.ParseException;
import org.owasp.dependencycheck.reporting.ReportGenerator;
import org.owasp.dependencycheck.data.nvdcve.CveDB;
import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
import org.owasp.dependencycheck.data.nvdcve.DatabaseProperties;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.cli.CliParser;
import org.owasp.dependencycheck.org.apache.tools.ant.DirectoryScanner;
import org.owasp.dependencycheck.reporting.ReportGenerator;
import org.owasp.dependencycheck.utils.LogUtils;
import org.owasp.dependencycheck.utils.Settings;
/*
* This file is part of App.
*
* App is free software: you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* App is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* App. If not, see http://www.gnu.org/licenses/.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
/**
* The command line interface for the DependencyCheck application.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class App {
@@ -61,14 +50,24 @@ public class App {
*/
private static final String LOG_PROPERTIES_FILE = "log.properties";
/**
* The logger.
*/
private static final Logger LOGGER = Logger.getLogger(App.class.getName());
/**
* The main method for the application.
*
* @param args the command line arguments
*/
public static void main(String[] args) {
final App app = new App();
app.run(args);
try {
Settings.initialize();
final App app = new App();
app.run(args);
} finally {
Settings.cleanup(true);
}
}
/**
@@ -77,8 +76,8 @@ public class App {
* @param args the command line arguments
*/
public void run(String[] args) {
final CliParser cli = new CliParser();
try {
cli.parse(args);
} catch (FileNotFoundException ex) {
@@ -97,74 +96,170 @@ public class App {
if (cli.isGetVersion()) {
cli.printVersionInfo();
} else if (cli.isRunScan()) {
updateSettings(cli.isAutoUpdate(), cli.getConnectionTimeout(), cli.getProxyUrl(),
cli.getProxyPort(), cli.getDataDirectory(), cli.getPropertiesFile());
runScan(cli.getReportDirectory(), cli.getReportFormat(), cli.getApplicationName(), cli.getScanFiles());
populateSettings(cli);
try {
runScan(cli.getReportDirectory(), cli.getReportFormat(), cli.getApplicationName(), cli.getScanFiles(), cli.getExcludeList());
} catch (InvalidScanPathException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, "An invalid scan path was detected; unable to scan '//*' paths");
}
} else {
cli.printHelp();
}
}
/**
* Scans the specified directories and writes the dependency reports to the
* reportDirectory.
* Scans the specified directories and writes the dependency reports to the reportDirectory.
*
* @param reportDirectory the path to the directory where the reports will
* be written
* @param reportDirectory the path to the directory where the reports will be written
* @param outputFormat the output format of the report
* @param applicationName the application name for the report
* @param files the files/directories to scan
* @param excludes the patterns for files/directories to exclude
*
* @throws InvalidScanPathException thrown if the path to scan starts with "//"
*/
private void runScan(String reportDirectory, String outputFormat, String applicationName, String[] files) {
final Engine scanner = new Engine();
for (String file : files) {
scanner.scan(file);
}
scanner.analyzeDependencies();
final List<Dependency> dependencies = scanner.getDependencies();
final ReportGenerator report = new ReportGenerator(applicationName, dependencies, scanner.getAnalyzers());
private void runScan(String reportDirectory, String outputFormat, String applicationName, String[] files,
String[] excludes) throws InvalidScanPathException {
Engine engine = null;
try {
report.generateReports(reportDirectory, outputFormat);
} catch (IOException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, "There was an IO error while attempting to generate the report.");
Logger.getLogger(App.class.getName()).log(Level.INFO, null, ex);
} catch (Exception ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, "There was an error while attempting to generate the report.");
Logger.getLogger(App.class.getName()).log(Level.INFO, null, ex);
engine = new Engine();
List<String> antStylePaths = new ArrayList<String>();
if (excludes == null || excludes.length == 0) {
for (String file : files) {
if (file.contains("*") || file.contains("?")) {
antStylePaths.add(file);
} else {
engine.scan(file);
}
}
} else {
antStylePaths = Arrays.asList(files);
}
final Set<File> paths = new HashSet<File>();
for (String file : antStylePaths) {
final DirectoryScanner scanner = new DirectoryScanner();
String include = file.replace('\\', '/');
File baseDir;
if (include.startsWith("//")) {
throw new InvalidScanPathException("Unable to scan paths specified by //");
} else if (include.startsWith("./")) {
baseDir = new File(".");
include = include.substring(2);
} else if (include.startsWith("/")) {
baseDir = new File("/");
include = include.substring(1);
} else if (include.contains("/")) {
final int pos = include.indexOf('/');
final String tmp = include.substring(0, pos);
if (tmp.contains("*") || tmp.contains("?")) {
baseDir = new File(".");
} else {
baseDir = new File(tmp);
include = include.substring(pos + 1);
}
} else { //no path info - must just be a file in the working directory
baseDir = new File(".");
}
scanner.setBasedir(baseDir);
scanner.setIncludes(include);
if (excludes != null && excludes.length > 0) {
scanner.addExcludes(excludes);
}
scanner.scan();
if (scanner.getIncludedFilesCount() > 0) {
for (String s : scanner.getIncludedFiles()) {
final File f = new File(baseDir, s);
paths.add(f);
}
}
}
engine.scan(paths);
engine.analyzeDependencies();
final List<Dependency> dependencies = engine.getDependencies();
DatabaseProperties prop = null;
CveDB cve = null;
try {
cve = new CveDB();
cve.open();
prop = cve.getDatabaseProperties();
} catch (DatabaseException ex) {
LOGGER.log(Level.FINE, "Unable to retrieve DB Properties", ex);
} finally {
if (cve != null) {
cve.close();
}
}
final ReportGenerator report = new ReportGenerator(applicationName, dependencies, engine.getAnalyzers(), prop);
try {
report.generateReports(reportDirectory, outputFormat);
} catch (IOException ex) {
LOGGER.log(Level.SEVERE, "There was an IO error while attempting to generate the report.");
LOGGER.log(Level.FINE, null, ex);
} catch (Throwable ex) {
LOGGER.log(Level.SEVERE, "There was an error while attempting to generate the report.");
LOGGER.log(Level.FINE, null, ex);
}
} catch (DatabaseException ex) {
LOGGER.log(Level.SEVERE, "Unable to connect to the dependency-check database; analysis has stopped");
LOGGER.log(Level.FINE, "", ex);
} finally {
if (engine != null) {
engine.cleanup();
}
}
}
/**
* Updates the global Settings.
*
* @param autoUpdate whether or not to update cached web data sources
* @param connectionTimeout the timeout to use when downloading resources
* (null or blank will use default)
* @param proxyUrl the proxy url (null or blank means no proxy will be used)
* @param proxyPort the proxy port (null or blank means no port will be
* used)
* @param dataDirectory the directory to store/retrieve persistent data from
* @param propertiesFile the properties file to utilize
* @param cli a reference to the CLI Parser that contains the command line arguments used to set the corresponding
* settings in the core engine.
*/
private void updateSettings(boolean autoUpdate, String connectionTimeout, String proxyUrl,
String proxyPort, String dataDirectory, File propertiesFile) {
private void populateSettings(CliParser cli) {
final boolean autoUpdate = cli.isAutoUpdate();
final String connectionTimeout = cli.getConnectionTimeout();
final String proxyServer = cli.getProxyServer();
final String proxyPort = cli.getProxyPort();
final String proxyUser = cli.getProxyUsername();
final String proxyPass = cli.getProxyPassword();
final String dataDirectory = cli.getDataDirectory();
final File propertiesFile = cli.getPropertiesFile();
final String suppressionFile = cli.getSuppressionFile();
final boolean jarDisabled = cli.isJarDisabled();
final boolean archiveDisabled = cli.isArchiveDisabled();
final boolean assemblyDisabled = cli.isAssemblyDisabled();
final boolean nuspecDisabled = cli.isNuspecDisabled();
final boolean nexusDisabled = cli.isNexusDisabled();
final String nexusUrl = cli.getNexusUrl();
final String databaseDriverName = cli.getDatabaseDriverName();
final String databaseDriverPath = cli.getDatabaseDriverPath();
final String connectionString = cli.getConnectionString();
final String databaseUser = cli.getDatabaseUser();
final String databasePassword = cli.getDatabasePassword();
final String additionalZipExtensions = cli.getAdditionalZipExtensions();
final String pathToMono = cli.getPathToMono();
if (propertiesFile != null) {
try {
Settings.mergeProperties(propertiesFile);
} catch (FileNotFoundException ex) {
final String msg = String.format("Unable to load properties file '%s'", propertiesFile.getPath());
Logger.getLogger(App.class.getName()).log(Level.SEVERE, msg);
Logger.getLogger(App.class.getName()).log(Level.FINE, null, ex);
LOGGER.log(Level.SEVERE, msg);
LOGGER.log(Level.FINE, null, ex);
} catch (IOException ex) {
final String msg = String.format("Unable to find properties file '%s'", propertiesFile.getPath());
Logger.getLogger(App.class.getName()).log(Level.SEVERE, msg);
Logger.getLogger(App.class.getName()).log(Level.FINE, null, ex);
LOGGER.log(Level.SEVERE, msg);
LOGGER.log(Level.FINE, null, ex);
}
}
// We have to wait until we've merged the properties before attempting to set whether we use
// the proxy for Nexus since it could be disabled in the properties, but not explicitly stated
// on the command line
final boolean nexusUsesProxy = cli.isNexusUsesProxy();
if (dataDirectory != null) {
Settings.setString(Settings.KEYS.DATA_DIRECTORY, dataDirectory);
} else if (System.getProperty("basedir") != null) {
@@ -178,14 +273,56 @@ public class App {
Settings.setString(Settings.KEYS.DATA_DIRECTORY, dataDir.getAbsolutePath());
}
Settings.setBoolean(Settings.KEYS.AUTO_UPDATE, autoUpdate);
if (proxyUrl != null && !proxyUrl.isEmpty()) {
Settings.setString(Settings.KEYS.PROXY_URL, proxyUrl);
if (proxyServer != null && !proxyServer.isEmpty()) {
Settings.setString(Settings.KEYS.PROXY_SERVER, proxyServer);
}
if (proxyPort != null && !proxyPort.isEmpty()) {
Settings.setString(Settings.KEYS.PROXY_PORT, proxyPort);
}
if (proxyUser != null && !proxyUser.isEmpty()) {
Settings.setString(Settings.KEYS.PROXY_USERNAME, proxyUser);
}
if (proxyPass != null && !proxyPass.isEmpty()) {
Settings.setString(Settings.KEYS.PROXY_PASSWORD, proxyPass);
}
if (connectionTimeout != null && !connectionTimeout.isEmpty()) {
Settings.setString(Settings.KEYS.CONNECTION_TIMEOUT, connectionTimeout);
}
if (suppressionFile != null && !suppressionFile.isEmpty()) {
Settings.setString(Settings.KEYS.SUPPRESSION_FILE, suppressionFile);
}
//File Type Analyzer Settings
Settings.setBoolean(Settings.KEYS.ANALYZER_JAR_ENABLED, !jarDisabled);
Settings.setBoolean(Settings.KEYS.ANALYZER_ARCHIVE_ENABLED, !archiveDisabled);
Settings.setBoolean(Settings.KEYS.ANALYZER_NUSPEC_ENABLED, !nuspecDisabled);
Settings.setBoolean(Settings.KEYS.ANALYZER_ASSEMBLY_ENABLED, !assemblyDisabled);
Settings.setBoolean(Settings.KEYS.ANALYZER_NEXUS_ENABLED, !nexusDisabled);
if (nexusUrl != null && !nexusUrl.isEmpty()) {
Settings.setString(Settings.KEYS.ANALYZER_NEXUS_URL, nexusUrl);
}
Settings.setBoolean(Settings.KEYS.ANALYZER_NEXUS_PROXY, nexusUsesProxy);
if (databaseDriverName != null && !databaseDriverName.isEmpty()) {
Settings.setString(Settings.KEYS.DB_DRIVER_NAME, databaseDriverName);
}
if (databaseDriverPath != null && !databaseDriverPath.isEmpty()) {
Settings.setString(Settings.KEYS.DB_DRIVER_PATH, databaseDriverPath);
}
if (connectionString != null && !connectionString.isEmpty()) {
Settings.setString(Settings.KEYS.DB_CONNECTION_STRING, connectionString);
}
if (databaseUser != null && !databaseUser.isEmpty()) {
Settings.setString(Settings.KEYS.DB_USER, databaseUser);
}
if (databasePassword != null && !databasePassword.isEmpty()) {
Settings.setString(Settings.KEYS.DB_PASSWORD, databasePassword);
}
if (additionalZipExtensions != null && !additionalZipExtensions.isEmpty()) {
Settings.setString(Settings.KEYS.ADDITIONAL_ZIP_EXTENSIONS, additionalZipExtensions);
}
if (pathToMono != null && !pathToMono.isEmpty()) {
Settings.setString(Settings.KEYS.ANALYZER_ASSEMBLY_MONO_PATH, pathToMono);
}
}
}

View File

@@ -0,0 +1,924 @@
/*
* This file is part of dependency-check-cli.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.logging.Logger;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.OptionGroup;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
import org.owasp.dependencycheck.reporting.ReportGenerator.Format;
import org.owasp.dependencycheck.utils.InvalidSettingException;
import org.owasp.dependencycheck.utils.Settings;
/**
* A utility to parse command line arguments for the DependencyCheck.
*
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public final class CliParser {
/**
* The logger.
*/
private static final Logger LOGGER = Logger.getLogger(CliParser.class.getName());
/**
* The command line.
*/
private CommandLine line;
/**
* Indicates whether the arguments are valid.
*/
private boolean isValid = true;
/**
* Parses the arguments passed in and captures the results for later use.
*
* @param args the command line arguments
* @throws FileNotFoundException is thrown when a 'file' argument does not point to a file that exists.
* @throws ParseException is thrown when a Parse Exception occurs.
*/
public void parse(String[] args) throws FileNotFoundException, ParseException {
line = parseArgs(args);
if (line != null) {
validateArgs();
}
}
/**
* Parses the command line arguments.
*
* @param args the command line arguments
* @return the results of parsing the command line arguments
* @throws ParseException if the arguments are invalid
*/
private CommandLine parseArgs(String[] args) throws ParseException {
final CommandLineParser parser = new PosixParser();
final Options options = createCommandLineOptions();
return parser.parse(options, args);
}
/**
* Validates that the command line arguments are valid.
*
* @throws FileNotFoundException if there is a file specified by either the SCAN or CPE command line arguments that
* does not exist.
* @throws ParseException is thrown if there is an exception parsing the command line.
*/
private void validateArgs() throws FileNotFoundException, ParseException {
if (isRunScan()) {
validatePathExists(getScanFiles(), ARGUMENT.SCAN);
validatePathExists(getReportDirectory(), ARGUMENT.OUT);
if (getPathToMono() != null) {
validatePathExists(getPathToMono(), ARGUMENT.PATH_TO_MONO);
}
if (!line.hasOption(ARGUMENT.APP_NAME)) {
throw new ParseException("Missing 'app' argument; the scan cannot be run without the an application name.");
}
if (line.hasOption(ARGUMENT.OUTPUT_FORMAT)) {
final String format = line.getOptionValue(ARGUMENT.OUTPUT_FORMAT);
try {
Format.valueOf(format);
} catch (IllegalArgumentException ex) {
final String msg = String.format("An invalid 'format' of '%s' was specified. "
+ "Supported output formats are XML, HTML, VULN, or ALL", format);
throw new ParseException(msg);
}
}
}
}
/**
* Validates whether or not the path(s) points at a file that exists; if the path(s) does not point to an existing
* file a FileNotFoundException is thrown.
*
* @param paths the paths to validate if they exists
* @param optType the option being validated (e.g. scan, out, etc.)
* @throws FileNotFoundException is thrown if one of the paths being validated does not exist.
*/
private void validatePathExists(String[] paths, String optType) throws FileNotFoundException {
for (String path : paths) {
validatePathExists(path, optType);
}
}
/**
* Validates whether or not the path points at a file that exists; if the path does not point to an existing file a
* FileNotFoundException is thrown.
*
* @param path the paths to validate if they exists
* @param argumentName the argument being validated (e.g. scan, out, etc.)
* @throws FileNotFoundException is thrown if the path being validated does not exist.
*/
private void validatePathExists(String path, String argumentName) throws FileNotFoundException {
if (path == null) {
isValid = false;
final String msg = String.format("Invalid '%s' argument: null", argumentName);
throw new FileNotFoundException(msg);
} else if (!path.contains("*") && !path.contains("?")) {
File f = new File(path);
if ("o".equals(argumentName.substring(0, 1).toLowerCase()) && !"ALL".equals(this.getReportFormat().toUpperCase())) {
final String checkPath = path.toLowerCase();
if (checkPath.endsWith(".html") || checkPath.endsWith(".xml") || checkPath.endsWith(".htm")) {
if (f.getParentFile() == null) {
f = new File(".", path);
}
if (!f.getParentFile().isDirectory()) {
isValid = false;
final String msg = String.format("Invalid '%s' argument: '%s'", argumentName, path);
throw new FileNotFoundException(msg);
}
}
} else {
if (!f.exists()) {
isValid = false;
final String msg = String.format("Invalid '%s' argument: '%s'", argumentName, path);
throw new FileNotFoundException(msg);
}
}
} else if (path.startsWith("//") || path.startsWith("\\\\")) {
isValid = false;
final String msg = String.format("Invalid '%s' argument: '%s'%nUnable to scan paths that start with '//'.", argumentName, path);
throw new FileNotFoundException(msg);
}
}
/**
* Generates an Options collection that is used to parse the command line and to display the help message.
*
* @return the command line options used for parsing the command line
*/
@SuppressWarnings("static-access")
private Options createCommandLineOptions() {
final Options options = new Options();
addStandardOptions(options);
addAdvancedOptions(options);
addDeprecatedOptions(options);
return options;
}
/**
* Adds the standard command line options to the given options collection.
*
* @param options a collection of command line arguments
* @throws IllegalArgumentException thrown if there is an exception
*/
@SuppressWarnings("static-access")
private void addStandardOptions(final Options options) throws IllegalArgumentException {
final Option help = new Option(ARGUMENT.HELP_SHORT, ARGUMENT.HELP, false,
"Print this message.");
final Option advancedHelp = OptionBuilder.withLongOpt(ARGUMENT.ADVANCED_HELP)
.withDescription("Print the advanced help message.").create();
final Option version = new Option(ARGUMENT.VERSION_SHORT, ARGUMENT.VERSION,
false, "Print the version information.");
final Option noUpdate = new Option(ARGUMENT.DISABLE_AUTO_UPDATE_SHORT, ARGUMENT.DISABLE_AUTO_UPDATE,
false, "Disables the automatic updating of the CPE data.");
final Option appName = OptionBuilder.withArgName("name").hasArg().withLongOpt(ARGUMENT.APP_NAME)
.withDescription("The name of the application being scanned. This is a required argument.")
.create(ARGUMENT.APP_NAME_SHORT);
final Option path = OptionBuilder.withArgName("path").hasArg().withLongOpt(ARGUMENT.SCAN)
.withDescription("The path to scan - this option can be specified multiple times. Ant style"
+ " paths are supported (e.g. path/**/*.jar).")
.create(ARGUMENT.SCAN_SHORT);
final Option excludes = OptionBuilder.withArgName("pattern").hasArg().withLongOpt(ARGUMENT.EXCLUDE)
.withDescription("Specify and exclusion pattern. This option can be specified multiple times"
+ " and it accepts Ant style excludsions.")
.create();
final Option props = OptionBuilder.withArgName("file").hasArg().withLongOpt(ARGUMENT.PROP)
.withDescription("A property file to load.")
.create(ARGUMENT.PROP_SHORT);
final Option out = OptionBuilder.withArgName("path").hasArg().withLongOpt(ARGUMENT.OUT)
.withDescription("The folder to write reports to. This defaults to the current directory. "
+ "It is possible to set this to a specific file name if the format argument is not set to ALL.")
.create(ARGUMENT.OUT_SHORT);
final Option outputFormat = OptionBuilder.withArgName("format").hasArg().withLongOpt(ARGUMENT.OUTPUT_FORMAT)
.withDescription("The output format to write to (XML, HTML, VULN, ALL). The default is HTML.")
.create(ARGUMENT.OUTPUT_FORMAT_SHORT);
final Option verboseLog = OptionBuilder.withArgName("file").hasArg().withLongOpt(ARGUMENT.VERBOSE_LOG)
.withDescription("The file path to write verbose logging information.")
.create(ARGUMENT.VERBOSE_LOG_SHORT);
final Option suppressionFile = OptionBuilder.withArgName("file").hasArg().withLongOpt(ARGUMENT.SUPPRESSION_FILE)
.withDescription("The file path to the suppression XML file.")
.create();
//This is an option group because it can be specified more then once.
final OptionGroup og = new OptionGroup();
og.addOption(path);
final OptionGroup exog = new OptionGroup();
exog.addOption(excludes);
options.addOptionGroup(og)
.addOptionGroup(exog)
.addOption(out)
.addOption(outputFormat)
.addOption(appName)
.addOption(version)
.addOption(help)
.addOption(advancedHelp)
.addOption(noUpdate)
.addOption(props)
.addOption(verboseLog)
.addOption(suppressionFile);
}
/**
* Adds the advanced command line options to the given options collection. These are split out for purposes of being
* able to display two different help messages.
*
* @param options a collection of command line arguments
* @throws IllegalArgumentException thrown if there is an exception
*/
@SuppressWarnings("static-access")
private void addAdvancedOptions(final Options options) throws IllegalArgumentException {
final Option data = OptionBuilder.withArgName("path").hasArg().withLongOpt(ARGUMENT.DATA_DIRECTORY)
.withDescription("The location of the H2 Database file. This option should generally not be set.")
.create(ARGUMENT.DATA_DIRECTORY_SHORT);
final Option connectionTimeout = OptionBuilder.withArgName("timeout").hasArg().withLongOpt(ARGUMENT.CONNECTION_TIMEOUT)
.withDescription("The connection timeout (in milliseconds) to use when downloading resources.")
.create(ARGUMENT.CONNECTION_TIMEOUT_SHORT);
final Option proxyServer = OptionBuilder.withArgName("server").hasArg().withLongOpt(ARGUMENT.PROXY_SERVER)
.withDescription("The proxy server to use when downloading resources.")
.create();
final Option proxyPort = OptionBuilder.withArgName("port").hasArg().withLongOpt(ARGUMENT.PROXY_PORT)
.withDescription("The proxy port to use when downloading resources.")
.create();
final Option proxyUsername = OptionBuilder.withArgName("user").hasArg().withLongOpt(ARGUMENT.PROXY_USERNAME)
.withDescription("The proxy username to use when downloading resources.")
.create();
final Option proxyPassword = OptionBuilder.withArgName("pass").hasArg().withLongOpt(ARGUMENT.PROXY_PASSWORD)
.withDescription("The proxy password to use when downloading resources.")
.create();
final Option connectionString = OptionBuilder.withArgName("connStr").hasArg().withLongOpt(ARGUMENT.CONNECTION_STRING)
.withDescription("The connection string to the database.")
.create();
final Option dbUser = OptionBuilder.withArgName("user").hasArg().withLongOpt(ARGUMENT.DB_NAME)
.withDescription("The username used to connect to the database.")
.create();
final Option dbPassword = OptionBuilder.withArgName("password").hasArg().withLongOpt(ARGUMENT.DB_PASSWORD)
.withDescription("The password for connecting to the database.")
.create();
final Option dbDriver = OptionBuilder.withArgName("driver").hasArg().withLongOpt(ARGUMENT.DB_DRIVER)
.withDescription("The database driver name.")
.create();
final Option dbDriverPath = OptionBuilder.withArgName("path").hasArg().withLongOpt(ARGUMENT.DB_DRIVER_PATH)
.withDescription("The path to the database driver; note, this does not need to be set unless the JAR is outside of the classpath.")
.create();
final Option disableJarAnalyzer = OptionBuilder.withLongOpt(ARGUMENT.DISABLE_JAR)
.withDescription("Disable the Jar Analyzer.")
.create();
final Option disableArchiveAnalyzer = OptionBuilder.withLongOpt(ARGUMENT.DISABLE_ARCHIVE)
.withDescription("Disable the Archive Analyzer.")
.create();
final Option disableNuspecAnalyzer = OptionBuilder.withLongOpt(ARGUMENT.DISABLE_NUSPEC)
.withDescription("Disable the Nuspec Analyzer.")
.create();
final Option disableAssemblyAnalyzer = OptionBuilder.withLongOpt(ARGUMENT.DISABLE_ASSEMBLY)
.withDescription("Disable the .NET Assembly Analyzer.")
.create();
final Option disableNexusAnalyzer = OptionBuilder.withLongOpt(ARGUMENT.DISABLE_NEXUS)
.withDescription("Disable the Nexus Analyzer.")
.create();
final Option nexusUrl = OptionBuilder.withArgName("url").hasArg().withLongOpt(ARGUMENT.NEXUS_URL)
.withDescription("The url to the Nexus Pro Server. If not set the Nexus Analyzer will be disabled.")
.create();
final Option nexusUsesProxy = OptionBuilder.withArgName("true/false").hasArg().withLongOpt(ARGUMENT.NEXUS_USES_PROXY)
.withDescription("Whether or not the configured proxy should be used when connecting to Nexus.")
.create();
final Option additionalZipExtensions = OptionBuilder.withArgName("extensions").hasArg()
.withLongOpt(ARGUMENT.ADDITIONAL_ZIP_EXTENSIONS)
.withDescription("A comma separated list of additional extensions to be scanned as ZIP files "
+ "(ZIP, EAR, WAR are already treated as zip files)")
.create();
final Option pathToMono = OptionBuilder.withArgName("path").hasArg().withLongOpt(ARGUMENT.PATH_TO_MONO)
.withDescription("The path to Mono for .NET Assembly analysis on non-windows systems.")
.create();
options.addOption(proxyPort)
.addOption(proxyServer)
.addOption(proxyUsername)
.addOption(proxyPassword)
.addOption(connectionTimeout)
.addOption(connectionString)
.addOption(dbUser)
.addOption(data)
.addOption(dbPassword)
.addOption(dbDriver)
.addOption(dbDriverPath)
.addOption(disableJarAnalyzer)
.addOption(disableArchiveAnalyzer)
.addOption(disableAssemblyAnalyzer)
.addOption(disableNuspecAnalyzer)
.addOption(disableNexusAnalyzer)
.addOption(nexusUrl)
.addOption(nexusUsesProxy)
.addOption(additionalZipExtensions)
.addOption(pathToMono);
}
/**
* Adds the deprecated command line options to the given options collection. These are split out for purposes of not
* including them in the help message. We need to add the deprecated options so as not to break existing scripts.
*
* @param options a collection of command line arguments
* @throws IllegalArgumentException thrown if there is an exception
*/
@SuppressWarnings("static-access")
private void addDeprecatedOptions(final Options options) throws IllegalArgumentException {
final Option proxyServer = OptionBuilder.withArgName("url").hasArg().withLongOpt(ARGUMENT.PROXY_URL)
.withDescription("The proxy url argument is deprecated, use proxyserver instead.")
.create();
options.addOption(proxyServer);
}
/**
* Determines if the 'version' command line argument was passed in.
*
* @return whether or not the 'version' command line argument was passed in
*/
public boolean isGetVersion() {
return (line != null) && line.hasOption(ARGUMENT.VERSION);
}
/**
* Determines if the 'help' command line argument was passed in.
*
* @return whether or not the 'help' command line argument was passed in
*/
public boolean isGetHelp() {
return (line != null) && line.hasOption(ARGUMENT.HELP);
}
/**
* Determines if the 'scan' command line argument was passed in.
*
* @return whether or not the 'scan' command line argument was passed in
*/
public boolean isRunScan() {
return (line != null) && isValid && line.hasOption(ARGUMENT.SCAN);
}
/**
* Returns true if the disableJar command line argument was specified.
*
* @return true if the disableJar command line argument was specified; otherwise false
*/
public boolean isJarDisabled() {
return (line != null) && line.hasOption(ARGUMENT.DISABLE_JAR);
}
/**
* Returns true if the disableArchive command line argument was specified.
*
* @return true if the disableArchive command line argument was specified; otherwise false
*/
public boolean isArchiveDisabled() {
return (line != null) && line.hasOption(ARGUMENT.DISABLE_ARCHIVE);
}
/**
* Returns true if the disableNuspec command line argument was specified.
*
* @return true if the disableNuspec command line argument was specified; otherwise false
*/
public boolean isNuspecDisabled() {
return (line != null) && line.hasOption(ARGUMENT.DISABLE_NUSPEC);
}
/**
* Returns true if the disableAssembly command line argument was specified.
*
* @return true if the disableAssembly command line argument was specified; otherwise false
*/
public boolean isAssemblyDisabled() {
return (line != null) && line.hasOption(ARGUMENT.DISABLE_ASSEMBLY);
}
/**
* Returns true if the disableNexus command line argument was specified.
*
* @return true if the disableNexus command line argument was specified; otherwise false
*/
public boolean isNexusDisabled() {
return (line != null) && line.hasOption(ARGUMENT.DISABLE_NEXUS);
}
/**
* Returns the url to the nexus server if one was specified.
*
* @return the url to the nexus server; if none was specified this will return null;
*/
public String getNexusUrl() {
if (line == null || !line.hasOption(ARGUMENT.NEXUS_URL)) {
return null;
} else {
return line.getOptionValue(ARGUMENT.NEXUS_URL);
}
}
/**
* Returns true if the Nexus Analyzer should use the configured proxy to connect to Nexus; otherwise false is
* returned.
*
* @return true if the Nexus Analyzer should use the configured proxy to connect to Nexus; otherwise false
*/
public boolean isNexusUsesProxy() {
// If they didn't specify whether Nexus needs to use the proxy, we should
// still honor the property if it's set.
if (line == null || !line.hasOption(ARGUMENT.NEXUS_USES_PROXY)) {
try {
return Settings.getBoolean(Settings.KEYS.ANALYZER_NEXUS_PROXY);
} catch (InvalidSettingException ise) {
return true;
}
} else {
return Boolean.parseBoolean(line.getOptionValue(ARGUMENT.NEXUS_USES_PROXY));
}
}
/**
* Displays the command line help message to the standard output.
*/
public void printHelp() {
final HelpFormatter formatter = new HelpFormatter();
final Options options = new Options();
addStandardOptions(options);
if (line != null && line.hasOption(ARGUMENT.ADVANCED_HELP)) {
addAdvancedOptions(options);
}
final String helpMsg = String.format("%n%s"
+ " can be used to identify if there are any known CVE vulnerabilities in libraries utilized by an application. "
+ "%s will automatically update required data from the Internet, such as the CVE and CPE data files from nvd.nist.gov.%n%n",
Settings.getString("application.name", "DependencyCheck"),
Settings.getString("application.name", "DependencyCheck"));
formatter.printHelp(Settings.getString("application.name", "DependencyCheck"),
helpMsg,
options,
"",
true);
}
/**
* Retrieves the file command line parameter(s) specified for the 'scan' argument.
*
* @return the file paths specified on the command line for scan
*/
public String[] getScanFiles() {
return line.getOptionValues(ARGUMENT.SCAN);
}
/**
* Retrieves the list of excluded file patterns specified by the 'exclude' argument.
*
* @return the excluded file patterns
*/
public String[] getExcludeList() {
return line.getOptionValues(ARGUMENT.EXCLUDE);
}
/**
* Returns the directory to write the reports to specified on the command line.
*
* @return the path to the reports directory.
*/
public String getReportDirectory() {
return line.getOptionValue(ARGUMENT.OUT, ".");
}
/**
* Returns the path to Mono for .NET Assembly analysis on non-windows systems.
*
* @return the path to Mono
*/
public String getPathToMono() {
return line.getOptionValue(ARGUMENT.PATH_TO_MONO);
}
/**
* Returns the output format specified on the command line. Defaults to HTML if no format was specified.
*
* @return the output format name.
*/
public String getReportFormat() {
return line.getOptionValue(ARGUMENT.OUTPUT_FORMAT, "HTML");
}
/**
* Returns the application name specified on the command line.
*
* @return the application name.
*/
public String getApplicationName() {
return line.getOptionValue(ARGUMENT.APP_NAME);
}
/**
* Returns the connection timeout.
*
* @return the connection timeout
*/
public String getConnectionTimeout() {
return line.getOptionValue(ARGUMENT.CONNECTION_TIMEOUT);
}
/**
* Returns the proxy server.
*
* @return the proxy server
*/
public String getProxyServer() {
String server = line.getOptionValue(ARGUMENT.PROXY_SERVER);
if (server == null) {
server = line.getOptionValue(ARGUMENT.PROXY_URL);
if (server != null) {
LOGGER.warning("An old command line argument 'proxyurl' was detected; use proxyserver instead");
}
}
return server;
}
/**
* Returns the proxy port.
*
* @return the proxy port
*/
public String getProxyPort() {
return line.getOptionValue(ARGUMENT.PROXY_PORT);
}
/**
* Returns the proxy username.
*
* @return the proxy username
*/
public String getProxyUsername() {
return line.getOptionValue(ARGUMENT.PROXY_USERNAME);
}
/**
* Returns the proxy password.
*
* @return the proxy password
*/
public String getProxyPassword() {
return line.getOptionValue(ARGUMENT.PROXY_PASSWORD);
}
/**
* Get the value of dataDirectory.
*
* @return the value of dataDirectory
*/
public String getDataDirectory() {
return line.getOptionValue(ARGUMENT.DATA_DIRECTORY);
}
/**
* Returns the properties file specified on the command line.
*
* @return the properties file specified on the command line
*/
public File getPropertiesFile() {
final String path = line.getOptionValue(ARGUMENT.PROP);
if (path != null) {
return new File(path);
}
return null;
}
/**
* Returns the path to the verbose log file.
*
* @return the path to the verbose log file
*/
public String getVerboseLog() {
return line.getOptionValue(ARGUMENT.VERBOSE_LOG);
}
/**
* Returns the path to the suppression file.
*
* @return the path to the suppression file
*/
public String getSuppressionFile() {
return line.getOptionValue(ARGUMENT.SUPPRESSION_FILE);
}
/**
* <p>
* Prints the manifest information to standard output.</p>
* <ul><li>Implementation-Title: ${pom.name}</li>
* <li>Implementation-Version: ${pom.version}</li></ul>
*/
public void printVersionInfo() {
final String version = String.format("%s version %s",
Settings.getString(Settings.KEYS.APPLICATION_VAME, "dependency-check"),
Settings.getString(Settings.KEYS.APPLICATION_VERSION, "Unknown"));
System.out.println(version);
}
/**
* Checks if the auto update feature has been disabled. If it has been disabled via the command line this will
* return false.
*
* @return if auto-update is allowed.
*/
public boolean isAutoUpdate() {
return (line == null) || !line.hasOption(ARGUMENT.DISABLE_AUTO_UPDATE);
}
/**
* Returns the database driver name if specified; otherwise null is returned.
*
* @return the database driver name if specified; otherwise null is returned
*/
public String getDatabaseDriverName() {
return line.getOptionValue(ARGUMENT.DB_DRIVER);
}
/**
* Returns the database driver path if specified; otherwise null is returned.
*
* @return the database driver name if specified; otherwise null is returned
*/
public String getDatabaseDriverPath() {
return line.getOptionValue(ARGUMENT.DB_DRIVER_PATH);
}
/**
* Returns the database connection string if specified; otherwise null is returned.
*
* @return the database connection string if specified; otherwise null is returned
*/
public String getConnectionString() {
return line.getOptionValue(ARGUMENT.CONNECTION_STRING);
}
/**
* Returns the database database user name if specified; otherwise null is returned.
*
* @return the database database user name if specified; otherwise null is returned
*/
public String getDatabaseUser() {
return line.getOptionValue(ARGUMENT.DB_NAME);
}
/**
* Returns the database database password if specified; otherwise null is returned.
*
* @return the database database password if specified; otherwise null is returned
*/
public String getDatabasePassword() {
return line.getOptionValue(ARGUMENT.DB_PASSWORD);
}
/**
* Returns the additional Extensions if specified; otherwise null is returned.
*
* @return the additional Extensions; otherwise null is returned
*/
public String getAdditionalZipExtensions() {
return line.getOptionValue(ARGUMENT.ADDITIONAL_ZIP_EXTENSIONS);
}
/**
* A collection of static final strings that represent the possible command line arguments.
*/
public static class ARGUMENT {
/**
* The long CLI argument name specifying the directory/file to scan.
*/
public static final String SCAN = "scan";
/**
* The short CLI argument name specifying the directory/file to scan.
*/
public static final String SCAN_SHORT = "s";
/**
* The long CLI argument name specifying that the CPE/CVE/etc. data should not be automatically updated.
*/
public static final String DISABLE_AUTO_UPDATE = "noupdate";
/**
* The short CLI argument name specifying that the CPE/CVE/etc. data should not be automatically updated.
*/
public static final String DISABLE_AUTO_UPDATE_SHORT = "n";
/**
* The long CLI argument name specifying the directory to write the reports to.
*/
public static final String OUT = "out";
/**
* The short CLI argument name specifying the directory to write the reports to.
*/
public static final String OUT_SHORT = "o";
/**
* The long CLI argument name specifying the output format to write the reports to.
*/
public static final String OUTPUT_FORMAT = "format";
/**
* The short CLI argument name specifying the output format to write the reports to.
*/
public static final String OUTPUT_FORMAT_SHORT = "f";
/**
* The long CLI argument name specifying the name of the application to be scanned.
*/
public static final String APP_NAME = "app";
/**
* The short CLI argument name specifying the name of the application to be scanned.
*/
public static final String APP_NAME_SHORT = "a";
/**
* The long CLI argument name asking for help.
*/
public static final String HELP = "help";
/**
* The long CLI argument name asking for advanced help.
*/
public static final String ADVANCED_HELP = "advancedHelp";
/**
* The short CLI argument name asking for help.
*/
public static final String HELP_SHORT = "h";
/**
* The long CLI argument name asking for the version.
*/
public static final String VERSION_SHORT = "v";
/**
* The short CLI argument name asking for the version.
*/
public static final String VERSION = "version";
/**
* The CLI argument name indicating the proxy port.
*/
public static final String PROXY_PORT = "proxyport";
/**
* The CLI argument name indicating the proxy server.
*/
public static final String PROXY_SERVER = "proxyserver";
/**
* The CLI argument name indicating the proxy url.
*
* @deprecated use {@link org.owasp.dependencycheck.cli.CliParser.ArgumentName#PROXY_SERVER} instead
*/
@Deprecated
public static final String PROXY_URL = "proxyurl";
/**
* The CLI argument name indicating the proxy username.
*/
public static final String PROXY_USERNAME = "proxyuser";
/**
* The CLI argument name indicating the proxy password.
*/
public static final String PROXY_PASSWORD = "proxypass";
/**
* The short CLI argument name indicating the connection timeout.
*/
public static final String CONNECTION_TIMEOUT_SHORT = "c";
/**
* The CLI argument name indicating the connection timeout.
*/
public static final String CONNECTION_TIMEOUT = "connectiontimeout";
/**
* The short CLI argument name for setting the location of an additional properties file.
*/
public static final String PROP_SHORT = "P";
/**
* The CLI argument name for setting the location of an additional properties file.
*/
public static final String PROP = "propertyfile";
/**
* The CLI argument name for setting the location of the data directory.
*/
public static final String DATA_DIRECTORY = "data";
/**
* The short CLI argument name for setting the location of the data directory.
*/
public static final String DATA_DIRECTORY_SHORT = "d";
/**
* The CLI argument name for setting the location of the data directory.
*/
public static final String VERBOSE_LOG = "log";
/**
* The short CLI argument name for setting the location of the data directory.
*/
public static final String VERBOSE_LOG_SHORT = "l";
/**
* The CLI argument name for setting the location of the suppression file.
*/
public static final String SUPPRESSION_FILE = "suppression";
/**
* Disables the Jar Analyzer.
*/
public static final String DISABLE_JAR = "disableJar";
/**
* Disables the Archive Analyzer.
*/
public static final String DISABLE_ARCHIVE = "disableArchive";
/**
* Disables the Assembly Analyzer.
*/
public static final String DISABLE_ASSEMBLY = "disableAssembly";
/**
* Disables the Nuspec Analyzer.
*/
public static final String DISABLE_NUSPEC = "disableNuspec";
/**
* Disables the Nexus Analyzer.
*/
public static final String DISABLE_NEXUS = "disableNexus";
/**
* The URL of the nexus server.
*/
public static final String NEXUS_URL = "nexus";
/**
* Whether or not the defined proxy should be used when connecting to Nexus.
*/
public static final String NEXUS_USES_PROXY = "nexusUsesProxy";
/**
* The CLI argument name for setting the connection string.
*/
public static final String CONNECTION_STRING = "connectionString";
/**
* The CLI argument name for setting the database user name.
*/
public static final String DB_NAME = "dbUser";
/**
* The CLI argument name for setting the database password.
*/
public static final String DB_PASSWORD = "dbPassword";
/**
* The CLI argument name for setting the database driver name.
*/
public static final String DB_DRIVER = "dbDriverName";
/**
* The CLI argument name for setting the path to the database driver; in case it is not on the class path.
*/
public static final String DB_DRIVER_PATH = "dbDriverPath";
/**
* The CLI argument name for setting the path to mono for .NET Assembly analysis on non-windows systems.
*/
public static final String PATH_TO_MONO = "mono";
/**
* The CLI argument name for setting extra extensions.
*/
public static final String ADDITIONAL_ZIP_EXTENSIONS = "zipExtensions";
/**
* Exclude path argument.
*/
public static final String EXCLUDE = "exclude";
}
}

View File

@@ -0,0 +1,61 @@
/*
* This file is part of dependency-check-cli.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2014 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck;
/**
* Thrown if an invalid path is encountered.
*
* @author Jeremy Long <jeremy.long@owasp.org>
*/
class InvalidScanPathException extends Exception {
/**
* Creates a new InvalidScanPathException.
*/
public InvalidScanPathException() {
super();
}
/**
* Creates a new InvalidScanPathException.
*
* @param msg a message for the exception
*/
public InvalidScanPathException(String msg) {
super(msg);
}
/**
* Creates a new InvalidScanPathException.
*
* @param ex the cause of the exception
*/
public InvalidScanPathException(Throwable ex) {
super(ex);
}
/**
* Creates a new InvalidScanPathException.
*
* @param msg a message for the exception
* @param ex the cause of the exception
*/
public InvalidScanPathException(String msg, Throwable ex) {
super(msg, ex);
}
}

View File

@@ -1,509 +0,0 @@
/*
* This file is part of dependency-check-cli.
*
* Dependency-check-cli is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* Dependency-check-cli is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-cli. If not, see http://www.gnu.org/licenses/.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.cli;
import java.io.File;
import java.io.FileNotFoundException;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.OptionGroup;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
import org.owasp.dependencycheck.reporting.ReportGenerator.Format;
import org.owasp.dependencycheck.utils.Settings;
/**
* A utility to parse command line arguments for the DependencyCheck.
*
* @author Jeremy Long (jeremy.long@owasp.org)
*/
public final class CliParser {
/**
* The command line.
*/
private CommandLine line;
/**
* The options for the command line parser.
*/
private final Options options = createCommandLineOptions();
/**
* Indicates whether the arguments are valid.
*/
private boolean isValid = true;
/**
* Parses the arguments passed in and captures the results for later use.
*
* @param args the command line arguments
* @throws FileNotFoundException is thrown when a 'file' argument does not
* point to a file that exists.
* @throws ParseException is thrown when a Parse Exception occurs.
*/
public void parse(String[] args) throws FileNotFoundException, ParseException {
line = parseArgs(args);
if (line != null) {
validateArgs();
}
}
/**
* Parses the command line arguments.
*
* @param args the command line arguments
* @return the results of parsing the command line arguments
* @throws ParseException if the arguments are invalid
*/
private CommandLine parseArgs(String[] args) throws ParseException {
final CommandLineParser parser = new PosixParser();
return parser.parse(options, args);
}
/**
* Validates that the command line arguments are valid.
*
* @throws FileNotFoundException if there is a file specified by either the
* SCAN or CPE command line arguments that does not exist.
* @throws ParseException is thrown if there is an exception parsing the
* command line.
*/
private void validateArgs() throws FileNotFoundException, ParseException {
if (isRunScan()) {
validatePathExists(getScanFiles(), "scan");
validatePathExists(getReportDirectory(), "out");
if (!line.hasOption(ArgumentName.APP_NAME)) {
throw new ParseException("Missing 'app' argument; the scan cannot be run without the an application name.");
}
if (line.hasOption(ArgumentName.OUTPUT_FORMAT)) {
final String format = line.getOptionValue(ArgumentName.OUTPUT_FORMAT);
try {
Format.valueOf(format);
} catch (IllegalArgumentException ex) {
final String msg = String.format("An invalid 'format' of '%s' was specified. Supported output formats are XML, HTML, VULN, or ALL", format);
throw new ParseException(msg);
}
}
}
}
/**
* Validates whether or not the path(s) points at a file that exists; if the
* path(s) does not point to an existing file a FileNotFoundException is
* thrown.
*
* @param paths the paths to validate if they exists
* @param optType the option being validated (e.g. scan, out, etc.)
* @throws FileNotFoundException is thrown if one of the paths being
* validated does not exist.
*/
private void validatePathExists(String[] paths, String optType) throws FileNotFoundException {
for (String path : paths) {
validatePathExists(path, optType);
}
}
/**
* Validates whether or not the path points at a file that exists; if the
* path does not point to an existing file a FileNotFoundException is
* thrown.
*
* @param path the paths to validate if they exists
* @param optType the option being validated (e.g. scan, out, etc.)
* @throws FileNotFoundException is thrown if the path being validated does
* not exist.
*/
private void validatePathExists(String path, String optType) throws FileNotFoundException {
final File f = new File(path);
if (!f.exists()) {
isValid = false;
final String msg = String.format("Invalid '%s' argument: '%s'", optType, path);
throw new FileNotFoundException(msg);
}
}
/**
* Generates an Options collection that is used to parse the command line
* and to display the help message.
*
* @return the command line options used for parsing the command line
*/
@SuppressWarnings("static-access")
private Options createCommandLineOptions() {
final Option help = new Option(ArgumentName.HELP_SHORT, ArgumentName.HELP, false,
"Print this message.");
final Option version = new Option(ArgumentName.VERSION_SHORT, ArgumentName.VERSION,
false, "Print the version information.");
final Option noUpdate = new Option(ArgumentName.DISABLE_AUTO_UPDATE_SHORT, ArgumentName.DISABLE_AUTO_UPDATE,
false, "Disables the automatic updating of the CPE data.");
final Option appName = OptionBuilder.withArgName("name").hasArg().withLongOpt(ArgumentName.APP_NAME)
.withDescription("The name of the application being scanned. This is a required argument.")
.create(ArgumentName.APP_NAME_SHORT);
final Option connectionTimeout = OptionBuilder.withArgName("timeout").hasArg().withLongOpt(ArgumentName.CONNECTION_TIMEOUT)
.withDescription("The connection timeout (in milliseconds) to use when downloading resources.")
.create(ArgumentName.CONNECTION_TIMEOUT_SHORT);
final Option proxyUrl = OptionBuilder.withArgName("url").hasArg().withLongOpt(ArgumentName.PROXY_URL)
.withDescription("The proxy url to use when downloading resources.")
.create(ArgumentName.PROXY_URL_SHORT);
final Option proxyPort = OptionBuilder.withArgName("port").hasArg().withLongOpt(ArgumentName.PROXY_PORT)
.withDescription("The proxy port to use when downloading resources.")
.create(ArgumentName.PROXY_PORT_SHORT);
final Option path = OptionBuilder.withArgName("path").hasArg().withLongOpt(ArgumentName.SCAN)
.withDescription("The path to scan - this option can be specified multiple times.")
.create(ArgumentName.SCAN_SHORT);
final Option props = OptionBuilder.withArgName("file").hasArg().withLongOpt(ArgumentName.PROP)
.withDescription("A property file to load.")
.create(ArgumentName.PROP_SHORT);
final Option data = OptionBuilder.withArgName("path").hasArg().withLongOpt(ArgumentName.DATA_DIRECTORY)
.withDescription("The location of the data directory used to store persistent data. This option should generally not be set.")
.create(ArgumentName.DATA_DIRECTORY_SHORT);
final Option out = OptionBuilder.withArgName("folder").hasArg().withLongOpt(ArgumentName.OUT)
.withDescription("The folder to write reports to. This defaults to the current directory.")
.create(ArgumentName.OUT_SHORT);
final Option outputFormat = OptionBuilder.withArgName("format").hasArg().withLongOpt(ArgumentName.OUTPUT_FORMAT)
.withDescription("The output format to write to (XML, HTML, VULN, ALL). The default is HTML.")
.create(ArgumentName.OUTPUT_FORMAT_SHORT);
final Option verboseLog = OptionBuilder.withArgName("file").hasArg().withLongOpt(ArgumentName.VERBOSE_LOG)
.withDescription("The file path to write verbose logging information.")
.create(ArgumentName.VERBOSE_LOG_SHORT);
final OptionGroup og = new OptionGroup();
og.addOption(path);
final Options opts = new Options();
opts.addOptionGroup(og);
opts.addOption(out);
opts.addOption(outputFormat);
opts.addOption(appName);
opts.addOption(version);
opts.addOption(help);
opts.addOption(noUpdate);
opts.addOption(props);
opts.addOption(data);
opts.addOption(verboseLog);
opts.addOption(proxyPort);
opts.addOption(proxyUrl);
opts.addOption(connectionTimeout);
return opts;
}
/**
* Determines if the 'version' command line argument was passed in.
*
* @return whether or not the 'version' command line argument was passed in
*/
public boolean isGetVersion() {
return (line != null) && line.hasOption(ArgumentName.VERSION);
}
/**
* Determines if the 'help' command line argument was passed in.
*
* @return whether or not the 'help' command line argument was passed in
*/
public boolean isGetHelp() {
return (line != null) && line.hasOption(ArgumentName.HELP);
}
/**
* Determines if the 'scan' command line argument was passed in.
*
* @return whether or not the 'scan' command line argument was passed in
*/
public boolean isRunScan() {
return (line != null) && isValid && line.hasOption(ArgumentName.SCAN);
}
/**
* Displays the command line help message to the standard output.
*/
public void printHelp() {
final HelpFormatter formatter = new HelpFormatter();
final String nl = System.getProperty("line.separator");
formatter.printHelp(Settings.getString("application.name", "DependencyCheck"),
nl + Settings.getString("application.name", "DependencyCheck")
+ " can be used to identify if there are any known CVE vulnerabilities in libraries utilized by an application. "
+ Settings.getString("application.name", "DependencyCheck")
+ " will automatically update required data from the Internet, such as the CVE and CPE data files from nvd.nist.gov." + nl + nl,
options,
"",
true);
}
/**
* Retrieves the file command line parameter(s) specified for the 'scan'
* argument.
*
* @return the file paths specified on the command line for scan
*/
public String[] getScanFiles() {
return line.getOptionValues(ArgumentName.SCAN);
}
/**
* Returns the directory to write the reports to specified on the command
* line.
*
* @return the path to the reports directory.
*/
public String getReportDirectory() {
return line.getOptionValue(ArgumentName.OUT, ".");
}
/**
* Returns the output format specified on the command line. Defaults to HTML
* if no format was specified.
*
* @return the output format name.
*/
public String getReportFormat() {
return line.getOptionValue(ArgumentName.OUTPUT_FORMAT, "HTML");
}
/**
* Returns the application name specified on the command line.
*
* @return the application name.
*/
public String getApplicationName() {
return line.getOptionValue(ArgumentName.APP_NAME);
}
/**
* Returns the connection timeout.
*
* @return the connection timeout
*/
public String getConnectionTimeout() {
return line.getOptionValue(ArgumentName.CONNECTION_TIMEOUT);
}
/**
* Returns the proxy url.
*
* @return the proxy url
*/
public String getProxyUrl() {
return line.getOptionValue(ArgumentName.PROXY_URL);
}
/**
* Returns the proxy port.
*
* @return the proxy port
*/
public String getProxyPort() {
return line.getOptionValue(ArgumentName.PROXY_PORT);
}
/**
* Get the value of dataDirectory.
*
* @return the value of dataDirectory
*/
public String getDataDirectory() {
return line.getOptionValue(ArgumentName.DATA_DIRECTORY);
}
/**
* Returns the properties file specified on the command line.
*
* @return the properties file specified on the command line
*/
public File getPropertiesFile() {
final String path = line.getOptionValue(ArgumentName.PROP);
if (path != null) {
return new File(path);
}
return null;
}
/**
* Returns the path to the verbose log file.
*
* @return the path to the verbose log file
*/
public String getVerboseLog() {
return line.getOptionValue(ArgumentName.VERBOSE_LOG);
}
/**
* <p>Prints the manifest information to standard output.</p>
* <ul><li>Implementation-Title: ${pom.name}</li>
* <li>Implementation-Version: ${pom.version}</li></ul>
*/
public void printVersionInfo() {
final String version = String.format("%s version %s",
Settings.getString("application.name", "DependencyCheck"),
Settings.getString("application.version", "Unknown"));
System.out.println(version);
}
/**
* Checks if the auto update feature has been disabled. If it has been
* disabled via the command line this will return false.
*
* @return if auto-update is allowed.
*/
public boolean isAutoUpdate() {
return (line == null) || !line.hasOption(ArgumentName.DISABLE_AUTO_UPDATE);
}
/**
* A collection of static final strings that represent the possible command
* line arguments.
*/
public static class ArgumentName {
/**
* The long CLI argument name specifying the directory/file to scan.
*/
public static final String SCAN = "scan";
/**
* The short CLI argument name specifying the directory/file to scan.
*/
public static final String SCAN_SHORT = "s";
/**
* The long CLI argument name specifying that the CPE/CVE/etc. data
* should not be automatically updated.
*/
public static final String DISABLE_AUTO_UPDATE = "noupdate";
/**
* The short CLI argument name specifying that the CPE/CVE/etc. data
* should not be automatically updated.
*/
public static final String DISABLE_AUTO_UPDATE_SHORT = "n";
/**
* The long CLI argument name specifying the directory to write the
* reports to.
*/
public static final String OUT = "out";
/**
* The short CLI argument name specifying the directory to write the
* reports to.
*/
public static final String OUT_SHORT = "o";
/**
* The long CLI argument name specifying the output format to write the
* reports to.
*/
public static final String OUTPUT_FORMAT = "format";
/**
* The short CLI argument name specifying the output format to write the
* reports to.
*/
public static final String OUTPUT_FORMAT_SHORT = "f";
/**
* The long CLI argument name specifying the name of the application to
* be scanned.
*/
public static final String APP_NAME = "app";
/**
* The short CLI argument name specifying the name of the application to
* be scanned.
*/
public static final String APP_NAME_SHORT = "a";
/**
* The long CLI argument name asking for help.
*/
public static final String HELP = "help";
/**
* The short CLI argument name asking for help.
*/
public static final String HELP_SHORT = "h";
/**
* The long CLI argument name asking for the version.
*/
public static final String VERSION_SHORT = "v";
/**
* The short CLI argument name asking for the version.
*/
public static final String VERSION = "version";
/**
* The short CLI argument name indicating the proxy port.
*/
public static final String PROXY_PORT_SHORT = "p";
/**
* The CLI argument name indicating the proxy port.
*/
public static final String PROXY_PORT = "proxyport";
/**
* The short CLI argument name indicating the proxy url.
*/
public static final String PROXY_URL_SHORT = "u";
/**
* The CLI argument name indicating the proxy url.
*/
public static final String PROXY_URL = "proxyurl";
/**
* The short CLI argument name indicating the proxy url.
*/
public static final String CONNECTION_TIMEOUT_SHORT = "c";
/**
* The CLI argument name indicating the proxy url.
*/
public static final String CONNECTION_TIMEOUT = "connectiontimeout";
/**
* The short CLI argument name for setting the location of an additional
* properties file.
*/
public static final String PROP_SHORT = "p";
/**
* The CLI argument name for setting the location of an additional
* properties file.
*/
public static final String PROP = "propertyfile";
/**
* The CLI argument name for setting the location of the data directory.
*/
public static final String DATA_DIRECTORY = "data";
/**
* The short CLI argument name for setting the location of the data
* directory.
*/
public static final String DATA_DIRECTORY_SHORT = "d";
/**
* The CLI argument name for setting the location of the data directory.
*/
public static final String VERBOSE_LOG = "log";
/**
* The short CLI argument name for setting the location of the data
* directory.
*/
public static final String VERBOSE_LOG_SHORT = "l";
}
}

View File

@@ -1,12 +0,0 @@
/**
* <html>
* <head>
* <title>org.owasp.dependencycheck.cli</title>
* </head>
* <body>
* Includes utility classes such as the CLI Parser,
* </body>
* </html>
*/
package org.owasp.dependencycheck.cli;

View File

@@ -0,0 +1,43 @@
Command Line Arguments
======================
The following table lists the command line arguments:
Short | Argument&nbsp;Name&nbsp;&nbsp; | Parameter | Description | Requirement
-------|-----------------------|-----------------|-------------|------------
\-a | \-\-app | \<name\> | The name of the application being scanned. This is a required argument. | Required
\-s | \-\-scan | \<path\> | The path to scan \- this option can be specified multiple times. It is also possible to specify Ant style paths (e.g. directory/**/*.jar). | Required
| \-\-exclude | \<pattern\> | The path patterns to exclude from the scan \- this option can be specified multiple times. This accepts Ant style path patterns (e.g. **/exclude/**) . | Optional
\-o | \-\-out | \<path\> | The folder to write reports to. This defaults to the current directory. If the format is not set to ALL one could specify a specific file name. | Optional
\-f | \-\-format | \<format\> | The output format to write to (XML, HTML, VULN, ALL). The default is HTML. | Required
\-l | \-\-log | \<file\> | The file path to write verbose logging information. | Optional
\-n | \-\-noupdate | | Disables the automatic updating of the CPE data. | Optional
| \-\-suppression | \<file\> | The file path to the suppression XML file; used to suppress [false positives](../suppression.html). | Optional
\-h | \-\-help | | Print the help message. | Optional
| \-\-advancedHelp | | Print the advanced help message. | Optional
\-v | \-\-version | | Print the version information. | Optional
Advanced Options
================
Short | Argument&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Parameter | Description | Default&nbsp;Value
-------|-----------------------|-----------------|-----------------------------------------------------------------------------|---------------
| \-\-disableArchive | | Sets whether the Archive Analyzer will be used. | false
| \-\-zipExtensions | \<strings\> | A comma-separated list of additional file extensions to be treated like a ZIP file, the contents will be extracted and analyzed. | &nbsp;
| \-\-disableJar | | Sets whether Jar Analyzer will be used. | false
| \-\-disableNexus | | Sets whether Nexus Analyzer will be used. | false
| \-\-nexus | \<url\> | The url to the Nexus Pro Server. If not set the Nexus Analyzer will be disabled. | &nbsp;
| \-\-nexusUsesProxy | \<true\|false\> | Whether or not the defined proxy should be used when connecting to Nexus. | true
| \-\-disableNuspec | | Sets whether or not the .NET Nuget Nuspec Analyzer will be used. | false
| \-\-disableAssembly | | Sets whether or not the .NET Assembly Analyzer should be used. | false
| \-\-pathToMono | \<path\> | The path to Mono for .NET Assembly analysis on non-windows systems. | &nbsp;
| \-\-proxyserver | \<server\> | The proxy server to use when downloading resources. | &nbsp;
| \-\-proxyport | \<port\> | The proxy port to use when downloading resources. | &nbsp;
| \-\-connectiontimeout | \<timeout\> | The connection timeout (in milliseconds) to use when downloading resources. | &nbsp;
| \-\-proxypass | \<pass\> | The proxy password to use when downloading resources. | &nbsp;
| \-\-proxyuser | \<user\> | The proxy username to use when downloading resources. | &nbsp;
| \-\-connectionString | \<connStr\> | The connection string to the database. | &nbsp;
| \-\-dbDriverName | \<driver\> | The database driver name. | &nbsp;
| \-\-dbDriverPath | \<path\> | The path to the database driver; note, this does not need to be set unless the JAR is outside of the class path. | &nbsp;
| \-\-dbPassword | \<password\> | The password for connecting to the database. | &nbsp;
| \-\-dbUser | \<user\> | The username used to connect to the database. | &nbsp;
\-d | \-\-data | \<path\> | The location of the data directory used to store persistent data. This option should generally not be set. | &nbsp;

View File

@@ -1,6 +1,6 @@
Installation & Usage
--------------------
Downlod the dependency-check command line tool [here](http://dl.bintray.com/jeremy-long/owasp/dependency-check-${project.version}-release.zip).
====================
Download the dependency-check command line tool [here](http://dl.bintray.com/jeremy-long/owasp/dependency-check-${project.version}-release.zip).
Extract the zip file to a location on your computer and put the 'bin' directory into the
path environment variable. On \*nix systems you will likely need to make the shell
script executable:
@@ -8,9 +8,18 @@ script executable:
$ chmod +777 dependency-check.sh
To scan a folder on the system you can run:
#set( $H = '#' )
### Windows
$H$H$H Windows
dependency-check.bat --app "My App Name" --scan "c:\java\application\lib"
### \*nix
dependency-check.sh --app "My App Name" --scan "/java/application/lib"
$H$H$H *nix
dependency-check.sh --app "My App Name" --scan "/java/application/lib"
To view the command line arguments, see the <a href="arguments.html">arguments page</a>, or you can run:
$H$H$H Windows
dependency-check.bat --help
$H$H$H *nix
dependency-check.sh --help

View File

@@ -2,18 +2,17 @@
<!--
This file is part of dependency-check-cli.
Dependency-check-cli is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option) any
later version.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Dependency-check-cli is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
http://www.apache.org/licenses/LICENSE-2.0
You should have received a copy of the GNU General Public License along with
dependency-check-cli. If not, see http://www.gnu.org/licenses/.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Copyright (c) 2013 Jeremy Long. All Rights Reserved.
-->
@@ -27,6 +26,7 @@ Copyright (c) 2013 Jeremy Long. All Rights Reserved.
</breadcrumbs>
<menu name="Getting Started">
<item name="Installation" href="installation.html"/>
<item name="Configuration" href="arguments.html"/>
</menu>
<menu ref="Project Documentation" />
<menu ref="reports" />

View File

@@ -1,24 +1,23 @@
/*
* This file is part of Dependency-Check.
*
* Dependency-Check is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-Check is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* Dependency-Check. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.cli;
package org.owasp.dependencycheck;
import org.owasp.dependencycheck.cli.CliParser;
import org.owasp.dependencycheck.CliParser;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
@@ -31,19 +30,22 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.owasp.dependencycheck.utils.Settings;
/**
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class CliParserTest {
@BeforeClass
public static void setUpClass() throws Exception {
Settings.initialize();
}
@AfterClass
public static void tearDownClass() throws Exception {
Settings.cleanup(true);
}
@Before

View File

@@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -0,0 +1,18 @@
dependency-check
Copyright (c) 2012-2013 Jeremy Long. All Rights Reserved.
The licenses for the software listed below can be found in the META-INF/licenses/[dependency name].
This product includes software developed by The Apache Software Foundation (http://www.apache.org/).
This product includes software developed by Jquery.com (http://jquery.com/).
This product includes software developed by Jonathan Hedley (jsoup.org)
This software contains unmodified binary redistributions for H2 database engine (http://www.h2database.com/), which is dual licensed and available under a modified version of the MPL 1.1 (Mozilla Public License) or under the (unmodified) EPL 1.0 (Eclipse Public License).
An original copy of the license agreement can be found at: http://www.h2database.com/html/license.html
This product includes data from the Common Weakness Enumeration (CWE): http://cwe.mitre.org/
This product downloads and utilizes data from the National Vulnerability Database hosted by NIST: http://nvd.nist.gov/download.cfm

View File

@@ -0,0 +1,28 @@
Dependency-Check-Core
================
Dependency-Check-Core is the main engine used by all of the other modules to do the analysis and reporting.
Mailing List
------------
Subscribe: [dependency-check+subscribe@googlegroups.com] [subscribe]
Post: [dependency-check@googlegroups.com] [post]
Archive: [google group](https://groups.google.com/forum/#!forum/dependency-check)
Copyright & License
------------
Dependency-Check is Copyright (c) 2012-2014 Jeremy Long. All Rights Reserved.
Permission to modify and redistribute is granted under the terms of the Apache 2.0 license. See the [LICENSE.txt](https://github.com/jeremylong/DependencyCheck/dependency-check-cli/blob/master/LICENSE.txt) file for the full license.
Dependency-Check makes use of several other open source libraries. Please see the [NOTICE.txt] [notices] file for more information.
[wiki]: https://github.com/jeremylong/DependencyCheck/wiki
[subscribe]: mailto:dependency-check+subscribe@googlegroups.com
[post]: mailto:dependency-check@googlegroups.com
[notices]: https://github.com/jeremylong/DependencyCheck/blob/master/NOTICES.txt

View File

@@ -1,223 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<!--
If you set the basedir property below, then all reported file
names will be relative to the specified directory. See
http://checkstyle.sourceforge.net/5.x/config.html#Checker
<property name="basedir" value="${basedir}"/>
-->
<property name="severity" value="error"/>
<module name="SuppressionFilter">
<property name="file" value="${checkstyle.suppressions.file}"/>
</module>
<module name="JavadocPackage">
<property name="allowLegacy" value="false"/>
</module>
<module name="Translation">
<property name="severity" value="warning"/>
</module>
<module name="FileTabCharacter">
<property name="eachLine" value="false"/>
</module>
<module name="FileLength">
<property name="fileExtensions" value="java"/>
</module>
<module name="NewlineAtEndOfFile">
<property name="fileExtensions" value="java"/>
<property name="lineSeparator" value="lf"/>
</module>
<module name="RegexpHeader">
<property name="headerFile" value="${checkstyle.header.file}"/>
<property name="fileExtensions" value="java"/>
<property name="id" value="header"/>
</module>
<module name="RegexpSingleline">
<property name="format" value="\s+$"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
</module>
<module name="TreeWalker">
<property name="tabWidth" value="4"/>
<module name="AvoidStarImport"/>
<module name="ConstantName"/>
<module name="EmptyBlock"/>
<module name="EmptyForIteratorPad"/>
<module name="EqualsHashCode"/>
<module name="OneStatementPerLine"/>
<!-- module name="IllegalCatch"/ -->
<!--module name="ImportControl">
<property name="file" value="${checkstyle.importcontrol.file}"/>
</module-->
<module name="IllegalImport"/>
<module name="IllegalInstantiation"/>
<module name="IllegalThrows"/>
<module name="InnerAssignment"/>
<module name="JavadocType">
<property name="authorFormat" value="\S"/>
</module>
<module name="JavadocMethod">
<property name="allowUndeclaredRTE" value="true"/>
<property name="allowThrowsTagsForSubclasses" value="true"/>
<property name="allowMissingPropertyJavadoc" value="true"/>
</module>
<module name="JavadocVariable"/>
<module name="JavadocStyle">
<property name="scope" value="public"/>
</module>
<module name="LeftCurly">
<property name="option" value="eol"/>
<property name="tokens" value="CLASS_DEF"/>
<property name="tokens" value="CTOR_DEF"/>
<property name="tokens" value="INTERFACE_DEF"/>
<property name="tokens" value="METHOD_DEF"/>
<property name="tokens" value="LITERAL_CATCH"/>
<property name="tokens" value="LITERAL_DO"/>
<property name="tokens" value="LITERAL_ELSE"/>
<property name="tokens" value="LITERAL_FINALLY"/>
<property name="tokens" value="LITERAL_FOR"/>
<property name="tokens" value="LITERAL_IF"/>
<property name="tokens" value="LITERAL_SWITCH"/>
<property name="tokens" value="LITERAL_SYNCHRONIZED"/>
<property name="tokens" value="LITERAL_TRY"/>
<property name="tokens" value="LITERAL_WHILE"/>
</module>
<module name="OuterTypeNumber"/>
<module name="LineLength">
<property name="ignorePattern" value="^ *\* *[^ ]+$"/>
<property name="max" value="150"/>
</module>
<module name="MethodCount">
<property name="maxTotal" value="40"/>
</module>
<module name="LocalFinalVariableName"/>
<module name="LocalVariableName"/>
<module name="MemberName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="MethodLength">
<property name="max" value="160"/>
<property name="countEmpty" value="false"/>
</module>
<module name="MethodName"/>
<module name="MethodParamPad"/>
<module name="ModifierOrder"/>
<module name="NeedBraces"/>
<module name="NoWhitespaceAfter">
<property name="tokens" value="ARRAY_INIT"/>
<property name="tokens" value="BNOT"/>
<property name="tokens" value="DEC"/>
<property name="tokens" value="DOT"/>
<property name="tokens" value="INC"/>
<property name="tokens" value="LNOT"/>
<property name="tokens" value="UNARY_MINUS"/>
<property name="tokens" value="UNARY_PLUS"/>
</module>
<module name="NoWhitespaceBefore"/>
<module name="NoWhitespaceBefore">
<property name="tokens" value="DOT"/>
<property name="allowLineBreaks" value="true"/>
</module>
<module name="OperatorWrap"/>
<module name="OperatorWrap">
<property name="tokens" value="ASSIGN"/>
<property name="tokens" value="DIV_ASSIGN"/>
<property name="tokens" value="PLUS_ASSIGN"/>
<property name="tokens" value="MINUS_ASSIGN"/>
<property name="tokens" value="STAR_ASSIGN"/>
<property name="tokens" value="MOD_ASSIGN"/>
<property name="tokens" value="SR_ASSIGN"/>
<property name="tokens" value="BSR_ASSIGN"/>
<property name="tokens" value="SL_ASSIGN"/>
<property name="tokens" value="BXOR_ASSIGN"/>
<property name="tokens" value="BOR_ASSIGN"/>
<property name="tokens" value="BAND_ASSIGN"/>
<property name="option" value="eol"/>
</module>
<module name="PackageName"/>
<module name="ParameterName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="ParameterNumber">
<property name="id" value="paramNum"/>
</module>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>
<module name="RedundantImport"/>
<module name="RedundantModifier"/>
<module name="RightCurly">
<property name="option" value="same"/>
</module>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<module name="StaticVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="TypeName"/>
<module name="UnusedImports"/>
<module name="UpperEll"/>
<module name="VisibilityModifier"/>
<module name="WhitespaceAfter"/>
<module name="WhitespaceAround"/>
<module name="GenericWhitespace"/>
<module name="FinalClass"/>
<module name="MissingSwitchDefault"/>
<!--module name="MagicNumber"/-->
<!--module name="Indentation">
<property name="basicOffset" value="4"/>
<property name="braceAdjustment" value="0"/>
<property name="caseIndent" value="0"/>
</module-->
<module name="ArrayTrailingComma"/>
<module name="FinalLocalVariable"/>
<module name="EqualsAvoidNull"/>
<module name="ParameterAssignment"/>
<!-- Generates quite a few errors -->
<module name="CyclomaticComplexity">
<property name="severity" value="ignore"/>
</module>
<module name="NestedForDepth">
<property name="max" value="2"/>
</module>
<module name="NestedIfDepth">
<property name="max" value="4"/>
</module>
<module name="NestedTryDepth">
<property name="max" value="2"/>
</module>
<!--module name="ExplicitInitialization"/-->
<module name="AnnotationUseStyle"/>
<module name="MissingDeprecated"/>
<module name="MissingOverride">
<property name="javaFiveCompatibility" value="true"/>
</module>
<module name="PackageAnnotation"/>
<module name="SuppressWarnings"/>
<module name="OuterTypeFilename"/>
<module name="HideUtilityClassConstructor"/>
</module>
</module>

View File

@@ -1,19 +0,0 @@
^/\*\s*$
^ \* This file is part of dependency-check-core\.\s*$
^ \*\s*$
^ \* Dependency-check-core is free software\: you can redistribute it and/or modify it\s*$
^ \* under the terms of the GNU General Public License as published by the Free\s*$
^ \* Software Foundation, either version 3 of the License, or \(at your option\) any\s*$
^ \* later version\.
^ \*\s*$
^ \* Dependency-check-core is distributed in the hope that it will be useful, but\s*$
^ \* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\s*$
^ \* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more\s*$
^ \* details\.\s*$
^ \*\s*$
^ \* You should have received a copy of the GNU General Public License along with\s*$
^ \* dependency-check-core\. If not, see http://www.gnu.org/licenses/\.\s*$
^ \*\s*$
^ \* Copyright \(c\) 201[23] (Jeremy Long|Steve Springett)\. All Rights Reserved\.\s*$
^ \*/\s*$
^package

View File

@@ -1,12 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Puppy Crawl//DTD Suppressions 1.0//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_0.dtd">
<suppressions>
<suppress checks=".*" files=".*[\\/]package-info\.java" />
<suppress checks=".*" files=".*org[\\/]owasp[\\/]dependencycheck[\\/]utils[\\/]Filter.java" />
<suppress checks=".*" files=".*org[\\/]owasp[\\/]dependencycheck[\\/]utils[\\/]Checksum.java" />
<suppress checks=".*" files=".*[\\/]generated[\\/].*.java" />
</suppressions>

View File

@@ -1,34 +1,33 @@
<!--
Copyright (c) 2012 - Jeremy Long
This file is part of dependency-check-core.
This file is part of Dependency-Check.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Dependency-Check is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
http://www.apache.org/licenses/LICENSE-2.0
Dependency-Check is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
You should have received a copy of the GNU General Public License
along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
Copyright (c) 2012 Jeremy Long. All Rights Reserved.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-parent</artifactId>
<version>1.0.4</version>
<version>1.2.7</version>
</parent>
<artifactId>dependency-check-core</artifactId>
<packaging>jar</packaging>
<name>Dependency-Check Core</name>
<description>dependency-check-core is the engine and reporting tool used to identify and report if there are any known, publicly disclosed vulnerabilities in the scanned project's dependencies. The engine extracts meta-data from the dependencies and uses this to do fuzzy key-word matching against the Common Platfrom Enumeration (CPE), if any CPE identifiers are found the associated Common Vulnerability and Exposure (CVE) entries are added to the generated report.</description>
<!-- begin copy from http://minds.coremedia.com/2012/09/11/problem-solved-deploy-multi-module-maven-project-site-as-github-pages/ -->
<distributionManagement>
<site>
@@ -71,12 +70,22 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</testResource>
<testResource>
<directory>${basedir}/../src/test/resources</directory>
<filtering>false</filtering>
</testResource>
<testResource>
<directory>${basedir}/src/test/resources</directory>
<excludes>
<exclude>**/mysql-connector-java-5.1.27-bin.jar</exclude>
</excludes>
<filtering>false</filtering>
</testResource>
</testResources>
@@ -132,9 +141,10 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.2</version>
<version>2.6</version>
<configuration>
<instrumentation>
<ignoreTrivial>true</ignoreTrivial>
<ignores>
<ignore>.*\$KEYS\.class</ignore>
<ignore>.*\$Element\.class</ignore>
@@ -182,14 +192,9 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<version>2.16</version>
<configuration>
<systemProperties>
<property>
<name>net.sourceforge.cobertura.datafile</name>
<value>${project.build.directory}/cobertura/cobertura.ser</value>
<workingDirectory>target</workingDirectory>
</property>
<property>
<name>data.directory</name>
<value>${project.build.directory}/data</value>
@@ -201,19 +206,25 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
</systemProperties>
<excludes>
<exclude>**/*IntegrationTest.java</exclude>
<exclude>**/*MySQLTest.java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.14</version>
<version>2.16</version>
<configuration>
<systemProperties>
<property>
<name>data.directory</name>
<value>${project.build.directory}/data</value>
</property>
<property>
<name>temp.directory</name>
<value>${project.build.directory}/temp</value>
</property>
</systemProperties>
<includes>
<include>**/*IntegrationTest.java</include>
@@ -236,7 +247,7 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<dependency>
<groupId>org.apache.maven.doxia</groupId>
<artifactId>doxia-module-markdown</artifactId>
<version>1.4</version>
<version>1.5</version>
</dependency>
</dependencies>
<configuration>
@@ -245,7 +256,7 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.6</version>
<version>2.7</version>
<reportSets>
<reportSet>
<reports>
@@ -260,7 +271,10 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9</version>
<version>2.9.1</version>
<configuration>
<bottom>Copyright© 2012-14 Jeremy Long. All Rights Reserved.</bottom>
</configuration>
<reportSets>
<reportSet>
<id>default</id>
@@ -273,7 +287,7 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.0</version>
<version>2.1</version>
<reportSets>
<reportSet>
<reports>
@@ -286,17 +300,17 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>2.3</version>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.2</version>
<version>2.6</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.14</version>
<version>2.16</version>
<reportSets>
<reportSet>
<reports>
@@ -339,19 +353,19 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.10</version>
<version>2.11</version>
<configuration>
<enableRulesSummary>false</enableRulesSummary>
<configLocation>${basedir}/config/checkstyle-checks.xml</configLocation>
<headerLocation>${basedir}/config/checkstyle-header.txt</headerLocation>
<suppressionsLocation>${basedir}/config/checkstyle-suppressions.xml</suppressionsLocation>
<configLocation>${basedir}/../src/main/config/checkstyle-checks.xml</configLocation>
<headerLocation>${basedir}/../src/main/config/checkstyle-header.txt</headerLocation>
<suppressionsLocation>${basedir}/../src/main/config/checkstyle-suppressions.xml</suppressionsLocation>
<suppressionsFileExpression>checkstyle.suppressions.file</suppressionsFileExpression>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.0.1</version>
<version>3.1</version>
<configuration>
<targetJdk>1.6</targetJdk>
<linkXref>true</linkXref>
@@ -359,33 +373,58 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<excludes>
<exclude>**/generated/*.java</exclude>
</excludes>
<rulesets>
<ruleset>../src/main/config/dcrules.xml</ruleset>
<ruleset>/rulesets/java/basic.xml</ruleset>
<ruleset>/rulesets/java/imports.xml</ruleset>
<ruleset>/rulesets/java/unusedcode.xml</ruleset>
</rulesets>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.5.2</version>
<version>2.5.3</version>
</plugin>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>javancss-maven-plugin</artifactId>
<version>2.0</version>
</dependency>
</reportPlugins>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<version>3.1</version>
<configuration>
<showDeprecation>false</showDeprecation>
<compilerArgument>-Xlint:unchecked</compilerArgument>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-utils</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-test-framework</artifactId>
<version>4.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jmockit</groupId>
<artifactId>jmockit</artifactId>
<version>1.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>annotations</artifactId>
@@ -397,6 +436,11 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<artifactId>commons-cli</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
@@ -410,67 +454,23 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>4.3.1</version>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>4.3.1</version>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>4.3.1</version>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-tools</artifactId>
<version>2.0</version>
<!-- very limited use of the velocity-tools, not all of the dependencies are needed-->
<exclusions>
<exclusion>
<groupId>commons-chain</groupId>
<artifactId>commons-chain</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
</exclusion>
<exclusion>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
</exclusion>
<exclusion>
<groupId>sslext</groupId>
<artifactId>sslext</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.struts</groupId>
<artifactId>struts-core</artifactId>
</exclusion>
<exclusion>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.struts</groupId>
<artifactId>struts-taglib</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.struts</groupId>
<artifactId>struts-tiles</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
@@ -482,11 +482,6 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<version>1.7.2</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.5</version>
</dependency>
<!-- The following dependencies are only used during testing -->
<dependency>
<groupId>org.apache.maven.scm</groupId>
@@ -502,6 +497,13 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>3.0.0.RELEASE</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
@@ -568,5 +570,166 @@ along with Dependency-Check. If not, see <http://www.gnu.org/licenses />.
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa</artifactId>
<version>2.0.1</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>3.0</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>1.1.0.RELEASE</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
</dependencies>
<profiles>
<profile>
<id>MySQL-IntegrationTest</id>
<activation>
<property>
<name>mysql</name>
<!--value>test</value-->
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.16</version>
<configuration>
<systemProperties>
<property>
<name>data.driver_path</name>
<value>${basedir}/${driver_path}</value>
</property>
<property>
<name>data.driver_name</name>
<value>${driver_name}</value>
</property>
<property>
<name>data.connection_string</name>
<value>${connection_string}</value>
</property>
</systemProperties>
<includes>
<include>**/*MySQLTest.java</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<!-- The following profile adds additional
dependencies that are only used during testing.
Additionally, these are only added when using "allTests" to
make the build slightly faster in most cases. -->
<id>False Positive Tests</id>
<activation>
<property>
<name>allTests</name>
</property>
</activation>
<dependencies>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-util</artifactId>
<version>1.7</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.2</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.ws.security</groupId>
<artifactId>wss4j</artifactId>
<version>1.5.7</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.ganyo</groupId>
<artifactId>gcm-server</artifactId>
<version>1.0.2</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
<version>2.7-b1</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.jruby</groupId>
<artifactId>jruby-complete</artifactId>
<version>1.7.4</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.jruby</groupId>
<artifactId>jruby</artifactId>
<version>1.6.3</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.12</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.11.1</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.8-02</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
</dependencies>
</profile>
</profiles>
</project>

View File

@@ -1,118 +1,135 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck;
import java.util.EnumMap;
import java.io.File;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.owasp.dependencycheck.analyzer.AnalysisException;
import org.owasp.dependencycheck.analyzer.AnalysisPhase;
import org.owasp.dependencycheck.analyzer.Analyzer;
import org.owasp.dependencycheck.analyzer.AnalyzerService;
import org.owasp.dependencycheck.data.CachedWebDataSource;
import org.owasp.dependencycheck.data.UpdateException;
import org.owasp.dependencycheck.data.UpdateService;
import org.owasp.dependencycheck.analyzer.FileTypeAnalyzer;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.data.nvdcve.ConnectionFactory;
import org.owasp.dependencycheck.data.nvdcve.CveDB;
import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
import org.owasp.dependencycheck.data.update.CachedWebDataSource;
import org.owasp.dependencycheck.data.update.UpdateService;
import org.owasp.dependencycheck.data.update.exception.UpdateException;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.exception.NoDataException;
import org.owasp.dependencycheck.utils.FileUtils;
import org.owasp.dependencycheck.utils.InvalidSettingException;
import org.owasp.dependencycheck.utils.Settings;
/**
* Scans files, directories, etc. for Dependencies. Analyzers are loaded and
* used to process the files found by the scan, if a file is encountered and an
* Analyzer is associated with the file type then the file is turned into a
* Scans files, directories, etc. for Dependencies. Analyzers are loaded and used to process the files found by the
* scan, if a file is encountered and an Analyzer is associated with the file type then the file is turned into a
* dependency.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class Engine {
/**
* The list of dependencies.
*/
private final List<Dependency> dependencies = new ArrayList<Dependency>();
private List<Dependency> dependencies = new ArrayList<Dependency>();
/**
* A Map of analyzers grouped by Analysis phase.
*/
private final EnumMap<AnalysisPhase, List<Analyzer>> analyzers =
new EnumMap<AnalysisPhase, List<Analyzer>>(AnalysisPhase.class);
private EnumMap<AnalysisPhase, List<Analyzer>> analyzers = new EnumMap<AnalysisPhase, List<Analyzer>>(AnalysisPhase.class);
/**
* A set of extensions supported by the analyzers.
* A Map of analyzers grouped by Analysis phase.
*/
private final Set<String> extensions = new HashSet<String>();
private Set<FileTypeAnalyzer> fileTypeAnalyzers = new HashSet<FileTypeAnalyzer>();
/**
* The ClassLoader to use when dynamically loading Analyzer and Update services.
*/
private ClassLoader serviceClassLoader = Thread.currentThread().getContextClassLoader();
/**
* The Logger for use throughout the class.
*/
private static final Logger LOGGER = Logger.getLogger(Engine.class.getName());
/**
* Creates a new Engine.
*
* @throws DatabaseException thrown if there is an error connecting to the database
*/
public Engine() {
boolean autoUpdate = true;
try {
autoUpdate = Settings.getBoolean(Settings.KEYS.AUTO_UPDATE);
} catch (InvalidSettingException ex) {
Logger.getLogger(Engine.class.getName()).log(Level.FINE, "Invalid setting for auto-update; using true.");
}
if (autoUpdate) {
doUpdates();
}
loadAnalyzers();
public Engine() throws DatabaseException {
initializeEngine();
}
/**
* Creates a new Engine.
*
* @param autoUpdate indicates whether or not data should be updated from
* the Internet
* @deprecated This function should no longer be used; the autoupdate flag
* should be set using:
* <code>Settings.setBoolean(Settings.KEYS.AUTO_UPDATE, value);</code>
* @param serviceClassLoader a reference the class loader being used
* @throws DatabaseException thrown if there is an error connecting to the database
*/
@Deprecated
public Engine(boolean autoUpdate) {
if (autoUpdate) {
doUpdates();
}
public Engine(ClassLoader serviceClassLoader) throws DatabaseException {
this.serviceClassLoader = serviceClassLoader;
initializeEngine();
}
/**
* Creates a new Engine using the specified classloader to dynamically load Analyzer and Update services.
*
* @throws DatabaseException thrown if there is an error connecting to the database
*/
protected final void initializeEngine() throws DatabaseException {
ConnectionFactory.initialize();
loadAnalyzers();
}
/**
* Loads the analyzers specified in the configuration file (or system
* properties).
* Properly cleans up resources allocated during analysis.
*/
public void cleanup() {
ConnectionFactory.cleanup();
}
/**
* Loads the analyzers specified in the configuration file (or system properties).
*/
private void loadAnalyzers() {
if (analyzers.size() > 0) {
return;
}
for (AnalysisPhase phase : AnalysisPhase.values()) {
analyzers.put(phase, new ArrayList<Analyzer>());
}
final AnalyzerService service = AnalyzerService.getInstance();
final AnalyzerService service = new AnalyzerService(serviceClassLoader);
final Iterator<Analyzer> iterator = service.getAnalyzers();
while (iterator.hasNext()) {
final Analyzer a = iterator.next();
analyzers.get(a.getAnalysisPhase()).add(a);
if (a.getSupportedExtensions() != null) {
extensions.addAll(a.getSupportedExtensions());
if (a instanceof FileTypeAnalyzer) {
this.fileTypeAnalyzers.add((FileTypeAnalyzer) a);
}
}
}
@@ -136,233 +153,335 @@ public class Engine {
return dependencies;
}
public void setDependencies(List<Dependency> dependencies) {
this.dependencies = dependencies;
}
/**
* Scans an array of files or directories. If a directory is specified, it
* will be scanned recursively. Any dependencies identified are added to the
* dependency collection.
* Scans an array of files or directories. If a directory is specified, it will be scanned recursively. Any
* dependencies identified are added to the dependency collection.
*
* @param paths an array of paths to files or directories to be analyzed
* @return the list of dependencies scanned
*
* @since v0.3.2.5
*
* @param paths an array of paths to files or directories to be analyzed.
*/
public void scan(String[] paths) {
public List<Dependency> scan(String[] paths) {
final List<Dependency> deps = new ArrayList<Dependency>();
for (String path : paths) {
final File file = new File(path);
scan(file);
final List<Dependency> d = scan(file);
if (d != null) {
deps.addAll(d);
}
}
return deps;
}
/**
* Scans a given file or directory. If a directory is specified, it will be
* scanned recursively. Any dependencies identified are added to the
* dependency collection.
* Scans a given file or directory. If a directory is specified, it will be scanned recursively. Any dependencies
* identified are added to the dependency collection.
*
* @param path the path to a file or directory to be analyzed.
* @param path the path to a file or directory to be analyzed
* @return the list of dependencies scanned
*/
public void scan(String path) {
public List<Dependency> scan(String path) {
final File file = new File(path);
scan(file);
return scan(file);
}
/**
* Scans an array of files or directories. If a directory is specified, it
* will be scanned recursively. Any dependencies identified are added to the
* dependency collection.
*
* @since v0.3.2.5
* Scans an array of files or directories. If a directory is specified, it will be scanned recursively. Any
* dependencies identified are added to the dependency collection.
*
* @param files an array of paths to files or directories to be analyzed.
*/
public void scan(File[] files) {
for (File file : files) {
scan(file);
}
}
/**
* Scans a list of files or directories. If a directory is specified, it
* will be scanned recursively. Any dependencies identified are added to the
* dependency collection.
* @return the list of dependencies
*
* @since v0.3.2.5
*
* @param files a set of paths to files or directories to be analyzed.
*/
public void scan(Set<File> files) {
public List<Dependency> scan(File[] files) {
final List<Dependency> deps = new ArrayList<Dependency>();
for (File file : files) {
scan(file);
final List<Dependency> d = scan(file);
if (d != null) {
deps.addAll(d);
}
}
return deps;
}
/**
* Scans a list of files or directories. If a directory is specified, it
* will be scanned recursively. Any dependencies identified are added to the
* dependency collection.
* Scans a list of files or directories. If a directory is specified, it will be scanned recursively. Any
* dependencies identified are added to the dependency collection.
*
* @param files a set of paths to files or directories to be analyzed
* @return the list of dependencies scanned
*
* @since v0.3.2.5
*
* @param files a set of paths to files or directories to be analyzed.
*/
public void scan(List<File> files) {
public List<Dependency> scan(Set<File> files) {
final List<Dependency> deps = new ArrayList<Dependency>();
for (File file : files) {
scan(file);
final List<Dependency> d = scan(file);
if (d != null) {
deps.addAll(d);
}
}
return deps;
}
/**
* Scans a given file or directory. If a directory is specified, it will be
* scanned recursively. Any dependencies identified are added to the
* dependency collection.
* Scans a list of files or directories. If a directory is specified, it will be scanned recursively. Any
* dependencies identified are added to the dependency collection.
*
* @param files a set of paths to files or directories to be analyzed
* @return the list of dependencies scanned
*
* @since v0.3.2.5
*/
public List<Dependency> scan(List<File> files) {
final List<Dependency> deps = new ArrayList<Dependency>();
for (File file : files) {
final List<Dependency> d = scan(file);
if (d != null) {
deps.addAll(d);
}
}
return deps;
}
/**
* Scans a given file or directory. If a directory is specified, it will be scanned recursively. Any dependencies
* identified are added to the dependency collection.
*
* @param file the path to a file or directory to be analyzed
* @return the list of dependencies scanned
*
* @since v0.3.2.4
*
* @param file the path to a file or directory to be analyzed.
*/
public void scan(File file) {
public List<Dependency> scan(File file) {
if (file.exists()) {
if (file.isDirectory()) {
scanDirectory(file);
return scanDirectory(file);
} else {
scanFile(file);
}
}
}
/**
* Recursively scans files and directories. Any dependencies identified are
* added to the dependency collection.
*
* @param dir the directory to scan.
*/
protected void scanDirectory(File dir) {
final File[] files = dir.listFiles();
if (files != null) {
for (File f : files) {
if (f.isDirectory()) {
scanDirectory(f);
} else {
scanFile(f);
final Dependency d = scanFile(file);
if (d != null) {
final List<Dependency> deps = new ArrayList<Dependency>();
deps.add(d);
return deps;
}
}
}
return null;
}
/**
* Scans a specified file. If a dependency is identified it is added to the
* dependency collection.
* Recursively scans files and directories. Any dependencies identified are added to the dependency collection.
*
* @param file The file to scan.
* @param dir the directory to scan
* @return the list of Dependency objects scanned
*/
protected void scanFile(File file) {
protected List<Dependency> scanDirectory(File dir) {
final File[] files = dir.listFiles();
final List<Dependency> deps = new ArrayList<Dependency>();
if (files != null) {
for (File f : files) {
if (f.isDirectory()) {
final List<Dependency> d = scanDirectory(f);
if (d != null) {
deps.addAll(d);
}
} else {
final Dependency d = scanFile(f);
deps.add(d);
}
}
}
return deps;
}
/**
* Scans a specified file. If a dependency is identified it is added to the dependency collection.
*
* @param file The file to scan
* @return the scanned dependency
*/
protected Dependency scanFile(File file) {
if (!file.isFile()) {
final String msg = String.format("Path passed to scanFile(File) is not a file: %s. Skipping the file.", file.toString());
Logger.getLogger(Engine.class.getName()).log(Level.FINE, msg);
return;
LOGGER.log(Level.FINE, msg);
return null;
}
final String fileName = file.getName();
final String extension = FileUtils.getFileExtension(fileName);
Dependency dependency = null;
if (extension != null) {
if (extensions.contains(extension)) {
final Dependency dependency = new Dependency(file);
if (supportsExtension(extension)) {
dependency = new Dependency(file);
dependencies.add(dependency);
}
} else {
final String msg = String.format("No file extension found on file '%s'. The file was not analyzed.",
file.toString());
Logger.getLogger(Engine.class.getName()).log(Level.FINEST, msg);
final String msg = String.format("No file extension found on file '%s'. The file was not analyzed.", file.toString());
LOGGER.log(Level.FINEST, msg);
}
return dependency;
}
/**
* Runs the analyzers against all of the dependencies.
*/
public void analyzeDependencies() {
//phase one initialize
for (AnalysisPhase phase : AnalysisPhase.values()) {
final List<Analyzer> analyzerList = analyzers.get(phase);
for (Analyzer a : analyzerList) {
try {
final String msg = String.format("Initializing %s", a.getName());
Logger.getLogger(Engine.class.getName()).log(Level.FINE, msg);
a.initialize();
} catch (Exception ex) {
final String msg = String.format("Exception occurred initializing %s.", a.getName());
Logger.getLogger(Engine.class.getName()).log(Level.SEVERE, msg);
Logger.getLogger(Engine.class.getName()).log(Level.INFO, null, ex);
try {
a.close();
} catch (Exception ex1) {
Logger.getLogger(Engine.class.getName()).log(Level.FINEST, null, ex1);
}
}
}
boolean autoUpdate = true;
try {
autoUpdate = Settings.getBoolean(Settings.KEYS.AUTO_UPDATE);
} catch (InvalidSettingException ex) {
LOGGER.log(Level.FINE, "Invalid setting for auto-update; using true.");
}
if (autoUpdate) {
doUpdates();
}
//need to ensure that data exists
try {
ensureDataExists();
} catch (NoDataException ex) {
final String msg = String.format("%s%n%nUnable to continue dependency-check analysis.", ex.getMessage());
LOGGER.log(Level.SEVERE, msg);
LOGGER.log(Level.FINE, null, ex);
return;
} catch (DatabaseException ex) {
final String msg = String.format("%s%n%nUnable to continue dependency-check analysis.", ex.getMessage());
LOGGER.log(Level.SEVERE, msg);
LOGGER.log(Level.FINE, null, ex);
return;
}
final String logHeader = String.format("%n"
+ "----------------------------------------------------%n"
+ "BEGIN ANALYSIS%n"
+ "----------------------------------------------------");
LOGGER.log(Level.FINE, logHeader);
LOGGER.log(Level.INFO, "Analysis Starting");
// analysis phases
for (AnalysisPhase phase : AnalysisPhase.values()) {
final List<Analyzer> analyzerList = analyzers.get(phase);
for (Analyzer a : analyzerList) {
a = initializeAnalyzer(a);
/* need to create a copy of the collection because some of the
* analyzers may modify it. This prevents ConcurrentModificationExceptions.
* This is okay for adds/deletes because it happens per analyzer.
*/
final String msg = String.format("Begin Analyzer '%s'", a.getName());
Logger.getLogger(Engine.class.getName()).log(Level.FINE, msg);
LOGGER.log(Level.FINE, msg);
final Set<Dependency> dependencySet = new HashSet<Dependency>();
dependencySet.addAll(dependencies);
for (Dependency d : dependencySet) {
final String msgFile = String.format("Begin Analysis of '%s'", d.getActualFilePath());
Logger.getLogger(Engine.class.getName()).log(Level.FINE, msgFile);
if (a.supportsExtension(d.getFileExtension())) {
boolean shouldAnalyze = true;
if (a instanceof FileTypeAnalyzer) {
final FileTypeAnalyzer fAnalyzer = (FileTypeAnalyzer) a;
shouldAnalyze = fAnalyzer.supportsExtension(d.getFileExtension());
}
if (shouldAnalyze) {
final String msgFile = String.format("Begin Analysis of '%s'", d.getActualFilePath());
LOGGER.log(Level.FINE, msgFile);
try {
a.analyze(d, this);
} catch (AnalysisException ex) {
d.addAnalysisException(ex);
final String exMsg = String.format("An error occurred while analyzing '%s'.", d.getActualFilePath());
LOGGER.log(Level.WARNING, exMsg);
LOGGER.log(Level.FINE, "", ex);
} catch (Throwable ex) {
final String axMsg = String.format("An unexpected error occurred during analysis of '%s'", d.getActualFilePath());
//final AnalysisException ax = new AnalysisException(axMsg, ex);
LOGGER.log(Level.WARNING, axMsg);
LOGGER.log(Level.FINE, "", ex);
}
}
}
}
}
//close/cleanup
for (AnalysisPhase phase : AnalysisPhase.values()) {
final List<Analyzer> analyzerList = analyzers.get(phase);
for (Analyzer a : analyzerList) {
final String msg = String.format("Closing Analyzer '%s'", a.getName());
Logger.getLogger(Engine.class.getName()).log(Level.FINE, msg);
try {
a.close();
} catch (Exception ex) {
Logger.getLogger(Engine.class.getName()).log(Level.FINEST, null, ex);
}
closeAnalyzer(a);
}
}
final String logFooter = String.format("%n"
+ "----------------------------------------------------%n"
+ "END ANALYSIS%n"
+ "----------------------------------------------------");
LOGGER.log(Level.FINE, logFooter);
LOGGER.log(Level.INFO, "Analysis Complete");
}
/**
* Initializes the given analyzer.
*
* @param analyzer the analyzer to initialize
* @return the initialized analyzer
*/
protected Analyzer initializeAnalyzer(Analyzer analyzer) {
try {
final String msg = String.format("Initializing %s", analyzer.getName());
LOGGER.log(Level.FINE, msg);
analyzer.initialize();
} catch (Throwable ex) {
final String msg = String.format("Exception occurred initializing %s.", analyzer.getName());
LOGGER.log(Level.SEVERE, msg);
LOGGER.log(Level.FINE, null, ex);
try {
analyzer.close();
} catch (Throwable ex1) {
LOGGER.log(Level.FINEST, null, ex1);
}
}
return analyzer;
}
/**
* Closes the given analyzer.
*
* @param analyzer the analyzer to close
*/
protected void closeAnalyzer(Analyzer analyzer) {
final String msg = String.format("Closing Analyzer '%s'", analyzer.getName());
LOGGER.log(Level.FINE, msg);
try {
analyzer.close();
} catch (Throwable ex) {
LOGGER.log(Level.FINEST, null, ex);
}
}
/**
* Cycles through the cached web data sources and calls update on all of
* them.
* Cycles through the cached web data sources and calls update on all of them.
*/
private void doUpdates() {
final UpdateService service = UpdateService.getInstance();
LOGGER.info("Checking for updates");
final UpdateService service = new UpdateService(serviceClassLoader);
final Iterator<CachedWebDataSource> iterator = service.getDataSources();
while (iterator.hasNext()) {
final CachedWebDataSource source = iterator.next();
try {
source.update();
} catch (UpdateException ex) {
Logger.getLogger(Engine.class.getName()).log(Level.WARNING,
LOGGER.log(Level.WARNING,
"Unable to update Cached Web DataSource, using local data instead. Results may not include recent vulnerabilities.");
Logger.getLogger(Engine.class.getName()).log(Level.FINE,
String.format("Unable to update details for %s", source.getClass().getName()), ex);
LOGGER.log(Level.FINE, String.format("Unable to update details for %s", source.getClass().getName()), ex);
}
}
LOGGER.info("Check for updates complete");
}
/**
* Returns a full list of all of the analyzers. This is useful for reporting
* which analyzers where used.
* Returns a full list of all of the analyzers. This is useful for reporting which analyzers where used.
*
* @return a list of Analyzers
*/
@@ -379,21 +498,38 @@ public class Engine {
* Checks all analyzers to see if an extension is supported.
*
* @param ext a file extension
* @return true or false depending on whether or not the file extension is
* supported
* @return true or false depending on whether or not the file extension is supported
*/
public boolean supportsExtension(String ext) {
if (ext == null) {
return false;
}
for (AnalysisPhase phase : AnalysisPhase.values()) {
final List<Analyzer> analyzerList = analyzers.get(phase);
for (Analyzer a : analyzerList) {
if (a.getSupportedExtensions() != null && a.supportsExtension(ext)) {
return true;
}
}
boolean scan = false;
for (FileTypeAnalyzer a : this.fileTypeAnalyzers) {
/* note, we can't break early on this loop as the analyzers need to know if
they have files to work on prior to initialization */
scan |= a.supportsExtension(ext);
}
return scan;
}
/**
* Checks the CPE Index to ensure documents exists. If none exist a NoDataException is thrown.
*
* @throws NoDataException thrown if no data exists in the CPE Index
* @throws DatabaseException thrown if there is an exception opening the database
*/
private void ensureDataExists() throws NoDataException, DatabaseException {
final CveDB cve = new CveDB();
try {
cve.open();
if (!cve.dataExists()) {
throw new NoDataException("No documents exist");
}
} catch (DatabaseException ex) {
throw new NoDataException(ex.getMessage(), ex);
} finally {
cve.close();
}
return false;
}
}

View File

@@ -0,0 +1,13 @@
/**
* <html>
* <head>
* <title>org.owasp.dependencycheck.agent</title>
* </head>
* <body>
* The agent package holds an agent API that can be used by other applications that have information about dependencies;
* but would rather implement something in their code directly rather then spawn a process to run the entire
* dependency-check engine. This basically provides programmatic access to running a scan.
* </body>
* </html>
*/
package org.owasp.dependencycheck.agent;

View File

@@ -1,51 +1,28 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
/**
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public abstract class AbstractAnalyzer implements Analyzer {
/**
* Utility method to help in the creation of the extensions set. This
* constructs a new Set that can be used in a final static
* declaration.<br/><br/>
*
* This implementation was copied from
* http://stackoverflow.com/questions/2041778/initialize-java-hashset-values-by-construction
*
* @param strings a list of strings to add to the set.
* @return a Set of strings.
*/
protected static Set<String> newHashSet(String... strings) {
final Set<String> set = new HashSet<String>();
Collections.addAll(set, strings);
return set;
}
/**
* The initialize method does nothing for this Analyzer.
*

View File

@@ -0,0 +1,229 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2014 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.utils.InvalidSettingException;
import org.owasp.dependencycheck.utils.Settings;
/**
* The base FileTypeAnalyzer that all analyzers that have specific file types they analyze should extend.
*
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public abstract class AbstractFileTypeAnalyzer extends AbstractAnalyzer implements FileTypeAnalyzer {
//<editor-fold defaultstate="collapsed" desc="Constructor">
/**
* Base constructor that all children must call. This checks the configuration to determine if the analyzer is
* enabled.
*/
public AbstractFileTypeAnalyzer() {
final String key = getAnalyzerEnabledSettingKey();
try {
enabled = Settings.getBoolean(key, true);
} catch (InvalidSettingException ex) {
String msg = String.format("Invalid setting for property '%s'", key);
LOGGER.log(Level.WARNING, msg);
LOGGER.log(Level.FINE, "", ex);
msg = String.format("%s has been disabled", getName());
LOGGER.log(Level.WARNING, msg);
}
}
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Field definitions">
/**
* The logger.
*/
private static final Logger LOGGER = Logger.getLogger(AbstractFileTypeAnalyzer.class.getName());
/**
* Whether the file type analyzer detected any files it needs to analyze.
*/
private boolean filesMatched = false;
/**
* Get the value of filesMatched. A flag indicating whether the scan included any file types this analyzer supports.
*
* @return the value of filesMatched
*/
protected boolean isFilesMatched() {
return filesMatched;
}
/**
* Set the value of filesMatched. A flag indicating whether the scan included any file types this analyzer supports.
*
* @param filesMatched new value of filesMatched
*/
protected void setFilesMatched(boolean filesMatched) {
this.filesMatched = filesMatched;
}
/**
* A flag indicating whether or not the analyzer is enabled.
*/
private boolean enabled = true;
/**
* Get the value of enabled.
*
* @return the value of enabled
*/
public boolean isEnabled() {
return enabled;
}
/**
* Set the value of enabled.
*
* @param enabled new value of enabled
*/
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Abstract methods children must implement">
/**
* <p>
* Returns a list of supported file extensions. An example would be an analyzer that inspected java jar files. The
* getSupportedExtensions function would return a set with a single element "jar".</p>
*
* <p>
* <b>Note:</b> when implementing this the extensions returned MUST be lowercase.</p>
*
* @return The file extensions supported by this analyzer.
*
* <p>
* If the analyzer returns null it will not cause additional files to be analyzed but will be executed against every
* file loaded</p>
*/
protected abstract Set<String> getSupportedExtensions();
/**
* Initializes the file type analyzer.
*
* @throws Exception thrown if there is an exception during initialization
*/
protected abstract void initializeFileTypeAnalyzer() throws Exception;
/**
* Analyzes a given dependency. If the dependency is an archive, such as a WAR or EAR, the contents are extracted,
* scanned, and added to the list of dependencies within the engine.
*
* @param dependency the dependency to analyze
* @param engine the engine scanning
* @throws AnalysisException thrown if there is an analysis exception
*/
protected abstract void analyzeFileType(Dependency dependency, Engine engine) throws AnalysisException;
/**
* <p>
* Returns the setting key to determine if the analyzer is enabled.</p>
*
* @return the key for the analyzer's enabled property
*/
protected abstract String getAnalyzerEnabledSettingKey();
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Final implementations for the Analyzer interface">
/**
* Initializes the analyzer.
*
* @throws Exception thrown if there is an exception during initialization
*/
@Override
public final void initialize() throws Exception {
if (filesMatched) {
initializeFileTypeAnalyzer();
} else {
enabled = false;
}
}
/**
* Analyzes a given dependency. If the dependency is an archive, such as a WAR or EAR, the contents are extracted,
* scanned, and added to the list of dependencies within the engine.
*
* @param dependency the dependency to analyze
* @param engine the engine scanning
* @throws AnalysisException thrown if there is an analysis exception
*/
@Override
public final void analyze(Dependency dependency, Engine engine) throws AnalysisException {
if (enabled) {
analyzeFileType(dependency, engine);
}
}
/**
* Returns whether or not this analyzer can process the given extension.
*
* @param extension the file extension to test for support.
* @return whether or not the specified file extension is supported by this analyzer.
*/
@Override
public final boolean supportsExtension(String extension) {
if (!enabled) {
return false;
}
final Set<String> ext = getSupportedExtensions();
if (ext == null) {
final String msg = String.format("The '%s' analyzer is misconfigured and does not have any file extensions;"
+ " it will be disabled", getName());
LOGGER.log(Level.SEVERE, msg);
return false;
} else {
final boolean match = ext.contains(extension);
if (match) {
filesMatched = match;
}
return match;
}
}
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Static utility methods">
/**
* <p>
* Utility method to help in the creation of the extensions set. This constructs a new Set that can be used in a
* final static declaration.</p>
*
* <p>
* This implementation was copied from
* http://stackoverflow.com/questions/2041778/initialize-java-hashset-values-by-construction</p>
*
* @param strings a list of strings to add to the set.
* @return a Set of strings.
*/
protected static Set<String> newHashSet(String... strings) {
final Set<String> set = new HashSet<String>();
Collections.addAll(set, strings);
return set;
}
//</editor-fold>
}

View File

@@ -0,0 +1,178 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import org.owasp.dependencycheck.suppression.SuppressionParseException;
import org.owasp.dependencycheck.suppression.SuppressionParser;
import org.owasp.dependencycheck.suppression.SuppressionRule;
import org.owasp.dependencycheck.utils.DownloadFailedException;
import org.owasp.dependencycheck.utils.Downloader;
import org.owasp.dependencycheck.utils.FileUtils;
import org.owasp.dependencycheck.utils.Settings;
/**
* Abstract base suppression analyzer that contains methods for parsing the suppression xml file.
*
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public abstract class AbstractSuppressionAnalyzer extends AbstractAnalyzer {
/**
* The Logger for use throughout the class
*/
private static final Logger LOGGER = Logger.getLogger(AbstractSuppressionAnalyzer.class.getName());
//<editor-fold defaultstate="collapsed" desc="All standard implementation details of Analyzer">
/**
* Returns a list of file EXTENSIONS supported by this analyzer.
*
* @return a list of file EXTENSIONS supported by this analyzer.
*/
public Set<String> getSupportedExtensions() {
return null;
}
//</editor-fold>
/**
* The initialize method loads the suppression XML file.
*
* @throws Exception thrown if there is an exception
*/
@Override
public void initialize() throws Exception {
super.initialize();
loadSuppressionData();
}
/**
* The list of suppression rules
*/
private List<SuppressionRule> rules;
/**
* Get the value of rules.
*
* @return the value of rules
*/
public List<SuppressionRule> getRules() {
return rules;
}
/**
* Set the value of rules.
*
* @param rules new value of rules
*/
public void setRules(List<SuppressionRule> rules) {
this.rules = rules;
}
/**
* Loads the suppression rules file.
*
* @throws SuppressionParseException thrown if the XML cannot be parsed.
*/
private void loadSuppressionData() throws SuppressionParseException {
final SuppressionParser parser = new SuppressionParser();
File file = null;
try {
rules = parser.parseSuppressionRules(this.getClass().getClassLoader().getResourceAsStream("dependencycheck-base-suppression.xml"));
} catch (SuppressionParseException ex) {
LOGGER.log(Level.FINE, "Unable to parse the base suppression data file", ex);
}
final String suppressionFilePath = Settings.getString(Settings.KEYS.SUPPRESSION_FILE);
if (suppressionFilePath == null) {
return;
}
boolean deleteTempFile = false;
try {
final Pattern uriRx = Pattern.compile("^(https?|file)\\:.*", Pattern.CASE_INSENSITIVE);
if (uriRx.matcher(suppressionFilePath).matches()) {
deleteTempFile = true;
file = FileUtils.getTempFile("suppression", "xml");
final URL url = new URL(suppressionFilePath);
try {
Downloader.fetchFile(url, file, false);
} catch (DownloadFailedException ex) {
Downloader.fetchFile(url, file, true);
}
} else {
file = new File(suppressionFilePath);
if (!file.exists()) {
final InputStream suppressionsFromClasspath = this.getClass().getClassLoader().getResourceAsStream(suppressionFilePath);
if (suppressionsFromClasspath != null) {
deleteTempFile = true;
file = FileUtils.getTempFile("suppression", "xml");
try {
org.apache.commons.io.FileUtils.copyInputStreamToFile(suppressionsFromClasspath, file);
} catch (IOException ex) {
throwSuppressionParseException("Unable to locate suppressions file in classpath", ex);
}
}
}
}
if (file != null) {
try {
//rules = parser.parseSuppressionRules(file);
rules.addAll(parser.parseSuppressionRules(file));
LOGGER.log(Level.FINE, rules.size() + " suppression rules were loaded.");
} catch (SuppressionParseException ex) {
final String msg = String.format("Unable to parse suppression xml file '%s'", file.getPath());
LOGGER.log(Level.WARNING, msg);
LOGGER.log(Level.WARNING, ex.getMessage());
LOGGER.log(Level.FINE, "", ex);
throw ex;
}
}
} catch (DownloadFailedException ex) {
throwSuppressionParseException("Unable to fetch the configured suppression file", ex);
} catch (MalformedURLException ex) {
throwSuppressionParseException("Configured suppression file has an invalid URL", ex);
} catch (IOException ex) {
throwSuppressionParseException("Unable to create temp file for suppressions", ex);
} finally {
if (deleteTempFile && file != null) {
FileUtils.delete(file);
}
}
}
/**
* Utility method to throw parse exceptions.
*
* @param message the exception message
* @param exception the cause of the exception
* @throws SuppressionParseException throws the generated SuppressionParseException
*/
private void throwSuppressionParseException(String message, Exception exception) throws SuppressionParseException {
LOGGER.log(Level.WARNING, message);
LOGGER.log(Level.FINE, "", exception);
throw new SuppressionParseException(message, exception);
}
}

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -21,7 +20,7 @@ package org.owasp.dependencycheck.analyzer;
/**
* An enumeration defining the phases of analysis.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public enum AnalysisPhase {

View File

@@ -1,65 +1,46 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
import java.util.Set;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.dependency.Dependency;
/**
* An interface that defines an Analyzer that is used to identify Dependencies.
* An analyzer will collect information about the dependency in the form of
* Evidence.
* An interface that defines an Analyzer that is used to identify Dependencies. An analyzer will collect information
* about the dependency in the form of Evidence.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public interface Analyzer {
/**
* Analyzes the given dependency. The analysis could be anything from
* identifying an Identifier for the dependency, to finding vulnerabilities,
* etc. Additionally, if the analyzer collects enough information to add a
* description or license information for the dependency it should be added.
* Analyzes the given dependency. The analysis could be anything from identifying an Identifier for the dependency,
* to finding vulnerabilities, etc. Additionally, if the analyzer collects enough information to add a description
* or license information for the dependency it should be added.
*
* @param dependency a dependency to analyze.
* @param engine the engine that is scanning the dependencies - this is
* useful if we need to check other dependencies
* @throws AnalysisException is thrown if there is an error analyzing the
* dependency file
* @param engine the engine that is scanning the dependencies - this is useful if we need to check other
* dependencies
* @throws AnalysisException is thrown if there is an error analyzing the dependency file
*/
void analyze(Dependency dependency, Engine engine) throws AnalysisException;
/**
* <p>Returns a list of supported file extensions. An example would be an
* analyzer that inspected java jar files. The getSupportedExtensions
* function would return a set with a single element "jar".</p>
*
* <p><b>Note:</b> when implementing this the extensions returned MUST be
* lowercase.</p>
*
* @return The file extensions supported by this analyzer.
*
* <p>If the analyzer returns null it will not cause additional files to be
* analyzed but will be executed against every file loaded</p>
*/
Set<String> getSupportedExtensions();
/**
* Returns the name of the analyzer.
*
@@ -67,15 +48,6 @@ public interface Analyzer {
*/
String getName();
/**
* Returns whether or not this analyzer can process the given extension.
*
* @param extension the file extension to test for support.
* @return whether or not the specified file extension is supported by this
* analyzer.
*/
boolean supportsExtension(String extension);
/**
* Returns the phase that the analyzer is intended to run in.
*
@@ -84,17 +56,14 @@ public interface Analyzer {
AnalysisPhase getAnalysisPhase();
/**
* The initialize method is called (once) prior to the analyze method being
* called on all of the dependencies.
* The initialize method is called (once) prior to the analyze method being called on all of the dependencies.
*
* @throws Exception is thrown if an exception occurs initializing the
* analyzer.
* @throws Exception is thrown if an exception occurs initializing the analyzer.
*/
void initialize() throws Exception;
/**
* The close method is called after all of the dependencies have been
* analyzed.
* The close method is called after all of the dependencies have been analyzed.
*
* @throws Exception is thrown if an exception occurs closing the analyzer.
*/

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -22,15 +21,13 @@ import java.util.Iterator;
import java.util.ServiceLoader;
/**
* The Analyzer Service Loader. This class loads all services that implement
* org.owasp.dependencycheck.analyzer.Analyzer.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public final class AnalyzerService {
public class AnalyzerService {
/**
* The analyzer service singleton.
*/
private static AnalyzerService service;
/**
* The service loader for analyzers.
*/
@@ -38,21 +35,11 @@ public final class AnalyzerService {
/**
* Creates a new instance of AnalyzerService.
*/
private AnalyzerService() {
loader = ServiceLoader.load(Analyzer.class);
}
/**
* Retrieve the singleton instance of AnalyzerService.
*
* @return a singleton AnalyzerService.
* @param classLoader the ClassLoader to use when dynamically loading Analyzer and Update services
*/
public static synchronized AnalyzerService getInstance() {
if (service == null) {
service = new AnalyzerService();
}
return service;
public AnalyzerService(ClassLoader classLoader) {
loader = ServiceLoader.load(Analyzer.class, classLoader);
}
/**

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
@@ -26,47 +25,49 @@ import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipException;
//import java.util.zip.ZipInputStream;
import org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.ArchiveInputStream;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import org.h2.store.fs.FileUtils;
import org.apache.commons.compress.archivers.zip.ZipFile;
import org.apache.commons.compress.compressors.CompressorInputStream;
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
import org.apache.commons.compress.compressors.gzip.GzipUtils;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.analyzer.exception.ArchiveExtractionException;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.utils.FileUtils;
import org.owasp.dependencycheck.utils.Settings;
/**
* <p>An analyzer that works on archive files:
* <ul>
* <li><b>ZIP</b> - if it is determined to be a JAR, WAR or EAR a copy is made
* and the copy is given the correct extension so that it will be correctly
* analyzed.</li>
* <li><b>WAR</b> - the WAR contents are extracted and added as dependencies to
* the scan. The displayed path is relative to the WAR.</li>
* <li><b>EAR</b> - the WAR contents are extracted and added as dependencies to
* the scan. Any WAR files are also processed so that the contained JAR files
* are added to the list of dependencies. The displayed path is relative to the
* EAR.</li>
* </ul></p>
* <p>
* An analyzer that extracts files from archives and ensures any supported files contained within the archive are added
* to the dependency list.</p>
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer {
public class ArchiveAnalyzer extends AbstractFileTypeAnalyzer {
/**
* The logger.
*/
private static final Logger LOGGER = Logger.getLogger(ArchiveAnalyzer.class.getName());
/**
* The buffer size to use when extracting files from the archive.
*/
private static final int BUFFER_SIZE = 4096;
/**
* The count of directories created during analysis. This is used for
* creating temporary directories.
* The count of directories created during analysis. This is used for creating temporary directories.
*/
private static int dirCount = 0;
/**
@@ -74,15 +75,15 @@ public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer {
*/
private File tempFileLocation = null;
/**
* The max scan depth that the analyzer will recursively extract nested
* archives.
* The max scan depth that the analyzer will recursively extract nested archives.
*/
private static final int MAX_SCAN_DEPTH = Settings.getInt("archive.scan.depth", 3);
/**
* Tracks the current scan/extraction depth for nested archives.
*/
private int scanDepth = 0;
//<editor-fold defaultstate="collapsed" desc="All standard implmentation details of Analyzer">
//<editor-fold defaultstate="collapsed" desc="All standard implementation details of Analyzer">
/**
* The name of the analyzer.
*/
@@ -92,15 +93,35 @@ public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer {
*/
private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INITIAL;
/**
* The set of file extensions supported by this analyzer.
* The set of things we can handle with Zip methods
*/
private static final Set<String> EXTENSIONS = newHashSet("zip", "ear", "war");
private static final Set<String> ZIPPABLES = newHashSet("zip", "ear", "war", "jar", "sar", "apk", "nupkg");
/**
* The set of file extensions supported by this analyzer. Note for developers, any additions to this list will need
* to be explicitly handled in extractFiles().
*/
private static final Set<String> EXTENSIONS = newHashSet("tar", "gz", "tgz");
/**
* The set of file extensions to remove from the engine's collection of dependencies.
*/
private static final Set<String> REMOVE_FROM_ANALYSIS = newHashSet("zip", "tar", "gz", "tgz"); //TODO add nupkg, apk, sar?
static {
final String additionalZipExt = Settings.getString(Settings.KEYS.ADDITIONAL_ZIP_EXTENSIONS);
if (additionalZipExt != null) {
final HashSet<String> ext = new HashSet<String>(Arrays.asList(additionalZipExt));
ZIPPABLES.addAll(ext);
}
EXTENSIONS.addAll(ZIPPABLES);
}
/**
* Returns a list of file EXTENSIONS supported by this analyzer.
*
* @return a list of file EXTENSIONS supported by this analyzer.
*/
@Override
public Set<String> getSupportedExtensions() {
return EXTENSIONS;
}
@@ -110,87 +131,85 @@ public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer {
*
* @return the name of the analyzer.
*/
@Override
public String getName() {
return ANALYZER_NAME;
}
/**
* Returns whether or not this analyzer can process the given extension.
*
* @param extension the file extension to test for support.
* @return whether or not the specified file extension is supported by this
* analyzer.
*/
public boolean supportsExtension(String extension) {
return EXTENSIONS.contains(extension);
}
/**
* Returns the phase that the analyzer is intended to run in.
*
* @return the phase that the analyzer is intended to run in.
*/
@Override
public AnalysisPhase getAnalysisPhase() {
return ANALYSIS_PHASE;
}
//</editor-fold>
/**
* The initialize method does nothing for this Analyzer.
* Returns the key used in the properties file to reference the analyzer's enabled property.
*
* @throws Exception is thrown if there is an exception deleting or creating
* temporary files
* @return the analyzer's enabled property setting key
*/
@Override
public void initialize() throws Exception {
protected String getAnalyzerEnabledSettingKey() {
return Settings.KEYS.ANALYZER_ARCHIVE_ENABLED;
}
/**
* The initialize method does nothing for this Analyzer.
*
* @throws Exception is thrown if there is an exception deleting or creating temporary files
*/
@Override
public void initializeFileTypeAnalyzer() throws Exception {
final File baseDir = Settings.getTempDirectory();
if (!baseDir.exists()) {
if (!baseDir.mkdirs()) {
final String msg = String.format("Unable to make a temporary folder '%s'", baseDir.getPath());
throw new AnalysisException(msg);
}
}
tempFileLocation = File.createTempFile("check", "tmp", baseDir);
if (!tempFileLocation.delete()) {
throw new AnalysisException("Unable to delete temporary file '" + tempFileLocation.getAbsolutePath() + "'.");
final String msg = String.format("Unable to delete temporary file '%s'.", tempFileLocation.getAbsolutePath());
throw new AnalysisException(msg);
}
if (!tempFileLocation.mkdirs()) {
throw new AnalysisException("Unable to create directory '" + tempFileLocation.getAbsolutePath() + "'.");
final String msg = String.format("Unable to create directory '%s'.", tempFileLocation.getAbsolutePath());
throw new AnalysisException(msg);
}
}
/**
* The close method does nothing for this Analyzer.
* The close method deletes any temporary files and directories created during analysis.
*
* @throws Exception thrown if there is an exception deleting temporary
* files
* @throws Exception thrown if there is an exception deleting temporary files
*/
@Override
public void close() throws Exception {
if (tempFileLocation != null && tempFileLocation.exists()) {
FileUtils.deleteRecursive(tempFileLocation.getAbsolutePath(), true);
LOGGER.log(Level.FINE, "Attempting to delete temporary files");
final boolean success = FileUtils.delete(tempFileLocation);
if (!success && tempFileLocation != null && tempFileLocation.exists() && tempFileLocation.list().length > 0) {
LOGGER.log(Level.WARNING, "Failed to delete some temporary files, see the log for more details");
}
}
}
/**
* Analyzes a given dependency. If the dependency is an archive, such as a
* WAR or EAR, the contents are extracted, scanned, and added to the list of
* dependencies within the engine.
* Analyzes a given dependency. If the dependency is an archive, such as a WAR or EAR, the contents are extracted,
* scanned, and added to the list of dependencies within the engine.
*
* @param dependency the dependency to analyze
* @param engine the engine scanning
* @throws AnalysisException thrown if there is an analysis exception
*/
@Override
public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
public void analyzeFileType(Dependency dependency, Engine engine) throws AnalysisException {
final File f = new File(dependency.getActualFilePath());
final File tmpDir = getNextTempDirectory();
extractFiles(f, tmpDir, engine);
//make a copy
final List<Dependency> dependencies = new ArrayList<Dependency>(engine.getDependencies());
List<Dependency> dependencies = new ArrayList<Dependency>(engine.getDependencies());
engine.scan(tmpDir);
final List<Dependency> newDependencies = engine.getDependencies();
List<Dependency> newDependencies = engine.getDependencies();
if (dependencies.size() != newDependencies.size()) {
//get the new dependencies
final Set<Dependency> dependencySet = new HashSet<Dependency>();
@@ -202,15 +221,13 @@ public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer {
final String displayPath = String.format("%s%s",
dependency.getFilePath(),
d.getActualFilePath().substring(tmpDir.getAbsolutePath().length()));
final String displayName = String.format("%s%s%s",
final String displayName = String.format("%s: %s",
dependency.getFileName(),
File.separator,
d.getFileName());
d.setFilePath(displayPath);
d.setFileName(displayName);
//TODO - can we get more evidence from the parent? EAR contains module name, etc.
//analyze the dependency (i.e. extract files) if it is a supported type.
if (this.supportsExtension(d.getFileExtension()) && scanDepth < MAX_SCAN_DEPTH) {
scanDepth += 1;
@@ -219,6 +236,40 @@ public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer {
}
}
}
if (this.REMOVE_FROM_ANALYSIS.contains(dependency.getFileExtension())) {
if ("zip".equals(dependency.getFileExtension()) && isZipFileActuallyJarFile(dependency)) {
final File tdir = getNextTempDirectory();
final String fileName = dependency.getFileName();
LOGGER.info(String.format("The zip file '%s' appears to be a JAR file, making a copy and analyzing it as a JAR.", fileName));
final File tmpLoc = new File(tdir, fileName.substring(0, fileName.length() - 3) + "jar");
try {
org.apache.commons.io.FileUtils.copyFile(tdir, tmpLoc);
dependencies = new ArrayList<Dependency>(engine.getDependencies());
engine.scan(tmpLoc);
newDependencies = engine.getDependencies();
if (dependencies.size() != newDependencies.size()) {
//get the new dependencies
final Set<Dependency> dependencySet = new HashSet<Dependency>();
dependencySet.addAll(newDependencies);
dependencySet.removeAll(dependencies);
if (dependencySet.size() != 1) {
LOGGER.info("Deep copy of ZIP to JAR file resulted in more then one dependency?");
}
for (Dependency d : dependencySet) {
//fix the dependency's display name and path
d.setFilePath(dependency.getFilePath());
d.setDisplayFileName(dependency.getFileName());
}
}
} catch (IOException ex) {
final String msg = String.format("Unable to perform deep copy on '%s'", dependency.getActualFile().getPath());
LOGGER.log(Level.FINE, msg, ex);
}
}
engine.getDependencies().remove(dependency);
}
Collections.sort(engine.getDependencies());
}
@@ -231,8 +282,13 @@ public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer {
private File getNextTempDirectory() throws AnalysisException {
dirCount += 1;
final File directory = new File(tempFileLocation, String.valueOf(dirCount));
//getting an exception for some directories not being able to be created; might be because the directory already exists?
if (directory.exists()) {
return getNextTempDirectory();
}
if (!directory.mkdirs()) {
throw new AnalysisException("Unable to create temp directory '" + directory.getAbsolutePath() + "'.");
final String msg = String.format("Unable to create temp directory '%s'.", directory.getAbsolutePath());
throw new AnalysisException(msg);
}
return directory;
}
@@ -241,62 +297,117 @@ public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer {
* Extracts the contents of an archive into the specified directory.
*
* @param archive an archive file such as a WAR or EAR
* @param extractTo a directory to extract the contents to
* @param destination a directory to extract the contents to
* @param engine the scanning engine
* @throws AnalysisException thrown if the archive is not found
*/
private void extractFiles(File archive, File extractTo, Engine engine) throws AnalysisException {
if (archive == null || extractTo == null) {
private void extractFiles(File archive, File destination, Engine engine) throws AnalysisException {
if (archive == null || destination == null) {
return;
}
FileInputStream fis = null;
//ZipInputStream zis = null;
ZipArchiveInputStream zis = null;
try {
fis = new FileInputStream(archive);
} catch (FileNotFoundException ex) {
Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.INFO, null, ex);
LOGGER.log(Level.FINE, null, ex);
throw new AnalysisException("Archive file was not found.", ex);
}
zis = new ZipArchiveInputStream(new BufferedInputStream(fis));
ZipArchiveEntry entry;
final String archiveExt = FileUtils.getFileExtension(archive.getName()).toLowerCase();
try {
while ((entry = zis.getNextZipEntry()) != null) {
if (ZIPPABLES.contains(archiveExt)) {
extractArchive(new ZipArchiveInputStream(new BufferedInputStream(fis)), destination, engine);
} else if ("tar".equals(archiveExt)) {
extractArchive(new TarArchiveInputStream(new BufferedInputStream(fis)), destination, engine);
} else if ("gz".equals(archiveExt) || "tgz".equals(archiveExt)) {
final String uncompressedName = GzipUtils.getUncompressedFilename(archive.getName());
final String uncompressedExt = FileUtils.getFileExtension(uncompressedName).toLowerCase();
if (engine.supportsExtension(uncompressedExt)) {
decompressFile(new GzipCompressorInputStream(new BufferedInputStream(fis)), new File(destination, uncompressedName));
}
}
} catch (ArchiveExtractionException ex) {
final String msg = String.format("Exception extracting archive '%s'.", archive.getName());
LOGGER.log(Level.WARNING, msg);
LOGGER.log(Level.FINE, null, ex);
} catch (IOException ex) {
final String msg = String.format("Exception reading archive '%s'.", archive.getName());
LOGGER.log(Level.WARNING, msg);
LOGGER.log(Level.FINE, null, ex);
} finally {
try {
fis.close();
} catch (IOException ex) {
LOGGER.log(Level.FINE, null, ex);
}
}
}
/**
* Extracts files from an archive.
*
* @param input the archive to extract files from
* @param destination the location to write the files too
* @param engine the dependency-check engine
* @throws ArchiveExtractionException thrown if there is an exception extracting files from the archive
*/
private void extractArchive(ArchiveInputStream input, File destination, Engine engine) throws ArchiveExtractionException {
ArchiveEntry entry;
try {
while ((entry = input.getNextEntry()) != null) {
if (entry.isDirectory()) {
final File d = new File(extractTo, entry.getName());
if (!d.mkdirs()) {
throw new AnalysisException("Unable to create '" + d.getAbsolutePath() + "'.");
final File d = new File(destination, entry.getName());
if (!d.exists()) {
if (!d.mkdirs()) {
final String msg = String.format("Unable to create directory '%s'.", d.getAbsolutePath());
throw new AnalysisException(msg);
}
}
} else {
final File file = new File(extractTo, entry.getName());
final String ext = org.owasp.dependencycheck.utils.FileUtils.getFileExtension(file.getName());
final File file = new File(destination, entry.getName());
final String ext = FileUtils.getFileExtension(file.getName());
if (engine.supportsExtension(ext)) {
final String extracting = String.format("Extracting '%s'", file.getPath());
LOGGER.fine(extracting);
BufferedOutputStream bos = null;
FileOutputStream fos;
FileOutputStream fos = null;
try {
final File parent = file.getParentFile();
if (!parent.isDirectory()) {
if (!parent.mkdirs()) {
final String msg = String.format("Unable to build directory '%s'.", parent.getAbsolutePath());
throw new AnalysisException(msg);
}
}
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos, BUFFER_SIZE);
int count;
final byte data[] = new byte[BUFFER_SIZE];
while ((count = zis.read(data, 0, BUFFER_SIZE)) != -1) {
while ((count = input.read(data, 0, BUFFER_SIZE)) != -1) {
bos.write(data, 0, count);
}
bos.flush();
} catch (FileNotFoundException ex) {
Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex);
throw new AnalysisException("Unable to find file '" + file.getName() + "'.", ex);
LOGGER.log(Level.FINE, null, ex);
final String msg = String.format("Unable to find file '%s'.", file.getName());
throw new AnalysisException(msg, ex);
} catch (IOException ex) {
Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex);
throw new AnalysisException("IO Exception while parsing file '" + file.getName() + "'.", ex);
LOGGER.log(Level.FINE, null, ex);
final String msg = String.format("IO Exception while parsing file '%s'.", file.getName());
throw new AnalysisException(msg, ex);
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException ex) {
Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINEST, null, ex);
LOGGER.log(Level.FINEST, null, ex);
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException ex) {
LOGGER.log(Level.FINEST, null, ex);
}
}
}
@@ -304,21 +415,86 @@ public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer {
}
}
} catch (IOException ex) {
final String msg = String.format("Exception reading archive '%s'.", archive.getName());
Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.WARNING, msg);
Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex);
throw new AnalysisException(msg, ex);
throw new ArchiveExtractionException(ex);
} catch (Throwable ex) {
final String msg = String.format("Exception reading archive '%s'.", archive.getName());
Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.WARNING, msg);
Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.WARNING, null, ex);
throw new AnalysisException(msg, ex);
throw new ArchiveExtractionException(ex);
} finally {
try {
zis.close();
} catch (IOException ex) {
Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINEST, null, ex);
if (input != null) {
try {
input.close();
} catch (IOException ex) {
LOGGER.log(Level.FINEST, null, ex);
}
}
}
}
/**
* Decompresses a file.
*
* @param inputStream the compressed file
* @param outputFile the location to write the decompressed file
* @throws ArchiveExtractionException thrown if there is an exception decompressing the file
*/
private void decompressFile(CompressorInputStream inputStream, File outputFile) throws ArchiveExtractionException {
final String msg = String.format("Decompressing '%s'", outputFile.getPath());
LOGGER.fine(msg);
FileOutputStream out = null;
try {
out = new FileOutputStream(outputFile);
final byte[] buffer = new byte[BUFFER_SIZE];
int n = 0;
while (-1 != (n = inputStream.read(buffer))) {
out.write(buffer, 0, n);
}
} catch (FileNotFoundException ex) {
LOGGER.log(Level.FINE, null, ex);
throw new ArchiveExtractionException(ex);
} catch (IOException ex) {
LOGGER.log(Level.FINE, null, ex);
throw new ArchiveExtractionException(ex);
} finally {
if (out != null) {
try {
out.close();
} catch (IOException ex) {
LOGGER.log(Level.FINEST, null, ex);
}
}
}
}
/**
* Attempts to determine if a zip file is actually a JAR file.
*
* @param dependency the dependency to check
* @return true if the dependency appears to be a JAR file; otherwise false
*/
private boolean isZipFileActuallyJarFile(Dependency dependency) {
boolean isJar = false;
ZipFile zip = null;
try {
zip = new ZipFile(dependency.getActualFilePath());
if (zip.getEntry("META-INF/MANIFEST.MF") != null
|| zip.getEntry("META-INF/maven") != null) {
final Enumeration<ZipArchiveEntry> entries = zip.getEntries();
while (entries.hasMoreElements()) {
final ZipArchiveEntry entry = entries.nextElement();
if (!entry.isDirectory()) {
final String name = entry.getName().toLowerCase();
if (name.endsWith(".class")) {
isJar = true;
break;
}
}
}
}
} catch (IOException ex) {
LOGGER.log(Level.FINE, String.format("Unable to unzip zip file '%s'", dependency.getFilePath()), ex);
} finally {
ZipFile.closeQuietly(zip);
}
return isJar;
}
}

View File

@@ -0,0 +1,325 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.dependency.Confidence;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.dependency.Evidence;
import org.owasp.dependencycheck.utils.Settings;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
/**
* Analyzer for getting company, product, and version information from a .NET assembly.
*
* @author colezlaw
*
*/
public class AssemblyAnalyzer extends AbstractFileTypeAnalyzer {
/**
* The analyzer name
*/
private static final String ANALYZER_NAME = "Assembly Analyzer";
/**
* The analysis phase
*/
private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INFORMATION_COLLECTION;
/**
* The list of supported extensions
*/
private static final Set<String> SUPPORTED_EXTENSIONS = newHashSet("dll", "exe");
/**
* The temp value for GrokAssembly.exe
*/
private File grokAssemblyExe = null;
/**
* The DocumentBuilder for parsing the XML
*/
private DocumentBuilder builder;
/**
* Logger
*/
private static final Logger LOGGER = Logger.getLogger(AssemblyAnalyzer.class.getName(), "dependencycheck-resources");
/**
* Builds the beginnings of a List for ProcessBuilder
*
* @return the list of arguments to begin populating the ProcessBuilder
*/
private List<String> buildArgumentList() {
// Use file.separator as a wild guess as to whether this is Windows
final List<String> args = new ArrayList<String>();
if (!"\\".equals(System.getProperty("file.separator"))) {
if (Settings.getString(Settings.KEYS.ANALYZER_ASSEMBLY_MONO_PATH) != null) {
args.add(Settings.getString(Settings.KEYS.ANALYZER_ASSEMBLY_MONO_PATH));
} else {
args.add("mono");
}
}
args.add(grokAssemblyExe.getPath());
return args;
}
/**
* Performs the analysis on a single Dependency.
*
* @param dependency the dependency to analyze
* @param engine the engine to perform the analysis under
* @throws AnalysisException if anything goes sideways
*/
@Override
public void analyzeFileType(Dependency dependency, Engine engine)
throws AnalysisException {
if (grokAssemblyExe == null) {
LOGGER.warning("analyzer.AssemblyAnalyzer.notdeployed");
return;
}
final List<String> args = buildArgumentList();
args.add(dependency.getActualFilePath());
final ProcessBuilder pb = new ProcessBuilder(args);
BufferedReader rdr = null;
Document doc = null;
try {
final Process proc = pb.start();
// Try evacuating the error stream
rdr = new BufferedReader(new InputStreamReader(proc.getErrorStream(), "UTF-8"));
String line = null;
// CHECKSTYLE:OFF
while (rdr.ready() && (line = rdr.readLine()) != null) {
LOGGER.log(Level.WARNING, "analyzer.AssemblyAnalyzer.grokassembly.stderr", line);
}
// CHECKSTYLE:ON
int rc = 0;
doc = builder.parse(proc.getInputStream());
try {
rc = proc.waitFor();
} catch (InterruptedException ie) {
return;
}
if (rc == 3) {
LOGGER.log(Level.FINE, "analyzer.AssemblyAnalyzer.notassembly", dependency.getActualFilePath());
return;
} else if (rc != 0) {
LOGGER.log(Level.WARNING, "analyzer.AssemblyAnalyzer.grokassembly.rc", rc);
}
final XPath xpath = XPathFactory.newInstance().newXPath();
// First, see if there was an error
final String error = xpath.evaluate("/assembly/error", doc);
if (error != null && !"".equals(error)) {
throw new AnalysisException(error);
}
final String version = xpath.evaluate("/assembly/version", doc);
if (version != null) {
dependency.getVersionEvidence().addEvidence(new Evidence("grokassembly", "version",
version, Confidence.HIGHEST));
}
final String vendor = xpath.evaluate("/assembly/company", doc);
if (vendor != null) {
dependency.getVendorEvidence().addEvidence(new Evidence("grokassembly", "vendor",
vendor, Confidence.HIGH));
}
final String product = xpath.evaluate("/assembly/product", doc);
if (product != null) {
dependency.getProductEvidence().addEvidence(new Evidence("grokassembly", "product",
product, Confidence.HIGH));
}
} catch (IOException ioe) {
throw new AnalysisException(ioe);
} catch (SAXException saxe) {
throw new AnalysisException("Couldn't parse GrokAssembly result", saxe);
} catch (XPathExpressionException xpe) {
// This shouldn't happen
throw new AnalysisException(xpe);
} finally {
if (rdr != null) {
try {
rdr.close();
} catch (IOException ex) {
LOGGER.log(Level.FINEST, "ignore", ex);
}
}
}
}
/**
* Initialize the analyzer. In this case, extract GrokAssembly.exe to a temporary location.
*
* @throws Exception if anything goes wrong
*/
@Override
public void initializeFileTypeAnalyzer() throws Exception {
final File tempFile = File.createTempFile("GKA", ".exe", Settings.getTempDirectory());
FileOutputStream fos = null;
InputStream is = null;
try {
fos = new FileOutputStream(tempFile);
is = AssemblyAnalyzer.class.getClassLoader().getResourceAsStream("GrokAssembly.exe");
final byte[] buff = new byte[4096];
int bread = -1;
while ((bread = is.read(buff)) >= 0) {
fos.write(buff, 0, bread);
}
grokAssemblyExe = tempFile;
// Set the temp file to get deleted when we're done
grokAssemblyExe.deleteOnExit();
LOGGER.log(Level.FINE, "analyzer.AssemblyAnalyzer.grokassembly.deployed", grokAssemblyExe.getPath());
} catch (IOException ioe) {
this.setEnabled(false);
LOGGER.log(Level.WARNING, "analyzer.AssemblyAnalyzer.grokassembly.notdeployed", ioe.getMessage());
throw new AnalysisException("Could not extract GrokAssembly.exe", ioe);
} finally {
if (fos != null) {
try {
fos.close();
} catch (Throwable e) {
LOGGER.fine("Error closing output stream");
}
}
if (is != null) {
try {
is.close();
} catch (Throwable e) {
LOGGER.fine("Error closing input stream");
}
}
}
// Now, need to see if GrokAssembly actually runs from this location.
final List<String> args = buildArgumentList();
BufferedReader rdr = null;
try {
final ProcessBuilder pb = new ProcessBuilder(args);
final Process p = pb.start();
// Try evacuating the error stream
rdr = new BufferedReader(new InputStreamReader(p.getErrorStream(), "UTF-8"));
// CHECKSTYLE:OFF
while (rdr.ready() && rdr.readLine() != null) {
// We expect this to complain
}
// CHECKSTYLE:ON
final Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(p.getInputStream());
final XPath xpath = XPathFactory.newInstance().newXPath();
final String error = xpath.evaluate("/assembly/error", doc);
if (p.waitFor() != 1 || error == null || "".equals(error)) {
LOGGER.warning("An error occurred with the .NET AssemblyAnalyzer, please see the log for more details.");
LOGGER.fine("GrokAssembly.exe is not working properly");
grokAssemblyExe = null;
this.setEnabled(false);
throw new AnalysisException("Could not execute .NET AssemblyAnalyzer");
}
} catch (Throwable e) {
if (e instanceof AnalysisException) {
throw (AnalysisException) e;
} else {
LOGGER.warning("analyzer.AssemblyAnalyzer.grokassembly.initialization.failed");
LOGGER.log(Level.FINE, "analyzer.AssemblyAnalyzer.grokassembly.initialization.message", e.getMessage());
this.setEnabled(false);
throw new AnalysisException("An error occured with the .NET AssemblyAnalyzer", e);
}
} finally {
if (rdr != null) {
try {
rdr.close();
} catch (IOException ex) {
LOGGER.log(Level.FINEST, "ignore", ex);
}
}
}
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
}
@Override
public void close() throws Exception {
super.close();
try {
if (grokAssemblyExe != null && !grokAssemblyExe.delete()) {
grokAssemblyExe.deleteOnExit();
}
} catch (SecurityException se) {
LOGGER.fine("analyzer.AssemblyAnalyzer.grokassembly.notdeleted");
}
}
/**
* Gets the set of extensions supported by this analyzer.
*
* @return the list of supported extensions
*/
@Override
public Set<String> getSupportedExtensions() {
return SUPPORTED_EXTENSIONS;
}
/**
* Gets this analyzer's name.
*
* @return the analyzer name
*/
@Override
public String getName() {
return ANALYZER_NAME;
}
/**
* Returns the phase this analyzer runs under.
*
* @return the phase this runs under
*/
@Override
public AnalysisPhase getAnalysisPhase() {
return ANALYSIS_PHASE;
}
/**
* Returns the key used in the properties file to reference the analyzer's enabled property.
*
* @return the analyzer's enabled property setting key
*/
@Override
protected String getAnalyzerEnabledSettingKey() {
return Settings.KEYS.ANALYZER_ASSEMBLY_ENABLED;
}
}

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -21,7 +20,6 @@ package org.owasp.dependencycheck.analyzer;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -35,30 +33,35 @@ import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.data.lucene.LuceneUtils;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.dependency.Evidence;
import org.owasp.dependencycheck.dependency.Evidence.Confidence;
import org.owasp.dependencycheck.dependency.EvidenceCollection;
import org.owasp.dependencycheck.data.cpe.CpeIndexReader;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.data.cpe.CpeMemoryIndex;
import org.owasp.dependencycheck.data.cpe.Fields;
import org.owasp.dependencycheck.data.cpe.IndexEntry;
import org.owasp.dependencycheck.data.cpe.IndexException;
import org.owasp.dependencycheck.data.lucene.LuceneUtils;
import org.owasp.dependencycheck.data.nvdcve.CveDB;
import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
import org.owasp.dependencycheck.dependency.Confidence;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.dependency.Evidence;
import org.owasp.dependencycheck.dependency.EvidenceCollection;
import org.owasp.dependencycheck.dependency.Identifier;
import org.owasp.dependencycheck.dependency.VulnerableSoftware;
import org.owasp.dependencycheck.utils.DependencyVersion;
import org.owasp.dependencycheck.utils.DependencyVersionUtil;
/**
* CPEAnalyzer is a utility class that takes a project dependency and attempts
* to discern if there is an associated CPE. It uses the evidence contained
* within the dependency to search the Lucene index.
* CPEAnalyzer is a utility class that takes a project dependency and attempts to discern if there is an associated CPE.
* It uses the evidence contained within the dependency to search the Lucene index.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class CPEAnalyzer implements Analyzer {
/**
* The Logger.
*/
private static final Logger LOGGER = Logger.getLogger(CPEAnalyzer.class.getName());
/**
* The maximum number of query results to return.
*/
@@ -68,54 +71,84 @@ public class CPEAnalyzer implements Analyzer {
*/
static final String WEIGHTING_BOOST = "^5";
/**
* A string representation of a regular expression defining characters
* utilized within the CPE Names.
* A string representation of a regular expression defining characters utilized within the CPE Names.
*/
static final String CLEANSE_CHARACTER_RX = "[^A-Za-z0-9 ._-]";
/**
* A string representation of a regular expression used to remove all but
* alpha characters.
* A string representation of a regular expression used to remove all but alpha characters.
*/
static final String CLEANSE_NONALPHA_RX = "[^A-Za-z]*";
/**
* The additional size to add to a new StringBuilder to account for extra
* data that will be written into the string.
* The additional size to add to a new StringBuilder to account for extra data that will be written into the string.
*/
static final int STRING_BUILDER_BUFFER = 20;
/**
* The CPE Index Reader.
* The CPE in memory index.
*/
private CpeIndexReader cpe;
private CpeMemoryIndex cpe;
/**
* The CVE Database.
*/
private CveDB cve;
/**
* The URL to perform a search of the NVD CVE data at NIST.
*/
public static final String NVD_SEARCH_URL = "https://web.nvd.nist.gov/view/vuln/search-results?adv_search=true&cves=on&cpe_version=%s";
/**
* Returns the name of this analyzer.
*
* @return the name of this analyzer.
*/
@Override
public String getName() {
return "CPE Analyzer";
}
/**
* Returns the analysis phase that this analyzer should run in.
*
* @return the analysis phase that this analyzer should run in.
*/
@Override
public AnalysisPhase getAnalysisPhase() {
return AnalysisPhase.IDENTIFIER_ANALYSIS;
}
/**
* Creates the CPE Lucene Index.
*
* @throws Exception is thrown if there is an issue opening the index.
*/
@Override
public void initialize() throws Exception {
this.open();
}
/**
* Opens the data source.
*
* @throws IOException when the Lucene directory to be queried does not
* exist or is corrupt.
* @throws DatabaseException when the database throws an exception. This
* usually occurs when the database is in use by another process.
* @throws IOException when the Lucene directory to be queried does not exist or is corrupt.
* @throws DatabaseException when the database throws an exception. This usually occurs when the database is in use
* by another process.
*/
public void open() throws IOException, DatabaseException {
cpe = new CpeIndexReader();
cpe.open();
LOGGER.log(Level.FINE, "Opening the CVE Database");
cve = new CveDB();
cve.open();
LOGGER.log(Level.FINE, "Creating the Lucene CPE Index");
cpe = CpeMemoryIndex.getInstance();
try {
cve.open();
} catch (SQLException ex) {
Logger.getLogger(CPEAnalyzer.class.getName()).log(Level.FINE, null, ex);
throw new DatabaseException("Unable to open the cve db", ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(CPEAnalyzer.class.getName()).log(Level.FINE, null, ex);
throw new DatabaseException("Unable to open the cve db", ex);
cpe.open(cve);
} catch (IndexException ex) {
LOGGER.log(Level.FINE, "IndexException", ex);
throw new DatabaseException(ex);
}
}
/**
* Closes the data source.
* Closes the data sources.
*/
@Override
public void close() {
@@ -128,31 +161,8 @@ public class CPEAnalyzer implements Analyzer {
}
/**
* Returns the status of the data source - is the index open.
*
* @return true or false.
*/
public boolean isOpen() {
return (cpe != null) && cpe.isOpen();
}
/**
* Ensures that the Lucene index is closed.
*
* @throws Throwable when a throwable is thrown.
*/
@Override
protected void finalize() throws Throwable {
super.finalize();
if (isOpen()) {
close();
}
}
/**
* Searches the data store of CPE entries, trying to identify the CPE for
* the given dependency based on the evidence contained within. The
* dependency passed in is updated with any identified CPE values.
* Searches the data store of CPE entries, trying to identify the CPE for the given dependency based on the evidence
* contained within. The dependency passed in is updated with any identified CPE values.
*
* @param dependency the dependency to search for CPE entries on.
* @throws CorruptIndexException is thrown when the Lucene index is corrupt.
@@ -160,42 +170,46 @@ public class CPEAnalyzer implements Analyzer {
* @throws ParseException is thrown when the Lucene query cannot be parsed.
*/
protected void determineCPE(Dependency dependency) throws CorruptIndexException, IOException, ParseException {
Confidence vendorConf = Confidence.HIGHEST;
Confidence productConf = Confidence.HIGHEST;
String vendors = addEvidenceWithoutDuplicateTerms("", dependency.getVendorEvidence(), vendorConf);
String products = addEvidenceWithoutDuplicateTerms("", dependency.getProductEvidence(), productConf);
int ctr = 0;
do {
//TODO test dojo-war against this. we shold get dojo-toolkit:dojo-toolkit AND dojo-toolkit:toolkit
String vendors = "";
String products = "";
for (Confidence confidence : Confidence.values()) {
if (dependency.getVendorEvidence().contains(confidence)) {
vendors = addEvidenceWithoutDuplicateTerms(vendors, dependency.getVendorEvidence(), confidence);
}
if (dependency.getProductEvidence().contains(confidence)) {
products = addEvidenceWithoutDuplicateTerms(products, dependency.getProductEvidence(), confidence);
}
/* bug fix for #40 - version evidence is not showing up as "used" in the reports if there is no
* CPE identified. As such, we are "using" the evidence and ignoring the results. */
// if (dependency.getVersionEvidence().contains(confidence)) {
// addEvidenceWithoutDuplicateTerms("", dependency.getVersionEvidence(), confidence);
// }
if (!vendors.isEmpty() && !products.isEmpty()) {
final List<IndexEntry> entries = searchCPE(vendors, products, dependency.getProductEvidence().getWeighting(),
dependency.getVendorEvidence().getWeighting());
if (entries == null) {
continue;
}
boolean identifierAdded = false;
for (IndexEntry e : entries) {
if (verifyEntry(e, dependency)) {
final String vendor = e.getVendor();
final String product = e.getProduct();
determineIdentifiers(dependency, vendor, product);
identifierAdded |= determineIdentifiers(dependency, vendor, product, confidence);
}
}
if (identifierAdded) {
break;
}
}
vendorConf = reduceConfidence(vendorConf);
if (dependency.getVendorEvidence().contains(vendorConf)) {
vendors = addEvidenceWithoutDuplicateTerms(vendors, dependency.getVendorEvidence(), vendorConf);
}
productConf = reduceConfidence(productConf);
if (dependency.getProductEvidence().contains(productConf)) {
products = addEvidenceWithoutDuplicateTerms(products, dependency.getProductEvidence(), productConf);
}
} while ((++ctr) < 4);
}
}
/**
* Returns the text created by concatenating the text and the values from
* the EvidenceCollection (filtered for a specific confidence). This
* attempts to prevent duplicate terms from being added.<br/<br/> Note, if
* the evidence is longer then 200 characters it will be truncated.
* Returns the text created by concatenating the text and the values from the EvidenceCollection (filtered for a
* specific confidence). This attempts to prevent duplicate terms from being added.<br/<br/> Note, if the evidence
* is longer then 200 characters it will be truncated.
*
* @param text the base text.
* @param ec an EvidenceCollection
@@ -225,57 +239,37 @@ public class CPEAnalyzer implements Analyzer {
}
/**
* Reduces the given confidence by one level. This returns LOW if the
* confidence passed in is not HIGH.
* <p>
* Searches the Lucene CPE index to identify possible CPE entries associated with the supplied vendor, product, and
* version.</p>
*
* @param c the confidence to reduce.
* @return One less then the confidence passed in.
*/
private Confidence reduceConfidence(final Confidence c) {
if (c == Confidence.HIGHEST) {
return Confidence.HIGH;
} else if (c == Confidence.HIGH) {
return Confidence.MEDIUM;
} else {
return Confidence.LOW;
}
}
/**
* <p>Searches the Lucene CPE index to identify possible CPE entries
* associated with the supplied vendor, product, and version.</p>
*
* <p>If either the vendorWeightings or productWeightings lists have been
* populated this data is used to add weighting factors to the search.</p>
* <p>
* If either the vendorWeightings or productWeightings lists have been populated this data is used to add weighting
* factors to the search.</p>
*
* @param vendor the text used to search the vendor field
* @param product the text used to search the product field
* @param vendorWeightings a list of strings to use to add weighting factors
* to the vendor field
* @param productWeightings Adds a list of strings that will be used to add
* weighting factors to the product search
* @param vendorWeightings a list of strings to use to add weighting factors to the vendor field
* @param productWeightings Adds a list of strings that will be used to add weighting factors to the product search
* @return a list of possible CPE values
* @throws CorruptIndexException when the Lucene index is corrupt
* @throws IOException when the Lucene index is not found
* @throws ParseException when the generated query is not valid
*/
protected List<IndexEntry> searchCPE(String vendor, String product,
Set<String> vendorWeightings, Set<String> productWeightings)
throws CorruptIndexException, IOException, ParseException {
Set<String> vendorWeightings, Set<String> productWeightings) {
final ArrayList<IndexEntry> ret = new ArrayList<IndexEntry>(MAX_QUERY_RESULTS);
final String searchString = buildSearch(vendor, product, vendorWeightings, productWeightings);
if (searchString == null) {
return ret;
}
final TopDocs docs = cpe.search(searchString, MAX_QUERY_RESULTS);
for (ScoreDoc d : docs.scoreDocs) {
if (d.score >= 0.08) {
final Document doc = cpe.getDocument(d.doc);
final IndexEntry entry = new IndexEntry();
entry.setVendor(doc.get(Fields.VENDOR));
entry.setProduct(doc.get(Fields.PRODUCT));
try {
final TopDocs docs = cpe.search(searchString, MAX_QUERY_RESULTS);
for (ScoreDoc d : docs.scoreDocs) {
if (d.score >= 0.08) {
final Document doc = cpe.getDocument(d.doc);
final IndexEntry entry = new IndexEntry();
entry.setVendor(doc.get(Fields.VENDOR));
entry.setProduct(doc.get(Fields.PRODUCT));
// if (d.score < 0.08) {
// System.out.print(entry.getVendor());
// System.out.print(":");
@@ -283,29 +277,37 @@ public class CPEAnalyzer implements Analyzer {
// System.out.print(":");
// System.out.println(d.score);
// }
entry.setSearchScore(d.score);
if (!ret.contains(entry)) {
ret.add(entry);
entry.setSearchScore(d.score);
if (!ret.contains(entry)) {
ret.add(entry);
}
}
}
return ret;
} catch (ParseException ex) {
final String msg = String.format("Unable to parse: %s", searchString);
LOGGER.log(Level.WARNING, "An error occured querying the CPE data. See the log for more details.");
LOGGER.log(Level.INFO, msg, ex);
} catch (IOException ex) {
final String msg = String.format("IO Error with search string: %s", searchString);
LOGGER.log(Level.WARNING, "An error occured reading CPE data. See the log for more details.");
LOGGER.log(Level.INFO, msg, ex);
}
return ret;
return null;
}
/**
* <p>Builds a Lucene search string by properly escaping data and
* constructing a valid search query.</p>
* <p>
* Builds a Lucene search string by properly escaping data and constructing a valid search query.</p>
*
* <p>If either the possibleVendor or possibleProducts lists have been
* populated this data is used to add weighting factors to the search string
* generated.</p>
* <p>
* If either the possibleVendor or possibleProducts lists have been populated this data is used to add weighting
* factors to the search string generated.</p>
*
* @param vendor text to search the vendor field
* @param product text to search the product field
* @param vendorWeighting a list of strings to apply to the vendor to boost
* the terms weight
* @param productWeightings a list of strings to apply to the product to
* boost the terms weight
* @param vendorWeighting a list of strings to apply to the vendor to boost the terms weight
* @param productWeightings a list of strings to apply to the product to boost the terms weight
* @return the Lucene query
*/
protected String buildSearch(String vendor, String product,
@@ -326,17 +328,14 @@ public class CPEAnalyzer implements Analyzer {
}
/**
* This method constructs a Lucene query for a given field. The searchText
* is split into separate words and if the word is within the list of
* weighted words then an additional weighting is applied to the term as it
* is appended into the query.
* This method constructs a Lucene query for a given field. The searchText is split into separate words and if the
* word is within the list of weighted words then an additional weighting is applied to the term as it is appended
* into the query.
*
* @param sb a StringBuilder that the query text will be appended to.
* @param field the field within the Lucene index that the query is
* searching.
* @param field the field within the Lucene index that the query is searching.
* @param searchText text used to construct the query.
* @param weightedText a list of terms that will be considered higher
* importance when searching.
* @param weightedText a list of terms that will be considered higher importance when searching.
* @return if the append was successful.
*/
private boolean appendWeightedSearch(StringBuilder sb, String field, String searchText, Set<String> weightedText) {
@@ -375,8 +374,7 @@ public class CPEAnalyzer implements Analyzer {
}
/**
* Removes characters from the input text that are not used within the CPE
* index.
* Removes characters from the input text that are not used within the CPE index.
*
* @param text is the text to remove the characters from.
* @return the text having removed some characters.
@@ -386,8 +384,7 @@ public class CPEAnalyzer implements Analyzer {
}
/**
* Compares two strings after lower casing them and removing the non-alpha
* characters.
* Compares two strings after lower casing them and removing the non-alpha characters.
*
* @param l string one to compare.
* @param r string two to compare.
@@ -404,9 +401,8 @@ public class CPEAnalyzer implements Analyzer {
}
/**
* Ensures that the CPE Identified matches the dependency. This validates
* that the product, vendor, and version information for the CPE are
* contained within the dependencies evidence.
* Ensures that the CPE Identified matches the dependency. This validates that the product, vendor, and version
* information for the CPE are contained within the dependencies evidence.
*
* @param entry a CPE entry.
* @param dependency the dependency that the CPE entries could be for.
@@ -442,7 +438,6 @@ public class CPEAnalyzer implements Analyzer {
// }
// }
//</editor-fold>
//TODO - likely need to change the split... not sure if this will work for CPE with special chars
if (text == null) {
return false;
@@ -451,8 +446,10 @@ public class CPEAnalyzer implements Analyzer {
final List<String> list = new ArrayList<String>();
String tempWord = null;
for (String word : words) {
//single letter words should be concatonated with the next word.
// so { "m", "core", "sample" } -> { "mcore", "sample" }
/*
single letter words should be concatenated with the next word.
so { "m", "core", "sample" } -> { "mcore", "sample" }
*/
if (tempWord != null) {
list.add(tempWord + word);
tempWord = null;
@@ -474,13 +471,11 @@ public class CPEAnalyzer implements Analyzer {
}
/**
* Analyzes a dependency and attempts to determine if there are any CPE
* identifiers for this dependency.
* Analyzes a dependency and attempts to determine if there are any CPE identifiers for this dependency.
*
* @param dependency The Dependency to analyze.
* @param engine The analysis engine
* @throws AnalysisException is thrown if there is an issue analyzing the
* dependency.
* @throws AnalysisException is thrown if there is an issue analyzing the dependency.
*/
@Override
public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
@@ -496,74 +491,28 @@ public class CPEAnalyzer implements Analyzer {
}
/**
* Returns true because this analyzer supports all dependency types.
*
* @return true.
*/
@Override
public Set<String> getSupportedExtensions() {
return null;
}
/**
* Returns the name of this analyzer.
*
* @return the name of this analyzer.
*/
@Override
public String getName() {
return "CPE Analyzer";
}
/**
* Returns true because this analyzer supports all dependency types.
*
* @param extension the file extension of the dependency being analyzed.
* @return true.
*/
@Override
public boolean supportsExtension(String extension) {
return true;
}
/**
* Returns the analysis phase that this analyzer should run in.
*
* @return the analysis phase that this analyzer should run in.
*/
@Override
public AnalysisPhase getAnalysisPhase() {
return AnalysisPhase.IDENTIFIER_ANALYSIS;
}
/**
* Opens the CPE Lucene Index.
*
* @throws Exception is thrown if there is an issue opening the index.
*/
@Override
public void initialize() throws Exception {
this.open();
}
/**
* Retrieves a list of CPE values from the CveDB based on the vendor and
* product passed in. The list is then validated to find only CPEs that are
* valid for the given dependency. It is possible that the CPE identified is
* a best effort "guess" based on the vendor, product, and version
* information.
* Retrieves a list of CPE values from the CveDB based on the vendor and product passed in. The list is then
* validated to find only CPEs that are valid for the given dependency. It is possible that the CPE identified is a
* best effort "guess" based on the vendor, product, and version information.
*
* @param dependency the Dependency being analyzed
* @param vendor the vendor for the CPE being analyzed
* @param product the product for the CPE being analyzed
* @param currentConfidence the current confidence being used during analysis
* @return <code>true</code> if an identifier was added to the dependency; otherwise <code>false</code>
* @throws UnsupportedEncodingException is thrown if UTF-8 is not supported
*/
private void determineIdentifiers(Dependency dependency, String vendor, String product) throws UnsupportedEncodingException {
protected boolean determineIdentifiers(Dependency dependency, String vendor, String product,
Confidence currentConfidence) throws UnsupportedEncodingException {
final Set<VulnerableSoftware> cpes = cve.getCPEs(vendor, product);
DependencyVersion bestGuess = new DependencyVersion("-");
Confidence bestGuessConf = null;
boolean hasBroadMatch = false;
final List<IdentifierMatch> collected = new ArrayList<IdentifierMatch>();
for (Confidence conf : Confidence.values()) {
// if (conf.compareTo(currentConfidence) > 0) {
// break;
// }
for (Evidence evidence : dependency.getVersionEvidence().iterator(conf)) {
final DependencyVersion evVer = DependencyVersionUtil.parseVersion(evidence.getValue());
if (evVer == null) {
@@ -576,9 +525,13 @@ public class CPEAnalyzer implements Analyzer {
} else {
dbVer = DependencyVersionUtil.parseVersion(vs.getVersion());
}
if (dbVer == null //special case, no version specified - everything is vulnerable
|| evVer.equals(dbVer)) { //woot exect match
final String url = String.format("http://web.nvd.nist.gov/view/vuln/search?cpe=%s", URLEncoder.encode(vs.getName(), "UTF-8"));
if (dbVer == null) { //special case, no version specified - everything is vulnerable
hasBroadMatch = true;
final String url = String.format(NVD_SEARCH_URL, URLEncoder.encode(vs.getName(), "UTF-8"));
final IdentifierMatch match = new IdentifierMatch("cpe", vs.getName(), url, IdentifierConfidence.BROAD_MATCH, conf);
collected.add(match);
} else if (evVer.equals(dbVer)) { //yeah! exact match
final String url = String.format(NVD_SEARCH_URL, URLEncoder.encode(vs.getName(), "UTF-8"));
final IdentifierMatch match = new IdentifierMatch("cpe", vs.getName(), url, IdentifierConfidence.EXACT_MATCH, conf);
collected.add(match);
} else {
@@ -603,7 +556,11 @@ public class CPEAnalyzer implements Analyzer {
}
}
final String cpeName = String.format("cpe:/a:%s:%s:%s", vendor, product, bestGuess.toString());
final String url = null; //String.format("http://web.nvd.nist.gov/view/vuln/search?cpe=%s", URLEncoder.encode(cpeName, "UTF-8"));
String url = null;
if (hasBroadMatch) { //if we have a broad match we can add the URL to the best guess.
final String cpeUrlName = String.format("cpe:/a:%s:%s", vendor, product);
url = String.format(NVD_SEARCH_URL, URLEncoder.encode(cpeUrlName, "UTF-8"));
}
if (bestGuessConf == null) {
bestGuessConf = Confidence.LOW;
}
@@ -613,12 +570,21 @@ public class CPEAnalyzer implements Analyzer {
Collections.sort(collected);
final IdentifierConfidence bestIdentifierQuality = collected.get(0).getConfidence();
final Confidence bestEvidenceQuality = collected.get(0).getEvidenceConfidence();
boolean identifierAdded = false;
for (IdentifierMatch m : collected) {
if (bestIdentifierQuality.equals(m.getConfidence())
&& bestEvidenceQuality.equals(m.getEvidenceConfidence())) {
dependency.addIdentifier(m.getIdentifier());
final Identifier i = m.getIdentifier();
if (bestIdentifierQuality == IdentifierConfidence.BEST_GUESS) {
i.setConfidence(Confidence.LOW);
} else {
i.setConfidence(bestEvidenceQuality);
}
dependency.addIdentifier(i);
identifierAdded = true;
}
}
return identifierAdded;
}
/**
@@ -633,25 +599,27 @@ public class CPEAnalyzer implements Analyzer {
/**
* A best guess for the CPE.
*/
BEST_GUESS
BEST_GUESS,
/**
* The entire vendor/product group must be added (without a guess at version) because there is a CVE with a VS
* that only specifies vendor/product.
*/
BROAD_MATCH
}
/**
* A simple object to hold an identifier and carry information about the
* confidence in the identifier.
* A simple object to hold an identifier and carry information about the confidence in the identifier.
*/
private static class IdentifierMatch implements Comparable<IdentifierMatch> {
/**
* Constructs an IdentiferMatch.
* Constructs an IdentifierMatch.
*
* @param type the type of identifier (such as CPE)
* @param value the value of the identifier
* @param url the URL of the identifier
* @param identifierConfidence the confidence in the identifier: best
* guess or exact match
* @param evidenceConfidence the confidence of the evidence used to find
* the identifier
* @param identifierConfidence the confidence in the identifier: best guess or exact match
* @param evidenceConfidence the confidence of the evidence used to find the identifier
*/
IdentifierMatch(String type, String value, String url, IdentifierConfidence identifierConfidence, Confidence evidenceConfidence) {
this.identifier = new Identifier(type, value, url);
@@ -782,8 +750,8 @@ public class CPEAnalyzer implements Analyzer {
//</editor-fold>
/**
* Standard implementation of compareTo that compares identifier
* confidence, evidence confidence, and then the identifier.
* Standard implementation of compareTo that compares identifier confidence, evidence confidence, and then the
* identifier.
*
* @param o the IdentifierMatch to compare to
* @return the natural ordering of IdentifierMatch

View File

@@ -0,0 +1,201 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2014 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.data.central.CentralSearch;
import org.owasp.dependencycheck.data.nexus.MavenArtifact;
import org.owasp.dependencycheck.dependency.Confidence;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.utils.InvalidSettingException;
import org.owasp.dependencycheck.utils.Settings;
/**
* Analyzer which will attempt to locate a dependency, and the GAV information, by querying Central for the dependency's
* SHA-1 digest.
*
* @author colezlaw
*/
public class CentralAnalyzer extends AbstractFileTypeAnalyzer {
/**
* The logger.
*/
private static final Logger LOGGER = Logger.getLogger(CentralAnalyzer.class.getName());
/**
* The name of the analyzer.
*/
private static final String ANALYZER_NAME = "Central Analyzer";
/**
* The phase in which this analyzer runs.
*/
private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INFORMATION_COLLECTION;
/**
* The types of files on which this will work.
*/
private static final Set<String> SUPPORTED_EXTENSIONS = newHashSet("jar");
/**
* The analyzer should be disabled if there are errors, so this is a flag to determine if such an error has
* occurred.
*/
private boolean errorFlag = false;
/**
* The searcher itself.
*/
private CentralSearch searcher;
/**
* Field indicating if the analyzer is enabled.
*/
private final boolean enabled = checkEnabled();
/**
* Determine whether to enable this analyzer or not.
*
* @return whether the analyzer should be enabled
*/
@Override
public boolean isEnabled() {
return enabled;
}
/**
* Determines if this analyzer is enabled.
*
* @return <code>true</code> if the analyzer is enabled; otherwise <code>false</code>
*/
private boolean checkEnabled() {
boolean retval = false;
try {
if (Settings.getBoolean(Settings.KEYS.ANALYZER_CENTRAL_ENABLED)) {
if (!Settings.getBoolean(Settings.KEYS.ANALYZER_NEXUS_ENABLED)
|| NexusAnalyzer.DEFAULT_URL.equals(Settings.getString(Settings.KEYS.ANALYZER_NEXUS_URL))) {
LOGGER.fine("Enabling the Central analyzer");
retval = true;
} else {
LOGGER.info("Nexus analyzer is enabled, disabling the Central Analyzer");
}
} else {
LOGGER.info("Central analyzer disabled");
}
} catch (InvalidSettingException ise) {
LOGGER.warning("Invalid setting. Disabling the Central analyzer");
}
return retval;
}
/**
* Initializes the analyzer once before any analysis is performed.
*
* @throws Exception if there's an error during initialization
*/
@Override
public void initializeFileTypeAnalyzer() throws Exception {
LOGGER.fine("Initializing Central analyzer");
LOGGER.fine(String.format("Central analyzer enabled: %s", isEnabled()));
if (isEnabled()) {
final String searchUrl = Settings.getString(Settings.KEYS.ANALYZER_CENTRAL_URL);
LOGGER.fine(String.format("Central Analyzer URL: %s", searchUrl));
searcher = new CentralSearch(new URL(searchUrl));
}
}
/**
* Returns the analyzer's name.
*
* @return the name of the analyzer
*/
@Override
public String getName() {
return ANALYZER_NAME;
}
/**
* Returns the key used in the properties file to to reference the analyzer's enabled property.
*
* @return the analyzer's enabled property setting key.
*/
@Override
protected String getAnalyzerEnabledSettingKey() {
return Settings.KEYS.ANALYZER_CENTRAL_ENABLED;
}
/**
* Returns the analysis phase under which the analyzer runs.
*
* @return the phase under which the analyzer runs
*/
@Override
public AnalysisPhase getAnalysisPhase() {
return ANALYSIS_PHASE;
}
/**
* Returns the extensions for which this Analyzer runs.
*
* @return the extensions for which this Analyzer runs
*/
@Override
public Set<String> getSupportedExtensions() {
return SUPPORTED_EXTENSIONS;
}
/**
* Performs the analysis.
*
* @param dependency the dependency to analyze
* @param engine the engine
* @throws AnalysisException when there's an exception during analysis
*/
@Override
public void analyzeFileType(Dependency dependency, Engine engine) throws AnalysisException {
if (errorFlag || !isEnabled()) {
return;
}
try {
final List<MavenArtifact> mas = searcher.searchSha1(dependency.getSha1sum());
final Confidence confidence = mas.size() > 1 ? Confidence.HIGH : Confidence.HIGHEST;
for (MavenArtifact ma : mas) {
LOGGER.fine(String.format("Central analyzer found artifact (%s) for dependency (%s)", ma.toString(), dependency.getFileName()));
dependency.addAsEvidence("central", ma, confidence);
}
} catch (IllegalArgumentException iae) {
LOGGER.info(String.format("invalid sha1-hash on %s", dependency.getFileName()));
} catch (FileNotFoundException fnfe) {
LOGGER.fine(String.format("Artifact not found in repository: '%s", dependency.getFileName()));
} catch (IOException ioe) {
LOGGER.log(Level.FINE, "Could not connect to Central search", ioe);
errorFlag = true;
}
}
}

View File

@@ -0,0 +1,75 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.suppression.SuppressionRule;
/**
* The suppression analyzer processes an externally defined XML document that complies with the suppressions.xsd schema.
* Any identified CPE entries within the dependencies that match will be removed.
*
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class CpeSuppressionAnalyzer extends AbstractSuppressionAnalyzer {
//<editor-fold defaultstate="collapsed" desc="All standard implementation details of Analyzer">
/**
* The name of the analyzer.
*/
private static final String ANALYZER_NAME = "Cpe Suppression Analyzer";
/**
* The phase that this analyzer is intended to run in.
*/
private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.POST_IDENTIFIER_ANALYSIS;
/**
* Returns the name of the analyzer.
*
* @return the name of the analyzer.
*/
@Override
public String getName() {
return ANALYZER_NAME;
}
/**
* Returns the phase that the analyzer is intended to run in.
*
* @return the phase that the analyzer is intended to run in.
*/
@Override
public AnalysisPhase getAnalysisPhase() {
return ANALYSIS_PHASE;
}
//</editor-fold>
@Override
public void analyze(final Dependency dependency, final Engine engine) throws AnalysisException {
if (getRules() == null || getRules().size() <= 0) {
return;
}
for (final SuppressionRule rule : getRules()) {
rule.process(dependency);
}
}
}

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -23,41 +22,46 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.ListIterator;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.dependency.Identifier;
import org.owasp.dependencycheck.utils.DependencyVersion;
import org.owasp.dependencycheck.utils.DependencyVersionUtil;
import org.owasp.dependencycheck.utils.LogUtils;
/**
* <p>This analyzer ensures dependencies that should be grouped together, to
* remove excess noise from the report, are grouped. An example would be Spring,
* Spring Beans, Spring MVC, etc. If they are all for the same version and have
* the same relative path then these should be grouped into a single dependency
* under the core/main library.</p>
* <p>Note, this grouping only works on dependencies with identified CVE
* entries</p>
* <p>
* This analyzer ensures dependencies that should be grouped together, to remove excess noise from the report, are
* grouped. An example would be Spring, Spring Beans, Spring MVC, etc. If they are all for the same version and have the
* same relative path then these should be grouped into a single dependency under the core/main library.</p>
* <p>
* Note, this grouping only works on dependencies with identified CVE entries</p>
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class DependencyBundlingAnalyzer extends AbstractAnalyzer implements Analyzer {
/**
* The Logger.
*/
private static final Logger LOGGER = Logger.getLogger(DependencyBundlingAnalyzer.class.getName());
//<editor-fold defaultstate="collapsed" desc="Constants and Member Variables">
/**
* A pattern for obtaining the first part of a filename.
*/
private static final Pattern STARTING_TEXT_PATTERN = Pattern.compile("^[a-zA-Z]*");
private static final Pattern STARTING_TEXT_PATTERN = Pattern.compile("^[a-zA-Z0-9]*");
/**
* a flag indicating if this analyzer has run. This analyzer only runs once.
*/
private boolean analyzed = false;
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="All standard implmentation details of Analyzer">
/**
* The set of file extensions supported by this analyzer.
*/
private static final Set<String> EXTENSIONS = null;
//<editor-fold defaultstate="collapsed" desc="All standard implementation details of Analyzer">
/**
* The name of the analyzer.
*/
@@ -67,15 +71,6 @@ public class DependencyBundlingAnalyzer extends AbstractAnalyzer implements Anal
*/
private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.PRE_FINDING_ANALYSIS;
/**
* Returns a list of file EXTENSIONS supported by this analyzer.
*
* @return a list of file EXTENSIONS supported by this analyzer.
*/
public Set<String> getSupportedExtensions() {
return EXTENSIONS;
}
/**
* Returns the name of the analyzer.
*
@@ -85,17 +80,6 @@ public class DependencyBundlingAnalyzer extends AbstractAnalyzer implements Anal
return ANALYZER_NAME;
}
/**
* Returns whether or not this analyzer can process the given extension.
*
* @param extension the file extension to test for support
* @return whether or not the specified file extension is supported by this
* analyzer.
*/
public boolean supportsExtension(String extension) {
return true;
}
/**
* Returns the phase that the analyzer is intended to run in.
*
@@ -107,14 +91,12 @@ public class DependencyBundlingAnalyzer extends AbstractAnalyzer implements Anal
//</editor-fold>
/**
* Analyzes a set of dependencies. If they have been found to have the same
* base path and the same set of identifiers they are likely related. The
* related dependencies are bundled into a single reportable item.
* Analyzes a set of dependencies. If they have been found to have the same base path and the same set of
* identifiers they are likely related. The related dependencies are bundled into a single reportable item.
*
* @param ignore this analyzer ignores the dependency being analyzed
* @param engine the engine that is scanning the dependencies
* @throws AnalysisException is thrown if there is an error reading the JAR
* file.
* @throws AnalysisException is thrown if there is an error reading the JAR file.
*/
@Override
public void analyze(Dependency ignore, Engine engine) throws AnalysisException {
@@ -125,35 +107,35 @@ public class DependencyBundlingAnalyzer extends AbstractAnalyzer implements Anal
//for (Dependency nextDependency : engine.getDependencies()) {
while (mainIterator.hasNext()) {
final Dependency dependency = mainIterator.next();
if (mainIterator.hasNext()) {
if (mainIterator.hasNext() && !dependenciesToRemove.contains(dependency)) {
final ListIterator<Dependency> subIterator = engine.getDependencies().listIterator(mainIterator.nextIndex());
while (subIterator.hasNext()) {
final Dependency nextDependency = subIterator.next();
if (identifiersMatch(dependency, nextDependency)
if (hashesMatch(dependency, nextDependency)) {
if (firstPathIsShortest(dependency.getFilePath(), nextDependency.getFilePath())) {
mergeDependencies(dependency, nextDependency, dependenciesToRemove);
} else {
mergeDependencies(nextDependency, dependency, dependenciesToRemove);
break; //since we merged into the next dependency - skip forward to the next in mainIterator
}
} else if (isShadedJar(dependency, nextDependency)) {
if (dependency.getFileName().toLowerCase().endsWith("pom.xml")) {
mergeDependencies(nextDependency, dependency, dependenciesToRemove);
nextDependency.getRelatedDependencies().remove(dependency);
break;
} else {
mergeDependencies(dependency, nextDependency, dependenciesToRemove);
nextDependency.getRelatedDependencies().remove(nextDependency);
}
} else if (cpeIdentifiersMatch(dependency, nextDependency)
&& hasSameBasePath(dependency, nextDependency)
&& fileNameMatch(dependency, nextDependency)) {
if (isCore(dependency, nextDependency)) {
dependency.addRelatedDependency(nextDependency);
//move any "related dependencies" to the new "parent" dependency
final Iterator<Dependency> i = nextDependency.getRelatedDependencies().iterator();
while (i.hasNext()) {
dependency.addRelatedDependency(i.next());
i.remove();
}
dependenciesToRemove.add(nextDependency);
mergeDependencies(dependency, nextDependency, dependenciesToRemove);
} else {
if (isCore(nextDependency, dependency)) {
nextDependency.addRelatedDependency(dependency);
//move any "related dependencies" to the new "parent" dependency
final Iterator<Dependency> i = dependency.getRelatedDependencies().iterator();
while (i.hasNext()) {
nextDependency.addRelatedDependency(i.next());
i.remove();
}
dependenciesToRemove.add(dependency);
}
mergeDependencies(nextDependency, dependency, dependenciesToRemove);
break; //since we merged into the next dependency - skip forward to the next in mainIterator
}
}
}
@@ -161,12 +143,29 @@ public class DependencyBundlingAnalyzer extends AbstractAnalyzer implements Anal
}
//removing dependencies here as ensuring correctness and avoiding ConcurrentUpdateExceptions
// was difficult because of the inner iterator.
for (Dependency d : dependenciesToRemove) {
engine.getDependencies().remove(d);
}
engine.getDependencies().removeAll(dependenciesToRemove);
}
}
/**
* Adds the relatedDependency to the dependency's related dependencies.
*
* @param dependency the main dependency
* @param relatedDependency a collection of dependencies to be removed from the main analysis loop, this is the
* source of dependencies to remove
* @param dependenciesToRemove a collection of dependencies that will be removed from the main analysis loop, this
* function adds to this collection
*/
private void mergeDependencies(final Dependency dependency, final Dependency relatedDependency, final Set<Dependency> dependenciesToRemove) {
dependency.addRelatedDependency(relatedDependency);
final Iterator<Dependency> i = relatedDependency.getRelatedDependencies().iterator();
while (i.hasNext()) {
dependency.addRelatedDependency(i.next());
i.remove();
}
dependenciesToRemove.add(relatedDependency);
}
/**
* Attempts to trim a maven repo to a common base path. This is typically
* [drive]\[repo_location]\repository\[path1]\[path2].
@@ -194,39 +193,35 @@ public class DependencyBundlingAnalyzer extends AbstractAnalyzer implements Anal
}
/**
* Returns true if the file names (and version if it exists) of the two
* dependencies are sufficiently similiar.
* Returns true if the file names (and version if it exists) of the two dependencies are sufficiently similar.
*
* @param dependency1 a dependency2 to compare
* @param dependency2 a dependency2 to compare
* @return true if the identifiers in the two supplied dependencies are
* equal
* @return true if the identifiers in the two supplied dependencies are equal
*/
private boolean fileNameMatch(Dependency dependency1, Dependency dependency2) {
if (dependency1 == null || dependency1.getFileName() == null
|| dependency2 == null || dependency2.getFileName() == null) {
return false;
}
String fileName1 = dependency1.getFileName();
String fileName2 = dependency2.getFileName();
//update to deal with archive analyzer, the starting name maybe the same
// as this is incorrectly looking at the starting path
final File one = new File(fileName1);
final File two = new File(fileName2);
final String oneParent = one.getParent();
final String twoParent = two.getParent();
if (oneParent != null) {
if (twoParent != null && oneParent.equals(twoParent)) {
fileName1 = one.getName();
fileName2 = two.getName();
} else {
return false;
}
} else if (twoParent != null) {
return false;
}
final String fileName1 = dependency1.getActualFile().getName();
final String fileName2 = dependency2.getActualFile().getName();
// //REMOVED because this is attempting to duplicate what is in the hasSameBasePath function.
// final File one = new File(fileName1);
// final File two = new File(fileName2);
// final String oneParent = one.getParent();
// final String twoParent = two.getParent();
// if (oneParent != null) {
// if (oneParent.equals(twoParent)) {
// fileName1 = one.getName();
// fileName2 = two.getName();
// } else {
// return false;
// }
// } else if (twoParent != null) {
// return false;
// }
//version check
final DependencyVersion version1 = DependencyVersionUtil.parseVersion(fileName1);
final DependencyVersion version2 = DependencyVersionUtil.parseVersion(fileName2);
@@ -247,21 +242,45 @@ public class DependencyBundlingAnalyzer extends AbstractAnalyzer implements Anal
}
/**
* Returns true if the identifiers in the two supplied dependencies are
* equal.
* Returns true if the CPE identifiers in the two supplied dependencies are equal.
*
* @param dependency1 a dependency2 to compare
* @param dependency2 a dependency2 to compare
* @return true if the identifiers in the two supplied dependencies are
* equal
* @return true if the identifiers in the two supplied dependencies are equal
*/
private boolean identifiersMatch(Dependency dependency1, Dependency dependency2) {
private boolean cpeIdentifiersMatch(Dependency dependency1, Dependency dependency2) {
if (dependency1 == null || dependency1.getIdentifiers() == null
|| dependency2 == null || dependency2.getIdentifiers() == null) {
return false;
}
return dependency1.getIdentifiers().size() > 0
&& dependency2.getIdentifiers().equals(dependency1.getIdentifiers());
boolean matches = false;
int cpeCount1 = 0;
int cpeCount2 = 0;
for (Identifier i : dependency1.getIdentifiers()) {
if ("cpe".equals(i.getType())) {
cpeCount1 += 1;
}
}
for (Identifier i : dependency2.getIdentifiers()) {
if ("cpe".equals(i.getType())) {
cpeCount2 += 1;
}
}
if (cpeCount1 > 0 && cpeCount1 == cpeCount2) {
for (Identifier i : dependency1.getIdentifiers()) {
if ("cpe".equals(i.getType())) {
matches |= dependency2.getIdentifiers().contains(i);
if (!matches) {
break;
}
}
}
}
if (LogUtils.isVerboseLoggingEnabled()) {
final String msg = String.format("IdentifiersMatch=%s (%s, %s)", matches, dependency1.getFileName(), dependency2.getFileName());
LOGGER.log(Level.FINE, msg);
}
return matches;
}
/**
@@ -280,10 +299,7 @@ public class DependencyBundlingAnalyzer extends AbstractAnalyzer implements Anal
final File rFile = new File(dependency2.getFilePath());
String right = rFile.getParent();
if (left == null) {
if (right == null) {
return true;
}
return false;
return right == null;
}
if (left.equalsIgnoreCase(right)) {
return true;
@@ -292,37 +308,132 @@ public class DependencyBundlingAnalyzer extends AbstractAnalyzer implements Anal
left = getBaseRepoPath(left);
right = getBaseRepoPath(right);
}
return left.equalsIgnoreCase(right);
if (left.equalsIgnoreCase(right)) {
return true;
}
//new code
for (Dependency child : dependency2.getRelatedDependencies()) {
if (hasSameBasePath(dependency1, child)) {
return true;
}
}
return false;
}
/**
* This is likely a very broken attempt at determining if the 'left'
* dependency is the 'core' library in comparison to the 'right' library.
*
* TODO - consider splitting on /\._-\s/ and checking if all of one side is
* fully contained in the other With the exception of the word "core". This
* might work even on groups when we don't have a CVE.
* This is likely a very broken attempt at determining if the 'left' dependency is the 'core' library in comparison
* to the 'right' library.
*
* @param left the dependency to test
* @param right the dependency to test against
* @return a boolean indicating whether or not the left dependency should be
* considered the "core" version.
* @return a boolean indicating whether or not the left dependency should be considered the "core" version.
*/
private boolean isCore(Dependency left, Dependency right) {
boolean isCore(Dependency left, Dependency right) {
final String leftName = left.getFileName().toLowerCase();
final String rightName = right.getFileName().toLowerCase();
if (rightName.contains("core") && !leftName.contains("core")) {
return false;
} else if (!rightName.contains("core") && leftName.contains("core")) {
return true;
final boolean returnVal;
if (!rightName.matches(".*\\.(tar|tgz|gz|zip|ear|war).+") && leftName.matches(".*\\.(tar|tgz|gz|zip|ear|war).+")
|| rightName.contains("core") && !leftName.contains("core")
|| rightName.contains("kernel") && !leftName.contains("kernel")) {
returnVal = false;
} else if (rightName.matches(".*\\.(tar|tgz|gz|zip|ear|war).+") && !leftName.matches(".*\\.(tar|tgz|gz|zip|ear|war).+")
|| !rightName.contains("core") && leftName.contains("core")
|| !rightName.contains("kernel") && leftName.contains("kernel")) {
returnVal = true;
// } else if (leftName.matches(".*struts2\\-core.*") && rightName.matches(".*xwork\\-core.*")) {
// returnVal = true;
// } else if (rightName.matches(".*struts2\\-core.*") && leftName.matches(".*xwork\\-core.*")) {
// returnVal = false;
} else {
//TODO should we be splitting the name on [-_(.\d)+] and seeing if the
// parts are contained in the other side?
if (leftName.length() > rightName.length()) {
return false;
}
return true;
/*
* considered splitting the names up and comparing the components,
* but decided that the file name length should be sufficient as the
* "core" component, if this follows a normal naming protocol should
* be shorter:
* axis2-saaj-1.4.1.jar
* axis2-1.4.1.jar <-----
* axis2-kernel-1.4.1.jar
*/
returnVal = leftName.length() <= rightName.length();
}
if (LogUtils.isVerboseLoggingEnabled()) {
final String msg = String.format("IsCore=%s (%s, %s)", returnVal, left.getFileName(), right.getFileName());
LOGGER.log(Level.FINE, msg);
}
return returnVal;
}
/**
* Compares the SHA1 hashes of two dependencies to determine if they are equal.
*
* @param dependency1 a dependency object to compare
* @param dependency2 a dependency object to compare
* @return true if the sha1 hashes of the two dependencies match; otherwise false
*/
private boolean hashesMatch(Dependency dependency1, Dependency dependency2) {
if (dependency1 == null || dependency2 == null || dependency1.getSha1sum() == null || dependency2.getSha1sum() == null) {
return false;
}
return dependency1.getSha1sum().equals(dependency2.getSha1sum());
}
/**
* Determines if the jar is shaded and the created pom.xml identified the same CPE as the jar - if so, the pom.xml
* dependency should be removed.
*
* @param dependency a dependency to check
* @param nextDependency another dependency to check
* @return true if on of the dependencies is a pom.xml and the identifiers between the two collections match;
* otherwise false
*/
private boolean isShadedJar(Dependency dependency, Dependency nextDependency) {
final String mainName = dependency.getFileName().toLowerCase();
final String nextName = nextDependency.getFileName().toLowerCase();
if (mainName.endsWith(".jar") && nextName.endsWith("pom.xml")) {
return dependency.getIdentifiers().containsAll(nextDependency.getIdentifiers());
} else if (nextName.endsWith(".jar") && mainName.endsWith("pom.xml")) {
return nextDependency.getIdentifiers().containsAll(dependency.getIdentifiers());
}
return false;
}
/**
* Determines which path is shortest; if path lengths are equal then we use compareTo of the string method to
* determine if the first path is smaller.
*
* @param left the first path to compare
* @param right the second path to compare
* @return <code>true</code> if the leftPath is the shortest; otherwise <code>false</code>
*/
protected boolean firstPathIsShortest(String left, String right) {
final String leftPath = left.replace('\\', '/');
final String rightPath = right.replace('\\', '/');
final int leftCount = countChar(leftPath, '/');
final int rightCount = countChar(rightPath, '/');
if (leftCount == rightCount) {
return leftPath.compareTo(rightPath) <= 0;
} else {
return leftCount < rightCount;
}
}
/**
* Counts the number of times the character is present in the string.
*
* @param string the string to count the characters in
* @param c the character to count
* @return the number of times the character is present in the string
*/
private int countChar(String string, char c) {
int count = 0;
final int max = string.length();
for (int i = 0; i < max; i++) {
if (c == string.charAt(i)) {
count++;
}
}
return count;
}
}

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -31,23 +30,23 @@ import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.dependency.Identifier;
import org.owasp.dependencycheck.dependency.VulnerableSoftware;
/**
* This analyzer attempts to remove some well known false positives -
* specifically regarding the java runtime.
* This analyzer attempts to remove some well known false positives - specifically regarding the java runtime.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class FalsePositiveAnalyzer extends AbstractAnalyzer {
//<editor-fold defaultstate="collapsed" desc="All standard implmentation details of Analyzer">
/**
* The set of file extensions supported by this analyzer.
* The Logger.
*/
private static final Set<String> EXTENSIONS = null;
private static final Logger LOGGER = Logger.getLogger(FalsePositiveAnalyzer.class.getName());
//<editor-fold defaultstate="collapsed" desc="All standard implementation details of Analyzer">
/**
* The name of the analyzer.
*/
@@ -57,15 +56,6 @@ public class FalsePositiveAnalyzer extends AbstractAnalyzer {
*/
private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.POST_IDENTIFIER_ANALYSIS;
/**
* Returns a list of file EXTENSIONS supported by this analyzer.
*
* @return a list of file EXTENSIONS supported by this analyzer.
*/
public Set<String> getSupportedExtensions() {
return EXTENSIONS;
}
/**
* Returns the name of the analyzer.
*
@@ -75,17 +65,6 @@ public class FalsePositiveAnalyzer extends AbstractAnalyzer {
return ANALYZER_NAME;
}
/**
* Returns whether or not this analyzer can process the given extension.
*
* @param extension the file extension to test for support
* @return whether or not the specified file extension is supported by this
* analyzer.
*/
public boolean supportsExtension(String extension) {
return true;
}
/**
* Returns the phase that the analyzer is intended to run in.
*
@@ -97,38 +76,75 @@ public class FalsePositiveAnalyzer extends AbstractAnalyzer {
//</editor-fold>
/**
* Analyzes the dependencies and removes bad/incorrect CPE associations
* based on various heuristics.
* Analyzes the dependencies and removes bad/incorrect CPE associations based on various heuristics.
*
* @param dependency the dependency to analyze.
* @param engine the engine that is scanning the dependencies
* @throws AnalysisException is thrown if there is an error reading the JAR
* file.
* @throws AnalysisException is thrown if there is an error reading the JAR file.
*/
@Override
public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
removeJreEntries(dependency);
removeBadMatches(dependency);
removeBadSpringMatches(dependency);
removeWrongVersionMatches(dependency);
removeSpuriousCPE(dependency);
removeDuplicativeEntriesFromJar(dependency, engine);
addFalseNegativeCPEs(dependency);
}
/**
* <p>Intended to remove spurious CPE entries. By spurious we mean
* duplicate, less specific CPE entries.</p>
* <p>Example:</p>
* Removes inaccurate matches on springframework CPEs.
*
* @param dependency the dependency to test for and remove known inaccurate CPE matches
*/
private void removeBadSpringMatches(Dependency dependency) {
String mustContain = null;
for (Identifier i : dependency.getIdentifiers()) {
if ("maven".contains(i.getType())) {
if (i.getValue() != null && i.getValue().startsWith("org.springframework.")) {
final int endPoint = i.getValue().indexOf(":", 19);
if (endPoint >= 0) {
mustContain = i.getValue().substring(19, endPoint).toLowerCase();
break;
}
}
}
}
if (mustContain != null) {
final Iterator<Identifier> itr = dependency.getIdentifiers().iterator();
while (itr.hasNext()) {
final Identifier i = itr.next();
if ("cpe".contains(i.getType())
&& i.getValue() != null
&& i.getValue().startsWith("cpe:/a:springsource:")
&& !i.getValue().toLowerCase().contains(mustContain)) {
itr.remove();
//dependency.getIdentifiers().remove(i);
}
}
}
}
/**
* <p>
* Intended to remove spurious CPE entries. By spurious we mean duplicate, less specific CPE entries.</p>
* <p>
* Example:</p>
* <code>
* cpe:/a:some-vendor:some-product
* cpe:/a:some-vendor:some-product:1.5
* cpe:/a:some-vendor:some-product:1.5.2
* </code>
* <p>Should be trimmed to:</p>
* <p>
* Should be trimmed to:</p>
* <code>
* cpe:/a:some-vendor:some-product:1.5.2
* </code>
*
* @param dependency the dependency being analyzed
*/
@SuppressWarnings("null")
private void removeSpuriousCPE(Dependency dependency) {
final List<Identifier> ids = new ArrayList<Identifier>();
ids.addAll(dependency.getIdentifiers());
@@ -155,8 +171,7 @@ public class FalsePositiveAnalyzer extends AbstractAnalyzer {
final String nextVersion = nextCpe.getVersion();
if (currentVersion == null && nextVersion == null) {
//how did we get here?
Logger.getLogger(FalsePositiveAnalyzer.class
.getName()).log(Level.FINE, "currentVersion and nextVersion are both null?");
LOGGER.log(Level.FINE, "currentVersion and nextVersion are both null?");
} else if (currentVersion == null && nextVersion != null) {
dependency.getIdentifiers().remove(currentId);
} else if (nextVersion == null && currentVersion != null) {
@@ -176,20 +191,27 @@ public class FalsePositiveAnalyzer extends AbstractAnalyzer {
}
}
/**
* Regex to identify core java libraries and a few other commonly
* misidentified ones.
* Regex to identify core java libraries and a few other commonly misidentified ones.
*/
public static final Pattern CORE_JAVA = Pattern.compile("^cpe:/a:(sun|oracle|ibm):(j2[ems]e|"
+ "java(_platfrom_micro_edition|_runtime_environment|_se|virtual_machine|se_development_kit|fx)?|"
+ "jdk|jre|jsf|jsse)($|:.*)");
+ "java(_platform_micro_edition|_runtime_environment|_se|virtual_machine|se_development_kit|fx)?|"
+ "jdk|jre|jsse)($|:.*)");
/**
* Regex to identify core jsf libraries.
*/
public static final Pattern CORE_JAVA_JSF = Pattern.compile("^cpe:/a:(sun|oracle|ibm):jsf($|:.*)");
/**
* Regex to identify core java library files. This is currently incomplete.
*/
public static final Pattern CORE_FILES = Pattern.compile("^((alt[-])?rt|jsf[-].*|jsse|jfxrt|jfr|jce|javaws|deploy|charsets)\\.jar$");
public static final Pattern CORE_FILES = Pattern.compile("(^|/)((alt[-])?rt|jsse|jfxrt|jfr|jce|javaws|deploy|charsets)\\.jar$");
/**
* Regex to identify core jsf java library files. This is currently incomplete.
*/
public static final Pattern CORE_JSF_FILES = Pattern.compile("(^|/)jsf[-][^/]*\\.jar$");
/**
* Removes any CPE entries for the JDK/JRE unless the filename ends with
* rt.jar
* Removes any CPE entries for the JDK/JRE unless the filename ends with rt.jar
*
* @param dependency the dependency to remove JRE CPEs from
*/
@@ -203,27 +225,11 @@ public class FalsePositiveAnalyzer extends AbstractAnalyzer {
if (coreCPE.matches() && !coreFiles.matches()) {
itr.remove();
}
//replacecd with the regex above.
// if (("cpe:/a:sun:java".equals(i.getValue())
// || "cpe:/a:oracle:java".equals(i.getValue())
// || "cpe:/a:ibm:java".equals(i.getValue())
// || "cpe:/a:sun:j2se".equals(i.getValue())
// || "cpe:/a:oracle:j2se".equals(i.getValue())
// || i.getValue().startsWith("cpe:/a:sun:java:")
// || i.getValue().startsWith("cpe:/a:sun:j2se:")
// || i.getValue().startsWith("cpe:/a:sun:java:jre")
// || i.getValue().startsWith("cpe:/a:sun:java:jdk")
// || i.getValue().startsWith("cpe:/a:sun:java_se")
// || i.getValue().startsWith("cpe:/a:oracle:java_se")
// || i.getValue().startsWith("cpe:/a:oracle:java:")
// || i.getValue().startsWith("cpe:/a:oracle:j2se:")
// || i.getValue().startsWith("cpe:/a:oracle:jre")
// || i.getValue().startsWith("cpe:/a:oracle:jdk")
// || i.getValue().startsWith("cpe:/a:ibm:java:"))
// && !dependency.getFileName().toLowerCase().endsWith("rt.jar")) {
// itr.remove();
// }
final Matcher coreJsfCPE = CORE_JAVA_JSF.matcher(i.getValue());
final Matcher coreJsfFiles = CORE_JSF_FILES.matcher(dependency.getFileName());
if (coreJsfCPE.matches() && !coreJsfFiles.matches()) {
itr.remove();
}
}
}
@@ -242,16 +248,15 @@ public class FalsePositiveAnalyzer extends AbstractAnalyzer {
try {
cpe.parseName(value);
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(FalsePositiveAnalyzer.class.getName()).log(Level.FINEST, null, ex);
LOGGER.log(Level.FINEST, null, ex);
return null;
}
return cpe;
}
/**
* Removes bad CPE matches for a dependency. Unfortunately, right now these
* are hard-coded patches for specific problems identified when testing this
* on a LARGE volume of jar files.
* Removes bad CPE matches for a dependency. Unfortunately, right now these are hard-coded patches for specific
* problems identified when testing this on a LARGE volume of jar files.
*
* @param dependency the dependency to analyze
*/
@@ -264,42 +269,99 @@ public class FalsePositiveAnalyzer extends AbstractAnalyzer {
* found based on LOW confidence evidence should have a different CPE type? (this
* might be a better solution then just removing the URL for "best-guess" matches).
*/
//Set<Evidence> groupId = dependency.getVendorEvidence().getEvidence("pom", "groupid");
//Set<Evidence> artifactId = dependency.getVendorEvidence().getEvidence("pom", "artifactid");
while (itr.hasNext()) {
final Identifier i = itr.next();
//TODO move this startswith expression to a configuration file?
//TODO move this startsWith expression to a configuration file?
if ("cpe".equals(i.getType())) {
if ((i.getValue().matches(".*c\\+\\+.*")
|| i.getValue().startsWith("cpe:/a:jquery:jquery")
|| i.getValue().startsWith("cpe:/a:prototypejs:prototype")
|| i.getValue().startsWith("cpe:/a:yahoo:yui")
|| i.getValue().startsWith("cpe:/a:file:file")
|| i.getValue().startsWith("cpe:/a:mozilla:mozilla")
|| i.getValue().startsWith("cpe:/a:cvs:cvs")
|| i.getValue().startsWith("cpe:/a:ftp:ftp")
|| i.getValue().startsWith("cpe:/a:ssh:ssh"))
&& dependency.getFileName().toLowerCase().endsWith(".jar")) {
|| i.getValue().startsWith("cpe:/a:tcp:tcp")
|| i.getValue().startsWith("cpe:/a:ssh:ssh")
|| i.getValue().startsWith("cpe:/a:lookup:lookup"))
&& (dependency.getFileName().toLowerCase().endsWith(".jar")
|| dependency.getFileName().toLowerCase().endsWith("pom.xml")
|| dependency.getFileName().toLowerCase().endsWith(".dll")
|| dependency.getFileName().toLowerCase().endsWith(".exe")
|| dependency.getFileName().toLowerCase().endsWith(".nuspec")
|| dependency.getFileName().toLowerCase().endsWith(".nupkg"))) {
itr.remove();
} else if ((i.getValue().startsWith("cpe:/a:jquery:jquery")
|| i.getValue().startsWith("cpe:/a:prototypejs:prototype")
|| i.getValue().startsWith("cpe:/a:yahoo:yui"))
&& (dependency.getFileName().toLowerCase().endsWith(".jar")
|| dependency.getFileName().toLowerCase().endsWith("pom.xml")
|| dependency.getFileName().toLowerCase().endsWith(".dll")
|| dependency.getFileName().toLowerCase().endsWith(".exe"))) {
itr.remove();
} else if ((i.getValue().startsWith("cpe:/a:microsoft:excel")
|| i.getValue().startsWith("cpe:/a:microsoft:word")
|| i.getValue().startsWith("cpe:/a:microsoft:visio")
|| i.getValue().startsWith("cpe:/a:microsoft:powerpoint")
|| i.getValue().startsWith("cpe:/a:microsoft:office"))
&& (dependency.getFileName().toLowerCase().endsWith(".jar")
|| dependency.getFileName().toLowerCase().endsWith("pom.xml"))) {
itr.remove();
} else if (i.getValue().startsWith("cpe:/a:apache:maven")
&& !dependency.getFileName().toLowerCase().matches("maven-core-[\\d\\.]+\\.jar")) {
itr.remove();
} else if (i.getValue().startsWith("cpe:/a:m-core:m-core")
&& !dependency.getEvidenceUsed().containsUsedString("m-core")) {
itr.remove();
} else if (i.getValue().startsWith("cpe:/a:jboss:jboss")
&& !dependency.getFileName().toLowerCase().matches("jboss-?[\\d\\.-]+(GA)?\\.jar")) {
itr.remove();
}
}
}
}
/**
* There are some known CPE entries, specifically regarding sun and oracle
* products due to the acquisition and changes in product names, that based
* on given evidence we can add the related CPE entries to ensure a complete
* Removes CPE matches for the wrong version of a dependency. Currently, this only covers Axis 1 & 2.
*
* @param dependency the dependency to analyze
*/
private void removeWrongVersionMatches(Dependency dependency) {
final Set<Identifier> identifiers = dependency.getIdentifiers();
final Iterator<Identifier> itr = identifiers.iterator();
final String fileName = dependency.getFileName();
if (fileName != null && fileName.contains("axis2")) {
while (itr.hasNext()) {
final Identifier i = itr.next();
if ("cpe".equals(i.getType())) {
final String cpe = i.getValue();
if (cpe != null && (cpe.startsWith("cpe:/a:apache:axis:") || "cpe:/a:apache:axis".equals(cpe))) {
itr.remove();
}
}
}
} else if (fileName != null && fileName.contains("axis")) {
while (itr.hasNext()) {
final Identifier i = itr.next();
if ("cpe".equals(i.getType())) {
final String cpe = i.getValue();
if (cpe != null && (cpe.startsWith("cpe:/a:apache:axis2:") || "cpe:/a:apache:axis2".equals(cpe))) {
itr.remove();
}
}
}
}
}
/**
* There are some known CPE entries, specifically regarding sun and oracle products due to the acquisition and
* changes in product names, that based on given evidence we can add the related CPE entries to ensure a complete
* list of CVE entries.
*
* @param dependency the dependency being analyzed
*/
private void addFalseNegativeCPEs(Dependency dependency) {
//TODO move this to the hint analyzer
final Iterator<Identifier> itr = dependency.getIdentifiers().iterator();
while (itr.hasNext()) {
final Identifier i = itr.next();
@@ -315,21 +377,92 @@ public class FalsePositiveAnalyzer extends AbstractAnalyzer {
try {
dependency.addIdentifier("cpe",
newCpe,
String.format("http://web.nvd.nist.gov/view/vuln/search?cpe=%s", URLEncoder.encode(newCpe, "UTF-8")));
String.format(CPEAnalyzer.NVD_SEARCH_URL, URLEncoder.encode(newCpe, "UTF-8")));
dependency.addIdentifier("cpe",
newCpe2,
String.format("http://web.nvd.nist.gov/view/vuln/search?cpe=%s", URLEncoder.encode(newCpe2, "UTF-8")));
String.format(CPEAnalyzer.NVD_SEARCH_URL, URLEncoder.encode(newCpe2, "UTF-8")));
dependency.addIdentifier("cpe",
newCpe3,
String.format("http://web.nvd.nist.gov/view/vuln/search?cpe=%s", URLEncoder.encode(newCpe3, "UTF-8")));
String.format(CPEAnalyzer.NVD_SEARCH_URL, URLEncoder.encode(newCpe3, "UTF-8")));
dependency.addIdentifier("cpe",
newCpe4,
String.format("http://web.nvd.nist.gov/view/vuln/search?cpe=%s", URLEncoder.encode(newCpe4, "UTF-8")));
String.format(CPEAnalyzer.NVD_SEARCH_URL, URLEncoder.encode(newCpe4, "UTF-8")));
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(FalsePositiveAnalyzer.class
.getName()).log(Level.FINE, null, ex);
LOGGER.log(Level.FINE, null, ex);
}
}
}
}
/**
* Removes duplicate entries identified that are contained within JAR files. These occasionally crop up due to POM
* entries or other types of files (such as DLLs and EXEs) being contained within the JAR.
*
* @param dependency the dependency that might be a duplicate
* @param engine the engine used to scan all dependencies
*/
private void removeDuplicativeEntriesFromJar(Dependency dependency, Engine engine) {
if (dependency.getFileName().toLowerCase().endsWith("pom.xml")
|| "dll".equals(dependency.getFileExtension())
|| "exe".equals(dependency.getFileExtension())) {
String parentPath = dependency.getFilePath().toLowerCase();
if (parentPath.contains(".jar")) {
parentPath = parentPath.substring(0, parentPath.indexOf(".jar") + 4);
final Dependency parent = findDependency(parentPath, engine.getDependencies());
if (parent != null) {
boolean remove = false;
for (Identifier i : dependency.getIdentifiers()) {
if ("cpe".equals(i.getType())) {
final String trimmedCPE = trimCpeToVendor(i.getValue());
for (Identifier parentId : parent.getIdentifiers()) {
if ("cpe".equals(parentId.getType()) && parentId.getValue().startsWith(trimmedCPE)) {
remove |= true;
}
}
}
if (!remove) { //we can escape early
return;
}
}
if (remove) {
engine.getDependencies().remove(dependency);
}
}
}
}
}
/**
* Retrieves a given dependency, based on a given path, from a list of dependencies.
*
* @param dependencyPath the path of the dependency to return
* @param dependencies the collection of dependencies to search
* @return the dependency object for the given path, otherwise null
*/
private Dependency findDependency(String dependencyPath, List<Dependency> dependencies) {
for (Dependency d : dependencies) {
if (d.getFilePath().equalsIgnoreCase(dependencyPath)) {
return d;
}
}
return null;
}
/**
* Takes a full CPE and returns the CPE trimmed to include only vendor and product.
*
* @param value the CPE value to trim
* @return a CPE value that only includes the vendor and product
*/
private String trimCpeToVendor(String value) {
//cpe:/a:jruby:jruby:1.0.8
final int pos1 = value.indexOf(":", 7); //right of vendor
final int pos2 = value.indexOf(":", pos1 + 1); //right of product
if (pos2 < 0) {
return value;
} else {
return value.substring(0, pos2);
}
}
}

View File

@@ -1,28 +1,27 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
import java.io.File;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.dependency.Evidence;
import java.util.Set;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.dependency.Confidence;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.utils.DependencyVersion;
import org.owasp.dependencycheck.utils.DependencyVersionUtil;
@@ -30,11 +29,11 @@ import org.owasp.dependencycheck.utils.DependencyVersionUtil;
*
* Takes a dependency and analyzes the filename and determines the hashes.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class FileNameAnalyzer extends AbstractAnalyzer implements Analyzer {
//<editor-fold defaultstate="collapsed" desc="All standard implmentation details of Analyzer">
//<editor-fold defaultstate="collapsed" desc="All standard implementation details of Analyzer">
/**
* The name of the analyzer.
*/
@@ -43,19 +42,6 @@ public class FileNameAnalyzer extends AbstractAnalyzer implements Analyzer {
* The phase that this analyzer is intended to run in.
*/
private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INFORMATION_COLLECTION;
/**
* The set of file extensions supported by this analyzer.
*/
private static final Set<String> EXTENSIONS = null;
/**
* Returns a list of file EXTENSIONS supported by this analyzer.
*
* @return a list of file EXTENSIONS supported by this analyzer.
*/
public Set<String> getSupportedExtensions() {
return EXTENSIONS;
}
/**
* Returns the name of the analyzer.
@@ -66,17 +52,6 @@ public class FileNameAnalyzer extends AbstractAnalyzer implements Analyzer {
return ANALYZER_NAME;
}
/**
* Returns whether or not this analyzer can process the given extension.
*
* @param extension the file extension to test for support.
* @return whether or not the specified file extension is supported by this
* analyzer.
*/
public boolean supportsExtension(String extension) {
return true;
}
/**
* Returns the phase that the analyzer is intended to run in.
*
@@ -92,14 +67,13 @@ public class FileNameAnalyzer extends AbstractAnalyzer implements Analyzer {
*
* @param dependency the dependency to analyze.
* @param engine the engine that is scanning the dependencies
* @throws AnalysisException is thrown if there is an error reading the JAR
* file.
* @throws AnalysisException is thrown if there is an error reading the JAR file.
*/
@Override
public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
//strip any path information that may get added by ArchiveAnalyzer, etc.
final File f = new File(dependency.getFileName());
final File f = dependency.getActualFile();
String fileName = f.getName();
//remove file extension
@@ -111,23 +85,31 @@ public class FileNameAnalyzer extends AbstractAnalyzer implements Analyzer {
//add version evidence
final DependencyVersion version = DependencyVersionUtil.parseVersion(fileName);
if (version != null) {
// If the version number is just a number like 2 or 23, reduce the confidence
// a shade. This should hopefully correct for cases like log4j.jar or
// struts2-core.jar
if (version.getVersionParts() == null || version.getVersionParts().size() < 2) {
dependency.getVersionEvidence().addEvidence("file", "name",
version.toString(), Confidence.MEDIUM);
} else {
dependency.getVersionEvidence().addEvidence("file", "name",
version.toString(), Confidence.HIGHEST);
}
dependency.getVersionEvidence().addEvidence("file", "name",
version.toString(), Evidence.Confidence.HIGHEST);
dependency.getVersionEvidence().addEvidence("file", "name",
fileName, Evidence.Confidence.MEDIUM);
fileName, Confidence.MEDIUM);
}
//add as vendor and product evidence
if (fileName.contains("-")) {
dependency.getProductEvidence().addEvidence("file", "name",
fileName, Evidence.Confidence.HIGHEST);
fileName, Confidence.HIGHEST);
dependency.getVendorEvidence().addEvidence("file", "name",
fileName, Evidence.Confidence.HIGHEST);
fileName, Confidence.HIGHEST);
} else {
dependency.getProductEvidence().addEvidence("file", "name",
fileName, Evidence.Confidence.HIGH);
fileName, Confidence.HIGH);
dependency.getVendorEvidence().addEvidence("file", "name",
fileName, Evidence.Confidence.HIGH);
fileName, Confidence.HIGH);
}
}
}

View File

@@ -0,0 +1,34 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2014 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
/**
* An Analyzer that scans specific file types.
*
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public interface FileTypeAnalyzer extends Analyzer {
/**
* Returns whether or not this analyzer can process the given extension.
*
* @param extension the file extension to test for support.
* @return whether or not the specified file extension is supported by this analyzer.
*/
boolean supportsExtension(String extension);
}

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -22,16 +21,18 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.dependency.Confidence;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.dependency.Evidence;
/**
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class HintAnalyzer extends AbstractAnalyzer implements Analyzer {
//<editor-fold defaultstate="collapsed" desc="All standard implmentation details of Analyzer">
//<editor-fold defaultstate="collapsed" desc="All standard implementation details of Analyzer">
/**
* The name of the analyzer.
*/
@@ -40,88 +41,64 @@ public class HintAnalyzer extends AbstractAnalyzer implements Analyzer {
* The phase that this analyzer is intended to run in.
*/
private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.PRE_IDENTIFIER_ANALYSIS;
/**
* The set of file extensions supported by this analyzer.
*/
private static final Set<String> EXTENSIONS = null;
/**
* Returns a list of file EXTENSIONS supported by this analyzer.
*
* @return a list of file EXTENSIONS supported by this analyzer.
*/
public Set<String> getSupportedExtensions() {
return EXTENSIONS;
}
/**
* Returns the name of the analyzer.
*
* @return the name of the analyzer.
*/
@Override
public String getName() {
return ANALYZER_NAME;
}
/**
* Returns whether or not this analyzer can process the given extension.
*
* @param extension the file extension to test for support.
* @return whether or not the specified file extension is supported by this
* analyzer.
*/
public boolean supportsExtension(String extension) {
return true;
}
/**
* Returns the phase that the analyzer is intended to run in.
*
* @return the phase that the analyzer is intended to run in.
*/
@Override
public AnalysisPhase getAnalysisPhase() {
return ANALYSIS_PHASE;
}
//</editor-fold>
/**
* The HintAnalyzer uses knowledge about a dependency to add additional
* information to help in identification of identifiers or vulnerabilities.
* The HintAnalyzer uses knowledge about a dependency to add additional information to help in identification of
* identifiers or vulnerabilities.
*
* @param dependency The dependency being analyzed
* @param engine The scanning engine
* @throws AnalysisException is thrown if there is an exception analyzing
* the dependency.
* @throws AnalysisException is thrown if there is an exception analyzing the dependency.
*/
@Override
public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
final Evidence springTest1 = new Evidence("Manifest",
"Implementation-Title",
"Spring Framework",
Evidence.Confidence.HIGH);
Confidence.HIGH);
final Evidence springTest2 = new Evidence("Manifest",
"Implementation-Title",
"org.springframework.core",
Evidence.Confidence.HIGH);
Confidence.HIGH);
final Evidence springTest3 = new Evidence("Manifest",
"Bundle-Vendor",
"SpringSource",
Evidence.Confidence.HIGH);
Confidence.HIGH);
Set<Evidence> evidence = dependency.getProductEvidence().getEvidence();
if (evidence.contains(springTest1) || evidence.contains(springTest2)) {
dependency.getProductEvidence().addEvidence("hint analyzer", "product", "springsource_spring_framework", Evidence.Confidence.HIGH);
dependency.getVendorEvidence().addEvidence("hint analyzer", "vendor", "SpringSource", Evidence.Confidence.HIGH);
dependency.getVendorEvidence().addEvidence("hint analyzer", "vendor", "vmware", Evidence.Confidence.HIGH);
dependency.getProductEvidence().addEvidence("hint analyzer", "product", "springsource_spring_framework", Confidence.HIGH);
dependency.getVendorEvidence().addEvidence("hint analyzer", "vendor", "SpringSource", Confidence.HIGH);
dependency.getVendorEvidence().addEvidence("hint analyzer", "vendor", "vmware", Confidence.HIGH);
}
evidence = dependency.getVendorEvidence().getEvidence();
if (evidence.contains(springTest3)) {
dependency.getProductEvidence().addEvidence("hint analyzer", "product", "springsource_spring_framework", Evidence.Confidence.HIGH);
dependency.getVendorEvidence().addEvidence("hint analyzer", "vendor", "vmware", Evidence.Confidence.HIGH);
dependency.getProductEvidence().addEvidence("hint analyzer", "product", "springsource_spring_framework", Confidence.HIGH);
dependency.getVendorEvidence().addEvidence("hint analyzer", "vendor", "vmware", Confidence.HIGH);
}
final Iterator<Evidence> itr = dependency.getVendorEvidence().iterator();
final ArrayList<Evidence> newEntries = new ArrayList<Evidence>();
@@ -139,6 +116,5 @@ public class HintAnalyzer extends AbstractAnalyzer implements Analyzer {
dependency.getVendorEvidence().addEvidence(e);
}
}
}

View File

@@ -1,38 +1,50 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
* Copyright (c) 2014 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.dependency.Dependency;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.utils.Settings;
/**
*
* Used to load a JAR file and collect information that can be used to determine
* the associated CPE.
* Used to analyze a JavaScript file to gather information to aid in identification of a CPE identifier.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class JavaScriptAnalyzer extends AbstractAnalyzer implements Analyzer {
public class JavaScriptAnalyzer extends AbstractFileTypeAnalyzer {
//<editor-fold defaultstate="collapsed" desc="All standard implmentation details of Analyzer">
/**
* The logger.
*/
private static final Logger LOGGER = Logger.getLogger(JavaScriptAnalyzer.class.getName());
//<editor-fold defaultstate="collapsed" desc="All standard implementation details of Analyzer">
/**
* The name of the analyzer.
*/
@@ -51,6 +63,7 @@ public class JavaScriptAnalyzer extends AbstractAnalyzer implements Analyzer {
*
* @return a list of file EXTENSIONS supported by this analyzer.
*/
@Override
public Set<String> getSupportedExtensions() {
return EXTENSIONS;
}
@@ -60,63 +73,69 @@ public class JavaScriptAnalyzer extends AbstractAnalyzer implements Analyzer {
*
* @return the name of the analyzer.
*/
@Override
public String getName() {
return ANALYZER_NAME;
}
/**
* Returns whether or not this analyzer can process the given extension.
*
* @param extension the file extension to test for support.
* @return whether or not the specified file extension is supported by this
* analyzer.
*/
public boolean supportsExtension(String extension) {
return EXTENSIONS.contains(extension);
}
/**
* Returns the phase that the analyzer is intended to run in.
*
* @return the phase that the analyzer is intended to run in.
*/
@Override
public AnalysisPhase getAnalysisPhase() {
return ANALYSIS_PHASE;
}
//</editor-fold>
/**
* Returns the key used in the properties file to reference the analyzer's enabled property.
*
* @return the analyzer's enabled property setting key
*/
@Override
protected String getAnalyzerEnabledSettingKey() {
return Settings.KEYS.ANALYZER_JAVASCRIPT_ENABLED;
}
/**
* Loads a specified JAR file and collects information from the manifest and
* checksums to identify the correct CPE information.
* Loads a specified JavaScript file and collects information from the copyright information contained within.
*
* @param dependency the dependency to analyze.
* @param engine the engine that is scanning the dependencies
* @throws AnalysisException is thrown if there is an error reading the JAR
* file.
* @throws AnalysisException is thrown if there is an error reading the JavaScript file.
*/
@Override
public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
final Pattern extractComments = Pattern.compile("(/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+/)|(//.*)");
public void analyzeFileType(Dependency dependency, Engine engine) throws AnalysisException {
BufferedReader fin = null;
try {
// /\*([^\*][^/]|[\r\n\f])+?\*/
final Pattern extractComments = Pattern.compile("(/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+/)|(//.*)", Pattern.MULTILINE);
File file = dependency.getActualFile();
fin = new BufferedReader(new FileReader(file));
StringBuilder sb = new StringBuilder(2000);
String text;
while ((text = fin.readLine()) != null) {
sb.append(text);
}
} catch (FileNotFoundException ex) {
final String msg = String.format("Dependency file not found: '%s'", dependency.getActualFilePath());
throw new AnalysisException(msg, ex);
} catch (IOException ex) {
LOGGER.log(Level.SEVERE, null, ex);
} finally {
if (fin != null) {
try {
fin.close();
} catch (IOException ex) {
LOGGER.log(Level.FINEST, null, ex);
}
}
}
}
/**
* The initialize method does nothing for this Analyzer.
*
* @throws Exception thrown if there is an exception
*/
@Override
public void initialize() throws Exception {
//do nothing
}
protected void initializeFileTypeAnalyzer() throws Exception {
/**
* The close method does nothing for this Analyzer.
*
* @throws Exception thrown if there is an exception
*/
@Override
public void close() throws Exception {
//do nothing
}
}

View File

@@ -0,0 +1,217 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2014 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.data.nexus.MavenArtifact;
import org.owasp.dependencycheck.data.nexus.NexusSearch;
import org.owasp.dependencycheck.dependency.Confidence;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.utils.InvalidSettingException;
import org.owasp.dependencycheck.utils.Settings;
/**
* Analyzer which will attempt to locate a dependency on a Nexus service by SHA-1 digest of the dependency.
*
* There are two settings which govern this behavior:
*
* <ul>
* <li>{@link org.owasp.dependencycheck.utils.Settings.KEYS#ANALYZER_NEXUS_ENABLED} determines whether this analyzer is
* even enabled. This can be overridden by setting the system property.</li>
* <li>{@link org.owasp.dependencycheck.utils.Settings.KEYS#ANALYZER_NEXUS_URL} the URL to a Nexus service to search by
* SHA-1. There is an expected <code>%s</code> in this where the SHA-1 will get entered.</li>
* </ul>
*
* @author colezlaw
*/
public class NexusAnalyzer extends AbstractFileTypeAnalyzer {
/**
* The default URL - this will be used by the CentralAnalyzer to determine whether to enable this.
*/
public static final String DEFAULT_URL = "https://repository.sonatype.org/service/local/";
/**
* The logger.
*/
private static final Logger LOGGER = Logger.getLogger(NexusAnalyzer.class.getName());
/**
* The name of the analyzer.
*/
private static final String ANALYZER_NAME = "Nexus Analyzer";
/**
* The phase in which the analyzer runs.
*/
private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INFORMATION_COLLECTION;
/**
* The types of files on which this will work.
*/
private static final Set<String> SUPPORTED_EXTENSIONS = newHashSet("jar");
/**
* The Nexus Search to be set up for this analyzer.
*/
private NexusSearch searcher;
/**
* Field indicating if the analyzer is enabled.
*/
private final boolean enabled = checkEnabled();
/**
* Determines if this analyzer is enabled
*
* @return <code>true</code> if the analyzer is enabled; otherwise <code>false</code>
*/
private boolean checkEnabled() {
/* Enable this analyzer ONLY if the Nexus URL has been set to something
other than the default one (if it's the default one, we'll use the
central one) and it's enabled by the user.
*/
boolean retval = false;
try {
if ((!DEFAULT_URL.equals(Settings.getString(Settings.KEYS.ANALYZER_NEXUS_URL)))
&& Settings.getBoolean(Settings.KEYS.ANALYZER_NEXUS_ENABLED)) {
LOGGER.info("Enabling Nexus analyzer");
retval = true;
} else {
LOGGER.fine("Nexus analyzer disabled, using Central instead");
}
} catch (InvalidSettingException ise) {
LOGGER.warning("Invalid setting. Disabling Nexus analyzer");
}
return retval;
}
/**
* Determine whether to enable this analyzer or not.
*
* @return whether the analyzer should be enabled
*/
@Override
public boolean isEnabled() {
return enabled;
}
/**
* Initializes the analyzer once before any analysis is performed.
*
* @throws Exception if there's an error during initialization
*/
@Override
public void initializeFileTypeAnalyzer() throws Exception {
LOGGER.fine("Initializing Nexus Analyzer");
LOGGER.fine(String.format("Nexus Analyzer enabled: %s", isEnabled()));
if (isEnabled()) {
final String searchUrl = Settings.getString(Settings.KEYS.ANALYZER_NEXUS_URL);
LOGGER.fine(String.format("Nexus Analyzer URL: %s", searchUrl));
try {
searcher = new NexusSearch(new URL(searchUrl));
if (!searcher.preflightRequest()) {
LOGGER.warning("There was an issue getting Nexus status. Disabling analyzer.");
setEnabled(false);
}
} catch (MalformedURLException mue) {
// I know that initialize can throw an exception, but we'll
// just disable the analyzer if the URL isn't valid
LOGGER.warning(String.format("Property %s not a valid URL. Nexus Analyzer disabled", searchUrl));
setEnabled(false);
}
}
}
/**
* Returns the analyzer's name.
*
* @return the name of the analyzer
*/
@Override
public String getName() {
return ANALYZER_NAME;
}
/**
* Returns the key used in the properties file to reference the analyzer's enabled property.
*
* @return the analyzer's enabled property setting key
*/
@Override
protected String getAnalyzerEnabledSettingKey() {
return Settings.KEYS.ANALYZER_NEXUS_ENABLED;
}
/**
* Returns the analysis phase under which the analyzer runs.
*
* @return the phase under which this analyzer runs
*/
@Override
public AnalysisPhase getAnalysisPhase() {
return ANALYSIS_PHASE;
}
/**
* Returns the extensions for which this Analyzer runs.
*
* @return the extensions for which this Analyzer runs
*/
@Override
public Set<String> getSupportedExtensions() {
return SUPPORTED_EXTENSIONS;
}
/**
* Performs the analysis.
*
* @param dependency the dependency to analyze
* @param engine the engine
* @throws AnalysisException when there's an exception during analysis
*/
@Override
public void analyzeFileType(Dependency dependency, Engine engine) throws AnalysisException {
if (!isEnabled()) {
return;
}
try {
final MavenArtifact ma = searcher.searchSha1(dependency.getSha1sum());
dependency.addAsEvidence("nexus", ma, Confidence.HIGH);
} catch (IllegalArgumentException iae) {
//dependency.addAnalysisException(new AnalysisException("Invalid SHA-1"));
LOGGER.info(String.format("invalid sha-1 hash on %s", dependency.getFileName()));
} catch (FileNotFoundException fnfe) {
//dependency.addAnalysisException(new AnalysisException("Artifact not found on repository"));
LOGGER.fine(String.format("Artifact not found in repository '%s'", dependency.getFileName()));
LOGGER.log(Level.FINE, fnfe.getMessage(), fnfe);
} catch (IOException ioe) {
//dependency.addAnalysisException(new AnalysisException("Could not connect to repository", ioe));
LOGGER.log(Level.FINE, "Could not connect to nexus repository", ioe);
}
}
}

View File

@@ -0,0 +1,156 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2014 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.data.nuget.NugetPackage;
import org.owasp.dependencycheck.data.nuget.NuspecParseException;
import org.owasp.dependencycheck.data.nuget.NuspecParser;
import org.owasp.dependencycheck.data.nuget.XPathNuspecParser;
import org.owasp.dependencycheck.dependency.Confidence;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.utils.Settings;
/**
* Analyzer which will parse a Nuspec file to gather module information.
*
* @author colezlaw
*/
public class NuspecAnalyzer extends AbstractFileTypeAnalyzer {
/**
* The logger.
*/
private static final Logger LOGGER = Logger.getLogger(NuspecAnalyzer.class.getName());
/**
* The name of the analyzer.
*/
private static final String ANALYZER_NAME = "Nuspec Analyzer";
/**
* The phase in which the analyzer runs.
*/
private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INFORMATION_COLLECTION;
/**
* The types of files on which this will work.
*/
private static final Set<String> SUPPORTED_EXTENSIONS = newHashSet("nuspec");
/**
* Initializes the analyzer once before any analysis is performed.
*
* @throws Exception if there's an error during initialization
*/
@Override
public void initializeFileTypeAnalyzer() throws Exception {
}
/**
* Returns the analyzer's name.
*
* @return the name of the analyzer
*/
@Override
public String getName() {
return ANALYZER_NAME;
}
/**
* Returns the key used in the properties file to reference the analyzer's enabled property.
*
* @return the analyzer's enabled property setting key
*/
@Override
protected String getAnalyzerEnabledSettingKey() {
return Settings.KEYS.ANALYZER_NUSPEC_ENABLED;
}
/**
* Returns the analysis phase under which the analyzer runs.
*
* @return the phase under which this analyzer runs
*/
@Override
public AnalysisPhase getAnalysisPhase() {
return ANALYSIS_PHASE;
}
/**
* Returns the extensions for which this Analyzer runs.
*
* @return the extensions for which this Analyzer runs
*/
@Override
public Set<String> getSupportedExtensions() {
return SUPPORTED_EXTENSIONS;
}
/**
* Performs the analysis.
*
* @param dependency the dependency to analyze
* @param engine the engine
* @throws AnalysisException when there's an exception during analysis
*/
@Override
public void analyzeFileType(Dependency dependency, Engine engine) throws AnalysisException {
LOGGER.log(Level.FINE, "Checking Nuspec file {0}", dependency.toString());
try {
final NuspecParser parser = new XPathNuspecParser();
NugetPackage np = null;
FileInputStream fis = null;
try {
fis = new FileInputStream(dependency.getActualFilePath());
np = parser.parse(fis);
} catch (NuspecParseException ex) {
throw new AnalysisException(ex);
} catch (FileNotFoundException ex) {
throw new AnalysisException(ex);
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
LOGGER.fine("Error closing input stream");
}
}
}
if (np.getOwners() != null) {
dependency.getVendorEvidence().addEvidence("nuspec", "owners", np.getOwners(), Confidence.HIGHEST);
}
dependency.getVendorEvidence().addEvidence("nuspec", "authors", np.getAuthors(), Confidence.HIGH);
dependency.getVersionEvidence().addEvidence("nuspec", "version", np.getVersion(), Confidence.HIGHEST);
dependency.getProductEvidence().addEvidence("nuspec", "id", np.getId(), Confidence.HIGHEST);
if (np.getTitle() != null) {
dependency.getProductEvidence().addEvidence("nuspec", "title", np.getTitle(), Confidence.MEDIUM);
}
} catch (Throwable e) {
throw new AnalysisException(e);
}
}
}

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -21,20 +20,19 @@ package org.owasp.dependencycheck.analyzer;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.Set;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.dependency.Vulnerability;
import org.owasp.dependencycheck.dependency.Identifier;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.data.nvdcve.CveDB;
import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.dependency.Identifier;
import org.owasp.dependencycheck.dependency.Vulnerability;
/**
* NvdCveAnalyzer is a utility class that takes a project dependency and
* attempts to discern if there is an associated CVEs. It uses the the
* identifiers found by other analyzers to lookup the CVE data.
* NvdCveAnalyzer is a utility class that takes a project dependency and attempts to discern if there is an associated
* CVEs. It uses the the identifiers found by other analyzers to lookup the CVE data.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class NvdCveAnalyzer implements Analyzer {
@@ -53,8 +51,7 @@ public class NvdCveAnalyzer implements Analyzer {
* @throws SQLException thrown when there is a SQL Exception
* @throws IOException thrown when there is an IO Exception
* @throws DatabaseException thrown when there is a database exceptions
* @throws ClassNotFoundException thrown if the h2 database driver cannot be
* loaded
* @throws ClassNotFoundException thrown if the h2 database driver cannot be loaded
*/
public void open() throws SQLException, IOException, DatabaseException, ClassNotFoundException {
cveDB = new CveDB();
@@ -64,6 +61,7 @@ public class NvdCveAnalyzer implements Analyzer {
/**
* Closes the data source.
*/
@Override
public void close() {
cveDB.close();
cveDB = null;
@@ -92,14 +90,13 @@ public class NvdCveAnalyzer implements Analyzer {
}
/**
* Analyzes a dependency and attempts to determine if there are any CPE
* identifiers for this dependency.
* Analyzes a dependency and attempts to determine if there are any CPE identifiers for this dependency.
*
* @param dependency The Dependency to analyze
* @param engine The analysis engine
* @throws AnalysisException is thrown if there is an issue analyzing the
* dependency
* @throws AnalysisException is thrown if there is an issue analyzing the dependency
*/
@Override
public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
for (Identifier id : dependency.getIdentifiers()) {
if ("cpe".equals(id.getType())) {
@@ -107,13 +104,17 @@ public class NvdCveAnalyzer implements Analyzer {
final String value = id.getValue();
final List<Vulnerability> vulns = cveDB.getVulnerabilities(value);
dependency.getVulnerabilities().addAll(vulns);
//TODO - remove this comment block after additional testing is completed
//note - valid match functionality has been moved into the CveDB class.
//// for (Vulnerability v : vulns) {
//// if (isValidMatch(dependency, v)) {
//// dependency.addVulnerability(v);
//// }
//// }
} catch (DatabaseException ex) {
throw new AnalysisException(ex);
}
}
}
for (Identifier id : dependency.getSuppressedIdentifiers()) {
if ("cpe".equals(id.getType())) {
try {
final String value = id.getValue();
final List<Vulnerability> vulns = cveDB.getVulnerabilities(value);
dependency.getSuppressedVulnerabilities().addAll(vulns);
} catch (DatabaseException ex) {
throw new AnalysisException(ex);
}
@@ -121,102 +122,33 @@ public class NvdCveAnalyzer implements Analyzer {
}
}
/**
* Returns true because this analyzer supports all dependency types.
*
* @return true.
*/
public Set<String> getSupportedExtensions() {
return null;
}
/**
* Returns the name of this analyzer.
*
* @return the name of this analyzer.
*/
@Override
public String getName() {
return "NVD CVE Analyzer";
}
/**
* Returns true because this analyzer supports all dependency types.
*
* @param extension the file extension of the dependency being analyzed.
* @return true.
*/
public boolean supportsExtension(String extension) {
return true;
}
/**
* Returns the analysis phase that this analyzer should run in.
*
* @return the analysis phase that this analyzer should run in.
*/
@Override
public AnalysisPhase getAnalysisPhase() {
return AnalysisPhase.FINDING_ANALYSIS;
}
/**
* Opens the NVD CVE Lucene Index.
* Opens the database used to gather NVD CVE data.
*
* @throws Exception is thrown if there is an issue opening the index.
*/
@Override
public void initialize() throws Exception {
this.open();
}
//TODO - remove this comment block after additional testing is completed
// The following check has been moved into the CveDB class.
//// /**
//// * <p>Determines if this is a valid vulnerability match for the given
//// * dependency. Specifically, this is concerned with ensuring the version
//// * numbers are correct.</p>
//// * <p>Currently, this is focused on the issues with the versions for Struts
//// * 1 and Struts 2. In the future this will due better matching on more
//// * version numbers.</p>
//// *
//// * @param dependency the dependency
//// * @param v the vulnerability
//// * @return returns true if the vulnerability is for the given dependency
//// */
//// private boolean isValidMatch(final Dependency dependency, final Vulnerability v) {
//// //right now I only know of the issue with Struts1/2
//// // start with fixing this problem.
////
//// //TODO extend this solution to do better version matching for the vulnerable software.
//// boolean struts1 = false;
//// boolean struts2 = false;
//// for (Identifier i : dependency.getIdentifiers()) {
//// if (i.getValue().startsWith("cpe:/a:apache:struts:")) {
//// final char version = i.getValue().charAt(21);
//// if (version == '1') {
//// struts1 = true;
//// }
//// if (version == '2') {
//// struts2 = true;
//// }
//// }
//// }
//// if (!struts1 && !struts2) {
//// return true; //we are not looking at struts, so return true.
//// }
//// if (struts1 && struts2) {
//// return true; //there is a mismatch here, but we can't solve it here so we return valid.
//// }
//// if (struts1) {
//// boolean hasStruts1Vuln = false;
//// boolean hasStruts2PreviousVersion = false;
//// for (VulnerableSoftware vs : v.getVulnerableSoftware()) {
//// //TODO FIX THIS
//// //hasStruts2PreviousVersion |= vs.hasPreviousVersion() && vs.getName().charAt(21) == '2';
//// //hasStruts1Vuln |= vs.getName().charAt(21) == '1';
//// }
//// if (!hasStruts1Vuln && hasStruts2PreviousVersion) {
//// return false;
//// }
//// }
////
//// return true;
//// }
}

View File

@@ -0,0 +1,75 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.dependency.Dependency;
import org.owasp.dependencycheck.suppression.SuppressionRule;
/**
* The suppression analyzer processes an externally defined XML document that complies with the suppressions.xsd schema.
* Any identified Vulnerability entries within the dependencies that match will be removed.
*
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class VulnerabilitySuppressionAnalyzer extends AbstractSuppressionAnalyzer {
//<editor-fold defaultstate="collapsed" desc="All standard implementation details of Analyzer">
/**
* The name of the analyzer.
*/
private static final String ANALYZER_NAME = "Vulnerability Suppression Analyzer";
/**
* The phase that this analyzer is intended to run in.
*/
private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.POST_FINDING_ANALYSIS;
/**
* Returns the name of the analyzer.
*
* @return the name of the analyzer.
*/
@Override
public String getName() {
return ANALYZER_NAME;
}
/**
* Returns the phase that the analyzer is intended to run in.
*
* @return the phase that the analyzer is intended to run in.
*/
@Override
public AnalysisPhase getAnalysisPhase() {
return ANALYSIS_PHASE;
}
//</editor-fold>
@Override
public void analyze(final Dependency dependency, final Engine engine) throws AnalysisException {
if (getRules() == null || getRules().size() <= 0) {
return;
}
for (final SuppressionRule rule : getRules()) {
rule.process(dependency);
}
}
}

View File

@@ -1,27 +1,26 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer;
package org.owasp.dependencycheck.analyzer.exception;
/**
* An exception thrown when the analysis of a dependency fails.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class AnalysisException extends Exception {
@@ -56,7 +55,7 @@ public class AnalysisException extends Exception {
}
/**
* Creates a new DownloadFailedException.
* Creates a new AnalysisException.
*
* @param msg a message for the exception.
* @param ex the cause of the failure.

View File

@@ -0,0 +1,66 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.analyzer.exception;
/**
* An exception thrown when files in an archive cannot be extracted.
*
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class ArchiveExtractionException extends Exception {
/**
* The serial version UID for serialization.
*/
private static final long serialVersionUID = 1L;
/**
* Creates a new ArchiveExtractionException.
*/
public ArchiveExtractionException() {
super();
}
/**
* Creates a new ArchiveExtractionException.
*
* @param msg a message for the exception.
*/
public ArchiveExtractionException(String msg) {
super(msg);
}
/**
* Creates a new ArchiveExtractionException.
*
* @param ex the cause of the failure.
*/
public ArchiveExtractionException(Throwable ex) {
super(ex);
}
/**
* Creates a new ArchiveExtractionException.
*
* @param msg a message for the exception.
* @param ex the cause of the failure.
*/
public ArchiveExtractionException(String msg, Throwable ex) {
super(msg, ex);
}
}

View File

@@ -0,0 +1,12 @@
/**
* <html>
* <head>
* <title>org.owasp.dependencycheck.analyzer.exception</title>
* </head>
* <body>
* <p>
* A collection of exception classes used within the analyzers.</p>
* </body>
* </html>
*/
package org.owasp.dependencycheck.analyzer.exception;

View File

@@ -1,67 +0,0 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.concurrency;
/**
* If thrown, indicates that a problem occurred when locking a directory.
*
* @author Jeremy Long (jeremy.long@owasp.org)
*/
public class DirectoryLockException extends Exception {
/**
* Default serial version UID.
*/
private static final long serialVersionUID = 1L;
/**
* Constructs a new Directory Lock Exception.
*/
public DirectoryLockException() {
super();
}
/**
* Constructs a new Directory Lock Exception.
*
* @param msg the message describing the exception
*/
public DirectoryLockException(String msg) {
super(msg);
}
/**
* Constructs a new Directory Lock Exception.
*
* @param ex the cause of the exception
*/
public DirectoryLockException(Throwable ex) {
super(ex);
}
/**
* Constructs a new Directory Lock Exception.
*
* @param msg the message describing the exception
* @param ex the cause of the exception
*/
public DirectoryLockException(String msg, Throwable ex) {
super(msg, ex);
}
}

View File

@@ -1,267 +0,0 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.concurrency;
import java.io.Closeable;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.AsynchronousCloseException;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.nio.channels.FileLockInterruptionException;
import java.nio.channels.NonWritableChannelException;
import java.nio.channels.OverlappingFileLockException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Implements a spin lock on a given directory. If the lock cannot be obtained,
* the process will "spin" waiting for an opportunity to obtain the lock
* requested.
*
* @author Jeremy Long (jeremy.long@owasp.org)
*/
public class DirectorySpinLock implements Closeable /*, AutoCloseable*/ {
/**
* The name of the lock file.
*/
public static final String LOCK_NAME = "data.lock";
/**
* The maximum wait period used when attempting to obtain a lock.
*/
public static final int MAX_SPIN = 100;
/**
* The file channel used to perform the lock.
*/
private FileChannel channel = null;
/**
* The file used to perform the lock.
*/
private File lockFile = null;
/**
* The lock object.
*/
private FileLock lock = null;
/**
* The maximum number of seconds that the spin lock will wait while trying
* to obtain a lock.
*/
private long maxWait = MAX_SPIN;
/**
* Get the maximum wait time, in seconds, that the spin lock will wait while
* trying to obtain a lock.
*
* @return the number of seconds the spin lock will wait
*/
public long getMaxWait() {
return maxWait / 2; //sleep is for 500, so / 2
}
/**
* Set the maximum wait time, in seconds, that the spin lock will wait while
* trying to obtain a lock.
*
* @param maxWait the number of seconds the spin lock will wait
*/
public void setMaxWait(long maxWait) {
this.maxWait = maxWait * 2; //sleep is for 500, so * 2
}
/**
* Constructs a new spin lock on the given directory.
*
* @param directory the directory to monitor/lock
* @throws InvalidDirectoryException thrown if there is an issue with the
* directory provided
* @throws DirectoryLockException thrown there is an issue obtaining a
* handle to the lock file
*/
public DirectorySpinLock(File directory) throws InvalidDirectoryException, DirectoryLockException {
checkDirectory(directory);
lockFile = new File(directory, LOCK_NAME);
RandomAccessFile file = null;
try {
file = new RandomAccessFile(lockFile, "rw");
} catch (FileNotFoundException ex) {
throw new DirectoryLockException("Lock file not found", ex);
}
channel = file.getChannel();
}
/**
* Attempts to obtain an exclusive lock; an exception is thrown if the lock
* could not be obtained. This method may block for a few seconds if a lock
* cannot be obtained.
*
* @throws DirectoryLockException thrown if there is an exception obtaining
* the lock
*/
public void obtainSharedLock() throws DirectoryLockException {
obtainLock(true);
}
/**
* Attempts to obtain an exclusive lock; an exception is thrown if the lock
* could not be obtained. This method may block for a few seconds if a lock
* cannot be obtained.
*
* @throws DirectoryLockException thrown if there is an exception obtaining
* the lock
*/
public void obtainExclusiveLock() throws DirectoryLockException {
obtainLock(false);
}
/**
* Attempts to obtain a lock; an exception is thrown if the lock could not
* be obtained. This method may block for a few seconds if a lock cannot be
* obtained.
*
* @param shared true if the lock is shared, otherwise false
* @param maxWait the maximum time to wait, in seconds, while trying to
* obtain the lock
* @throws DirectoryLockException thrown if there is an exception obtaining
* the lock
*/
protected void obtainLock(boolean shared, long maxWait) throws DirectoryLockException {
setMaxWait(maxWait);
obtainLock(shared);
}
/**
* Attempts to obtain a lock; an exception is thrown if the lock could not
* be obtained. This method may block for a few seconds if a lock cannot be
* obtained.
*
* @param shared true if the lock is shared, otherwise false
* @throws DirectoryLockException thrown if there is an exception obtaining
* the lock
*/
protected void obtainLock(boolean shared) throws DirectoryLockException {
if (lock != null) {
release();
}
if (channel == null) {
throw new DirectoryLockException("Unable to create lock, no file channel exists");
}
int count = 0;
Exception lastException = null;
while (lock == null && count++ < maxWait) {
try {
lock = channel.lock(0, Long.MAX_VALUE, shared);
} catch (AsynchronousCloseException ex) {
lastException = ex;
} catch (ClosedChannelException ex) {
lastException = ex;
} catch (FileLockInterruptionException ex) {
lastException = ex;
} catch (OverlappingFileLockException ex) {
lastException = ex;
} catch (NonWritableChannelException ex) {
lastException = ex;
} catch (IOException ex) {
lastException = ex;
}
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
if (lock == null) {
if (lastException == null) {
throw new DirectoryLockException("Unable to obtain lock");
} else {
throw new DirectoryLockException("Unable to obtain lock", lastException);
}
}
}
/**
* Performs a few simple rudimentary checks on the specified directory.
* Specifically, does the file exist and is it a directory.
*
* @param directory the File object to inspect
* @throws InvalidDirectoryException thrown if the directory is null or is
* not a directory
*/
private void checkDirectory(File directory) throws InvalidDirectoryException {
if (directory == null) {
throw new InvalidDirectoryException("Unable to obtain lock on a null File");
}
if (!directory.isDirectory()) {
final String msg = String.format("File, '%s', does not exist or is not a directory", directory.getAbsolutePath());
throw new InvalidDirectoryException(msg);
}
}
/**
* Releases any locks and closes the underlying channel.
*
* @throws IOException if an IO Exception occurs
*/
@Override
public void close() throws IOException {
release();
// TODO uncomment this once support for 1.6 is dropped.
// if (lock != null) {
// try {
// lock.close();
// } catch (IOException ex) {
// Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Unable to close file lock due to IO Exception", ex);
// }
// }
if (channel != null) {
try {
channel.close();
} catch (IOException ex) {
Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Unable to close the channel for the file lock", ex);
}
}
if (lockFile != null) {
if (lockFile.exists()) {
/* yes, this delete could fail which is totally fine. The other
* thread holding the lock while delete it.
*/
lockFile.delete();
}
}
}
/**
* Releases the lock. Any exceptions that are thrown by the underlying lock
* during the release are ignored.
*/
public void release() {
if (lock != null) {
try {
lock.release();
} catch (ClosedChannelException ex) {
Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Uable to release file lock", ex);
} catch (IOException ex) {
Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Unable to release file lock due to IO Exception", ex);
}
}
}
}

View File

@@ -1,67 +0,0 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.concurrency;
/**
* If thrown, indicates that there is a problem with a directory.
*
* @author Jeremy Long (jeremy.long@owasp.org)
*/
public class InvalidDirectoryException extends Exception {
/**
* Default serial version UID.
*/
private static final long serialVersionUID = 1L;
/**
* Constructs a new Invalid Directory Exception.
*/
public InvalidDirectoryException() {
super();
}
/**
* Constructs a new Invalid Directory Exception.
*
* @param msg the message describing the exception
*/
public InvalidDirectoryException(String msg) {
super(msg);
}
/**
* Constructs a new Invalid Directory Exception.
*
* @param ex the cause of the exception
*/
public InvalidDirectoryException(Throwable ex) {
super(ex);
}
/**
* Constructs a new Invalid Directory Exception.
*
* @param msg the message describing the exception
* @param ex the cause of the exception
*/
public InvalidDirectoryException(String msg, Throwable ex) {
super(msg, ex);
}
}

View File

@@ -1,11 +0,0 @@
/**
* <html>
* <head>
* <title>org.owasp.dependencycheck.concurrency</title>
* </head>
* <body>
* Contains classes used to create shared and exclusive locks on directories.
* </body>
* </html>
*/
package org.owasp.dependencycheck.concurrency;

View File

@@ -1,38 +0,0 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data;
/**
* Defines an Index who's data is retrieved from the Internet. This data can be
* downloaded and the index updated.
*
* @author Jeremy Long (jeremy.long@owasp.org)
*/
public interface CachedWebDataSource {
/**
* Determines if an update to the current index is needed, if it is the new
* data is downloaded from the Internet and imported into the current Lucene
* Index.
*
* @throws UpdateException is thrown if there is an exception updating the
* index.
*/
void update() throws UpdateException;
}

View File

@@ -1,67 +0,0 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data;
import java.util.Iterator;
import java.util.ServiceLoader;
/**
*
* @author Jeremy Long (jeremy.long@owasp.org)
*/
public final class UpdateService {
/**
* the singleton reference to the service.
*/
private static UpdateService service;
/**
* the service loader for CachedWebDataSource.
*/
private final ServiceLoader<CachedWebDataSource> loader;
/**
* Creates a new instance of UpdateService
*/
private UpdateService() {
loader = ServiceLoader.load(CachedWebDataSource.class);
}
/**
* Retrieve the singleton instance of UpdateService.
*
* @return a singleton UpdateService.
*/
public static synchronized UpdateService getInstance() {
if (service == null) {
service = new UpdateService();
}
return service;
}
/**
* Returns an Iterator for all instances of the CachedWebDataSource
* interface.
*
* @return an iterator of CachedWebDataSource.
*/
public Iterator<CachedWebDataSource> getDataSources() {
return loader.iterator();
}
}

View File

@@ -0,0 +1,151 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2014 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data.central;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.owasp.dependencycheck.data.nexus.MavenArtifact;
import org.owasp.dependencycheck.utils.Settings;
import org.owasp.dependencycheck.utils.URLConnectionFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
/**
* Class of methods to search Maven Central via Central.
*
* @author colezlaw
*/
public class CentralSearch {
/**
* The URL for the Central service
*/
private final URL rootURL;
/**
* Whether to use the Proxy when making requests
*/
private boolean useProxy;
/**
* Used for logging.
*/
private static final Logger LOGGER = Logger.getLogger(CentralSearch.class.getName());
/**
* Creates a NexusSearch for the given repository URL.
*
* @param rootURL the URL of the repository on which searches should execute. Only parameters are added to this (so
* it should end in /select)
*/
public CentralSearch(URL rootURL) {
this.rootURL = rootURL;
if (null != Settings.getString(Settings.KEYS.PROXY_SERVER)) {
useProxy = true;
LOGGER.fine("Using proxy");
} else {
useProxy = false;
LOGGER.fine("Not using proxy");
}
}
/**
* Searches the configured Central URL for the given sha1 hash. If the artifact is found, a
* <code>MavenArtifact</code> is populated with the GAV.
*
* @param sha1 the SHA-1 hash string for which to search
* @return the populated Maven GAV.
* @throws IOException if it's unable to connect to the specified repository or if the specified artifact is not
* found.
*/
public List<MavenArtifact> searchSha1(String sha1) throws IOException {
if (null == sha1 || !sha1.matches("^[0-9A-Fa-f]{40}$")) {
throw new IllegalArgumentException("Invalid SHA1 format");
}
final URL url = new URL(rootURL + String.format("?q=1:\"%s\"&wt=xml", sha1));
LOGGER.fine(String.format("Searching Central url %s", url.toString()));
// Determine if we need to use a proxy. The rules:
// 1) If the proxy is set, AND the setting is set to true, use the proxy
// 2) Otherwise, don't use the proxy (either the proxy isn't configured,
// or proxy is specifically set to false)
final HttpURLConnection conn = URLConnectionFactory.createHttpURLConnection(url, useProxy);
conn.setDoOutput(true);
// JSON would be more elegant, but there's not currently a dependency
// on JSON, so don't want to add one just for this
conn.addRequestProperty("Accept", "application/xml");
conn.connect();
if (conn.getResponseCode() == 200) {
boolean missing = false;
try {
final DocumentBuilder builder = DocumentBuilderFactory
.newInstance().newDocumentBuilder();
final Document doc = builder.parse(conn.getInputStream());
final XPath xpath = XPathFactory.newInstance().newXPath();
final String numFound = xpath.evaluate("/response/result/@numFound", doc);
if ("0".equals(numFound)) {
missing = true;
} else {
final ArrayList<MavenArtifact> result = new ArrayList<MavenArtifact>();
final NodeList docs = (NodeList) xpath.evaluate("/response/result/doc", doc, XPathConstants.NODESET);
for (int i = 0; i < docs.getLength(); i++) {
final String g = xpath.evaluate("./str[@name='g']", docs.item(i));
LOGGER.finest(String.format("GroupId: %s", g));
final String a = xpath.evaluate("./str[@name='a']", docs.item(i));
LOGGER.finest(String.format("ArtifactId: %s", a));
final String v = xpath.evaluate("./str[@name='v']", docs.item(i));
LOGGER.finest(String.format("Version: %s", v));
result.add(new MavenArtifact(g, a, v, url.toString()));
}
return result;
}
} catch (Throwable e) {
// Anything else is jacked up XML stuff that we really can't recover
// from well
throw new IOException(e.getMessage(), e);
}
if (missing) {
throw new FileNotFoundException("Artifact not found in Central");
}
} else {
final String msg = String.format("Could not connect to Central received response code: %d %s",
conn.getResponseCode(), conn.getResponseMessage());
LOGGER.fine(msg);
throw new IOException(msg);
}
return null;
}
}

View File

@@ -0,0 +1,14 @@
/**
* <html>
* <head>
* <title>org.owasp.dependencycheck.data.central</title>
* </head>
* <body>
* <p>
* Contains classes related to searching Maven Central.</p>
* <p>
* These are used to abstract Maven Central searching away from OWASP Dependency Check so they can be reused elsewhere.</p>
* </body>
* </html>
*/
package org.owasp.dependencycheck.data.central;

View File

@@ -1,117 +0,0 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data.cpe;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.owasp.dependencycheck.utils.Settings;
/**
* The Base Index class used to access the CPE Index.
*
* @author Jeremy Long (jeremy.long@owasp.org)
*/
public abstract class BaseIndex {
/**
* The Lucene directory containing the index.
*/
private Directory directory;
/**
* Indicates whether or not the Lucene Index is open.
*/
private boolean indexOpen = false;
/**
* Gets the directory.
*
* @return the directory
*/
public Directory getDirectory() {
return directory;
}
/**
* Opens the CPE Index.
*
* @throws IOException is thrown if an IOException occurs opening the index.
*/
public void open() throws IOException {
directory = this.openDirectory();
indexOpen = true;
}
/**
* Closes the CPE Index.
*/
public void close() {
try {
directory.close();
} catch (IOException ex) {
final String msg = "Unable to update database due to an IO error.";
Logger.getLogger(BaseIndex.class.getName()).log(Level.SEVERE, msg);
Logger.getLogger(BaseIndex.class.getName()).log(Level.FINE, null, ex);
} finally {
directory = null;
}
indexOpen = false;
}
/**
* Returns the status of the data source - is the index open.
*
* @return true or false.
*/
public boolean isOpen() {
return indexOpen;
}
/**
* Returns the Lucene directory object for the CPE Index.
*
* @return the Lucene Directory object for the CPE Index.
* @throws IOException is thrown if an IOException occurs.
*/
protected Directory openDirectory() throws IOException {
final File path = getDataDirectory();
return FSDirectory.open(path);
}
/**
* Retrieves the directory that the JAR file exists in so that we can ensure
* we always use a common data directory.
*
* @return the data directory for this index.
* @throws IOException is thrown if an IOException occurs of course...
*/
public static File getDataDirectory() throws IOException {
final File path = Settings.getFile(Settings.KEYS.CPE_DATA_DIRECTORY);
if (!path.exists()) {
if (!path.mkdirs()) {
throw new IOException("Unable to create CPE Data directory");
}
}
return path;
}
}

View File

@@ -1,197 +0,0 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data.cpe;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.core.KeywordAnalyzer;
import org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.util.Version;
import org.owasp.dependencycheck.data.lucene.FieldAnalyzer;
import org.owasp.dependencycheck.data.lucene.SearchFieldAnalyzer;
/**
*
* @author Jeremy Long (jeremy.long@owasp.org)
*/
public class CpeIndexReader extends BaseIndex {
/**
* The Lucene IndexReader.
*/
private IndexReader indexReader;
/**
* The Lucene IndexSearcher.
*/
private IndexSearcher indexSearcher;
/**
* The Lucene Analyzer used for Searching.
*/
private Analyzer searchingAnalyzer;
/**
* The Lucene QueryParser used for Searching.
*/
private QueryParser queryParser;
/**
* The search field analyzer for the product field.
*/
private SearchFieldAnalyzer productSearchFieldAnalyzer;
/**
* The search field analyzer for the vendor field.
*/
private SearchFieldAnalyzer vendorSearchFieldAnalyzer;
/**
* Opens the CPE Index.
*
* @throws IOException is thrown if an IOException occurs opening the index.
*/
@Override
public void open() throws IOException {
//TODO add spinlock (shared)
super.open();
indexReader = DirectoryReader.open(getDirectory());
indexSearcher = new IndexSearcher(indexReader);
searchingAnalyzer = createSearchingAnalyzer();
queryParser = new QueryParser(Version.LUCENE_43, Fields.DOCUMENT_KEY, searchingAnalyzer);
}
/**
* Closes the CPE Index.
*/
@Override
public void close() {
//TODO remove spinlock (shared)
if (searchingAnalyzer != null) {
searchingAnalyzer.close();
searchingAnalyzer = null;
}
if (indexReader != null) {
try {
indexReader.close();
} catch (IOException ex) {
Logger.getLogger(CpeIndexReader.class.getName()).log(Level.FINEST, null, ex);
}
indexReader = null;
}
queryParser = null;
indexSearcher = null;
super.close();
}
/**
* Searches the index using the given search string.
*
* @param searchString the query text
* @param maxQueryResults the maximum number of documents to return
* @return the TopDocs found by the search
* @throws ParseException thrown when the searchString is invalid
* @throws IOException is thrown if there is an issue with the underlying
* Index
*/
public TopDocs search(String searchString, int maxQueryResults) throws ParseException, IOException {
if (searchString == null || searchString.trim().isEmpty()) {
throw new ParseException("Query is null or empty");
}
if (queryParser == null) {
if (isOpen()) {
final String msg = String.format("QueryParser is null for query: '%s'. Attempting to reopen index.",
searchString);
Logger.getLogger(CpeIndexReader.class.getName()).log(Level.WARNING, msg);
close();
open();
} else {
final String msg = String.format("QueryParser is null, but data source is open, for query: '%s'. Attempting to reopen index.",
searchString);
Logger.getLogger(CpeIndexReader.class.getName()).log(Level.WARNING, msg);
close();
open();
}
}
final Query query = queryParser.parse(searchString);
return indexSearcher.search(query, maxQueryResults);
}
/**
* Searches the index using the given query.
*
* @param query the query used to search the index
* @param maxQueryResults the max number of results to return
* @return the TopDocs found be the query
* @throws CorruptIndexException thrown if the Index is corrupt
* @throws IOException thrown if there is an IOException
*/
public TopDocs search(Query query, int maxQueryResults) throws CorruptIndexException, IOException {
resetSearchingAnalyzer();
return indexSearcher.search(query, maxQueryResults);
}
/**
* Retrieves a document from the Index.
*
* @param documentId the id of the document to retrieve
* @return the Document
* @throws IOException thrown if there is an IOException
*/
public Document getDocument(int documentId) throws IOException {
return indexSearcher.doc(documentId);
}
/**
* Creates an Analyzer for searching the CPE Index.
*
* @return the CPE Analyzer.
*/
@SuppressWarnings("unchecked")
private Analyzer createSearchingAnalyzer() {
final Map fieldAnalyzers = new HashMap();
fieldAnalyzers.put(Fields.DOCUMENT_KEY, new KeywordAnalyzer());
productSearchFieldAnalyzer = new SearchFieldAnalyzer(Version.LUCENE_43);
vendorSearchFieldAnalyzer = new SearchFieldAnalyzer(Version.LUCENE_43);
fieldAnalyzers.put(Fields.PRODUCT, productSearchFieldAnalyzer);
fieldAnalyzers.put(Fields.VENDOR, vendorSearchFieldAnalyzer);
return new PerFieldAnalyzerWrapper(new FieldAnalyzer(Version.LUCENE_43), fieldAnalyzers);
}
/**
* Resets the searching analyzers
*/
private void resetSearchingAnalyzer() {
if (productSearchFieldAnalyzer != null) {
productSearchFieldAnalyzer.clear();
}
if (vendorSearchFieldAnalyzer != null) {
vendorSearchFieldAnalyzer.clear();
}
}
}

View File

@@ -1,149 +0,0 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data.cpe;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.core.KeywordAnalyzer;
import org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.Term;
import org.apache.lucene.util.Version;
import org.owasp.dependencycheck.data.lucene.FieldAnalyzer;
/**
*
* @author Jeremy Long (jeremy.long@owasp.org)
*/
public class CpeIndexWriter extends BaseIndex {
/**
* The IndexWriter for the Lucene index.
*/
private IndexWriter indexWriter;
/**
* The Lucene Analyzer used for Indexing.
*/
private Analyzer indexingAnalyzer;
/**
* Opens the CPE Index.
*
* @throws IOException is thrown if an IOException occurs opening the index.
*/
@Override
public void open() throws IOException {
//TODO add spinlock
super.open();
indexingAnalyzer = createIndexingAnalyzer();
final IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_43, indexingAnalyzer);
indexWriter = new IndexWriter(getDirectory(), conf);
}
/**
* Closes the CPE Index.
*/
@Override
public void close() {
//TODO remove spinlock
if (indexWriter != null) {
commit();
try {
indexWriter.close(true);
} catch (CorruptIndexException ex) {
final String msg = "Unable to update database, there is a corrupt index.";
Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
} catch (IOException ex) {
final String msg = "Unable to update database due to an IO error.";
Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
} finally {
indexWriter = null;
}
}
if (indexingAnalyzer != null) {
indexingAnalyzer.close();
indexingAnalyzer = null;
}
super.close();
}
/**
* Commits any pending changes.
*/
public void commit() {
if (indexWriter != null) {
try {
indexWriter.forceMerge(1);
indexWriter.commit();
} catch (CorruptIndexException ex) {
final String msg = "Unable to update database, there is a corrupt index.";
Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
} catch (IOException ex) {
final String msg = "Unable to update database due to an IO error.";
Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
}
}
}
/**
* Creates the indexing analyzer for the CPE Index.
*
* @return the CPE Analyzer.
*/
@SuppressWarnings("unchecked")
private Analyzer createIndexingAnalyzer() {
final Map fieldAnalyzers = new HashMap();
fieldAnalyzers.put(Fields.DOCUMENT_KEY, new KeywordAnalyzer());
return new PerFieldAnalyzerWrapper(new FieldAnalyzer(Version.LUCENE_43), fieldAnalyzers);
}
/**
* Saves a CPE IndexEntry into the Lucene index.
*
* @param entry a CPE entry.
* @throws CorruptIndexException is thrown if the index is corrupt.
* @throws IOException is thrown if an IOException occurs.
*/
public void saveEntry(IndexEntry entry) throws CorruptIndexException, IOException {
final Document doc = new Document();
final Field documentKey = new StringField(Fields.DOCUMENT_KEY, entry.getDocumentId(), Field.Store.NO);
final Field vendor = new TextField(Fields.VENDOR, entry.getVendor(), Field.Store.YES);
final Field product = new TextField(Fields.PRODUCT, entry.getProduct(), Field.Store.YES);
doc.add(documentKey);
doc.add(vendor);
doc.add(product);
final Term term = new Term(Fields.DOCUMENT_KEY, entry.getDocumentId());
indexWriter.updateDocument(term, doc);
}
}

View File

@@ -0,0 +1,328 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data.cpe;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.core.KeywordAnalyzer;
import org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.RAMDirectory;
import org.owasp.dependencycheck.data.lucene.FieldAnalyzer;
import org.owasp.dependencycheck.data.lucene.LuceneUtils;
import org.owasp.dependencycheck.data.lucene.SearchFieldAnalyzer;
import org.owasp.dependencycheck.data.nvdcve.CveDB;
import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
import org.owasp.dependencycheck.utils.Pair;
/**
* An in memory lucene index that contains the vendor/product combinations from the CPE (application) identifiers within
* the NVD CVE data.
*
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public final class CpeMemoryIndex {
/**
* The logger.
*/
private static final Logger LOGGER = Logger.getLogger(CpeMemoryIndex.class.getName());
/**
* singleton instance.
*/
private static CpeMemoryIndex instance = new CpeMemoryIndex();
/**
* private constructor for singleton.
*/
private CpeMemoryIndex() {
}
/**
* Gets the singleton instance of the CpeMemoryIndex.
*
* @return the instance of the CpeMemoryIndex
*/
public static CpeMemoryIndex getInstance() {
return instance;
}
/**
* The in memory Lucene index.
*/
private RAMDirectory index;
/**
* The Lucene IndexReader.
*/
private IndexReader indexReader;
/**
* The Lucene IndexSearcher.
*/
private IndexSearcher indexSearcher;
/**
* The Lucene Analyzer used for Searching.
*/
private Analyzer searchingAnalyzer;
/**
* The Lucene QueryParser used for Searching.
*/
private QueryParser queryParser;
/**
* The search field analyzer for the product field.
*/
private SearchFieldAnalyzer productSearchFieldAnalyzer;
/**
* The search field analyzer for the vendor field.
*/
private SearchFieldAnalyzer vendorSearchFieldAnalyzer;
/**
* Creates and loads data into an in memory index.
*
* @param cve the data source to retrieve the cpe data
* @throws IndexException thrown if there is an error creating the index
*/
public void open(CveDB cve) throws IndexException {
if (!openState) {
index = new RAMDirectory();
buildIndex(cve);
try {
indexReader = DirectoryReader.open(index);
} catch (IOException ex) {
throw new IndexException(ex);
}
indexSearcher = new IndexSearcher(indexReader);
searchingAnalyzer = createSearchingAnalyzer();
queryParser = new QueryParser(LuceneUtils.CURRENT_VERSION, Fields.DOCUMENT_KEY, searchingAnalyzer);
openState = true;
}
}
/**
* A flag indicating whether or not the index is open.
*/
private boolean openState = false;
/**
* returns whether or not the index is open.
*
* @return whether or not the index is open
*/
public boolean isOpen() {
return openState;
}
/**
* Creates the indexing analyzer for the CPE Index.
*
* @return the CPE Analyzer.
*/
@SuppressWarnings("unchecked")
private Analyzer createIndexingAnalyzer() {
final Map fieldAnalyzers = new HashMap();
fieldAnalyzers.put(Fields.DOCUMENT_KEY, new KeywordAnalyzer());
return new PerFieldAnalyzerWrapper(new FieldAnalyzer(LuceneUtils.CURRENT_VERSION), fieldAnalyzers);
}
/**
* Creates an Analyzer for searching the CPE Index.
*
* @return the CPE Analyzer.
*/
@SuppressWarnings("unchecked")
private Analyzer createSearchingAnalyzer() {
final Map<String, Analyzer> fieldAnalyzers = new HashMap<String, Analyzer>();
fieldAnalyzers.put(Fields.DOCUMENT_KEY, new KeywordAnalyzer());
productSearchFieldAnalyzer = new SearchFieldAnalyzer(LuceneUtils.CURRENT_VERSION);
vendorSearchFieldAnalyzer = new SearchFieldAnalyzer(LuceneUtils.CURRENT_VERSION);
fieldAnalyzers.put(Fields.PRODUCT, productSearchFieldAnalyzer);
fieldAnalyzers.put(Fields.VENDOR, vendorSearchFieldAnalyzer);
return new PerFieldAnalyzerWrapper(new FieldAnalyzer(LuceneUtils.CURRENT_VERSION), fieldAnalyzers);
}
/**
* Saves a CPE IndexEntry into the Lucene index.
*
* @param vendor the vendor to index
* @param product the product to index
* @param indexWriter the index writer to write the entry into
* @throws CorruptIndexException is thrown if the index is corrupt
* @throws IOException is thrown if an IOException occurs
*/
public void saveEntry(String vendor, String product, IndexWriter indexWriter) throws CorruptIndexException, IOException {
final Document doc = new Document();
final Field v = new TextField(Fields.VENDOR, vendor, Field.Store.YES);
final Field p = new TextField(Fields.PRODUCT, product, Field.Store.YES);
doc.add(v);
doc.add(p);
indexWriter.addDocument(doc);
}
/**
* Closes the CPE Index.
*/
public void close() {
if (searchingAnalyzer != null) {
searchingAnalyzer.close();
searchingAnalyzer = null;
}
if (indexReader != null) {
try {
indexReader.close();
} catch (IOException ex) {
LOGGER.log(Level.FINEST, null, ex);
}
indexReader = null;
}
queryParser = null;
indexSearcher = null;
if (index != null) {
index.close();
index = null;
}
openState = false;
}
/**
* Builds the CPE Lucene Index based off of the data within the CveDB.
*
* @param cve the data base containing the CPE data
* @throws IndexException thrown if there is an issue creating the index
*/
private void buildIndex(CveDB cve) throws IndexException {
Analyzer analyzer = null;
IndexWriter indexWriter = null;
try {
analyzer = createIndexingAnalyzer();
final IndexWriterConfig conf = new IndexWriterConfig(LuceneUtils.CURRENT_VERSION, analyzer);
indexWriter = new IndexWriter(index, conf);
try {
final Set<Pair<String, String>> data = cve.getVendorProductList();
for (Pair<String, String> pair : data) {
saveEntry(pair.getLeft(), pair.getRight(), indexWriter);
}
} catch (DatabaseException ex) {
LOGGER.log(Level.FINE, null, ex);
throw new IndexException("Error reading CPE data", ex);
}
} catch (CorruptIndexException ex) {
throw new IndexException("Unable to close an in-memory index", ex);
} catch (IOException ex) {
throw new IndexException("Unable to close an in-memory index", ex);
} finally {
if (indexWriter != null) {
try {
try {
indexWriter.commit();
} finally {
indexWriter.close(true);
}
} catch (CorruptIndexException ex) {
throw new IndexException("Unable to close an in-memory index", ex);
} catch (IOException ex) {
throw new IndexException("Unable to close an in-memory index", ex);
}
if (analyzer != null) {
analyzer.close();
}
}
}
}
/**
* Resets the searching analyzers
*/
private void resetSearchingAnalyzer() {
if (productSearchFieldAnalyzer != null) {
productSearchFieldAnalyzer.clear();
}
if (vendorSearchFieldAnalyzer != null) {
vendorSearchFieldAnalyzer.clear();
}
}
/**
* Searches the index using the given search string.
*
* @param searchString the query text
* @param maxQueryResults the maximum number of documents to return
* @return the TopDocs found by the search
* @throws ParseException thrown when the searchString is invalid
* @throws IOException is thrown if there is an issue with the underlying Index
*/
public TopDocs search(String searchString, int maxQueryResults) throws ParseException, IOException {
if (searchString == null || searchString.trim().isEmpty()) {
throw new ParseException("Query is null or empty");
}
final Query query = queryParser.parse(searchString);
return indexSearcher.search(query, maxQueryResults);
}
/**
* Searches the index using the given query.
*
* @param query the query used to search the index
* @param maxQueryResults the max number of results to return
* @return the TopDocs found be the query
* @throws CorruptIndexException thrown if the Index is corrupt
* @throws IOException thrown if there is an IOException
*/
public TopDocs search(Query query, int maxQueryResults) throws CorruptIndexException, IOException {
resetSearchingAnalyzer();
return indexSearcher.search(query, maxQueryResults);
}
/**
* Retrieves a document from the Index.
*
* @param documentId the id of the document to retrieve
* @return the Document
* @throws IOException thrown if there is an IOException
*/
public Document getDocument(int documentId) throws IOException {
return indexSearcher.doc(documentId);
}
/**
* Returns the number of CPE entries stored in the index.
*
* @return the number of CPE entries stored in the index
*/
public int numDocs() {
if (indexReader == null) {
return -1;
}
return indexReader.numDocs();
}
}

View File

@@ -1,30 +1,28 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data.cpe;
/**
* Fields is a collection of field names used within the Lucene index for CPE
* entries.
* Fields is a collection of field names used within the Lucene index for CPE entries.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public abstract class Fields {
public final class Fields {
/**
* The key for the name document id.
@@ -38,7 +36,10 @@ public abstract class Fields {
* The key for the product field.
*/
public static final String PRODUCT = "product";
/**
* The key for the version field.
* Private constructor as this is more of an enumeration rather then a full class.
*/
private Fields() {
}
}

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -25,7 +24,7 @@ import java.net.URLDecoder;
/**
* A CPE entry containing the name, vendor, product, and version.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class IndexEntry implements Serializable {
@@ -126,16 +125,18 @@ public class IndexEntry implements Serializable {
}
/**
* <p>Parses a name attribute value, from the cpe.xml, into its
* corresponding parts: vendor, product.</p>
* <p>Example:</p>
* <p>
* Parses a name attribute value, from the cpe.xml, into its corresponding parts: vendor, product.</p>
* <p>
* Example:</p>
* <code>nbsp;nbsp;nbsp;cpe:/a:apache:struts:1.1:rc2</code>
*
* <p>Results in:</p> <ul> <li>Vendor: apache</li> <li>Product: struts</li>
* <p>
* Results in:</p> <ul> <li>Vendor: apache</li> <li>Product: struts</li>
* </ul>
* <p>If it is necessary to parse the CPE into more parts (i.e. to include
* version and revision) then you should use the
* {@link org.owasp.dependencycheck.dependency.VulnerableSoftware#parseName VulnerableSoftware.parseName()}.
* <p>
* If it is necessary to parse the CPE into more parts (i.e. to include version and revision) then you should use
* the {@link org.owasp.dependencycheck.dependency.VulnerableSoftware#parseName VulnerableSoftware.parseName()}.
*
* @param cpeName the cpe name
* @throws UnsupportedEncodingException should never be thrown...

View File

@@ -0,0 +1,66 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data.cpe;
/**
* An exception thrown when the there is an issue using the in-memory CPE Index.
*
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class IndexException extends Exception {
/**
* The serial version UID for serialization.
*/
private static final long serialVersionUID = 1L;
/**
* Creates a new IndexException.
*/
public IndexException() {
super();
}
/**
* Creates a new IndexException.
*
* @param msg a message for the exception.
*/
public IndexException(String msg) {
super(msg);
}
/**
* Creates a new IndexException.
*
* @param ex the cause of the failure.
*/
public IndexException(Throwable ex) {
super(ex);
}
/**
* Creates a new IndexException.
*
* @param msg a message for the exception.
* @param ex the cause of the failure.
*/
public IndexException(String msg, Throwable ex) {
super(msg, ex);
}
}

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -27,10 +26,15 @@ import java.util.logging.Logger;
/**
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public final class CweDB {
/**
* The Logger.
*/
private static final Logger LOGGER = Logger.getLogger(CweDB.class.getName());
/**
* Empty private constructor as this is a utility class.
*/
@@ -53,19 +57,21 @@ public final class CweDB {
final String filePath = "data/cwe.hashmap.serialized";
final InputStream input = CweDB.class.getClassLoader().getResourceAsStream(filePath);
oin = new ObjectInputStream(input);
return (HashMap<String, String>) oin.readObject();
@SuppressWarnings("unchecked")
final HashMap<String, String> ret = (HashMap<String, String>) oin.readObject();
return ret;
} catch (ClassNotFoundException ex) {
Logger.getLogger(CweDB.class.getName()).log(Level.WARNING, "Unable to load CWE data. This should not be an issue.");
Logger.getLogger(CweDB.class.getName()).log(Level.FINE, null, ex);
LOGGER.log(Level.WARNING, "Unable to load CWE data. This should not be an issue.");
LOGGER.log(Level.FINE, null, ex);
} catch (IOException ex) {
Logger.getLogger(CweDB.class.getName()).log(Level.WARNING, "Unable to load CWE data due to an IO Error. This should not be an issue.");
Logger.getLogger(CweDB.class.getName()).log(Level.FINE, null, ex);
LOGGER.log(Level.WARNING, "Unable to load CWE data due to an IO Error. This should not be an issue.");
LOGGER.log(Level.FINE, null, ex);
} finally {
if (oin != null) {
try {
oin.close();
} catch (IOException ex) {
Logger.getLogger(CweDB.class.getName()).log(Level.FINEST, null, ex);
LOGGER.log(Level.FINEST, null, ex);
}
}
}
@@ -73,7 +79,8 @@ public final class CweDB {
}
/**
* <p>Returns the full CWE name from the CWE ID.</p>
* <p>
* Returns the full CWE name from the CWE ID.</p>
*
* @param cweId the CWE ID
* @return the full name of the CWE

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -26,7 +25,7 @@ import org.xml.sax.helpers.DefaultHandler;
/**
* A SAX Handler that will parse the CWE XML.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class CweHandler extends DefaultHandler {

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
@@ -24,10 +23,9 @@ import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
/**
* An abstract tokenizing filter that can be used as the base for a tokenizing
* filter.
* An abstract tokenizing filter that can be used as the base for a tokenizing filter.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public abstract class AbstractTokenizingFilter extends TokenFilter {

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
@@ -23,10 +22,9 @@ import org.apache.lucene.analysis.util.CharTokenizer;
import org.apache.lucene.util.Version;
/**
* Tokenizes the input breaking it into tokens when non-alpha/numeric characters
* are found.
* Tokenizes the input breaking it into tokens when non-alpha/numeric characters are found.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class AlphaNumericTokenizer extends CharTokenizer {

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -22,7 +21,7 @@ import org.apache.lucene.search.similarities.DefaultSimilarity;
/**
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class DependencySimilarity extends DefaultSimilarity {
@@ -32,12 +31,10 @@ public class DependencySimilarity extends DefaultSimilarity {
private static final long serialVersionUID = 1L;
/**
* <p>Override the default idf implementation so that frequency within all
* document is ignored.</p>
* <p>
* Override the default idf implementation so that frequency within all document is ignored.</p>
*
* See <a
* href="http://www.lucenetutorial.com/advanced-topics/scoring.html">this
* article</a> for more details.
* See <a href="http://www.lucenetutorial.com/advanced-topics/scoring.html">this article</a> for more details.
*
* @param docFreq - the number of documents which contain the term
* @param numDocs - the total number of documents in the collection

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -29,11 +28,11 @@ import org.apache.lucene.analysis.miscellaneous.WordDelimiterFilter;
import org.apache.lucene.util.Version;
/**
* <p>A Lucene Analyzer that utilizes the WhitespaceTokenizer,
* WordDelimiterFilter, LowerCaseFilter, and StopFilter. The intended purpose of
* this Analyzer is to index the CPE fields vendor and product.</p>
* <p>
* A Lucene Analyzer that utilizes the WhitespaceTokenizer, WordDelimiterFilter, LowerCaseFilter, and StopFilter. The
* intended purpose of this Analyzer is to index the CPE fields vendor and product.</p>
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class FieldAnalyzer extends Analyzer {

View File

@@ -1,31 +1,38 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data.lucene;
import org.apache.lucene.util.Version;
/**
* <p>Lucene utils is a set of utilize written to make constructing Lucene
* queries simpler.</p>
* <p>
* Lucene utils is a set of utilize written to make constructing Lucene queries simpler.</p>
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public final class LuceneUtils {
/**
* The current version of Lucene being used. Declaring this one place so an upgrade doesn't require hunting through
* the code base.
*/
public static final Version CURRENT_VERSION = Version.LUCENE_45;
/**
* Private constructor as this is a utility class.
*/
@@ -33,8 +40,7 @@ public final class LuceneUtils {
}
/**
* Appends the text to the supplied StringBuilder escaping Lucene control
* characters in the process.
* Appends the text to the supplied StringBuilder escaping Lucene control characters in the process.
*
* @param buf a StringBuilder to append the escaped text to
* @param text the data to be escaped
@@ -80,8 +86,7 @@ public final class LuceneUtils {
}
/**
* Escapes the text passed in so that it is treated as data instead of
* control characters.
* Escapes the text passed in so that it is treated as data instead of control characters.
*
* @param text data to be escaped
* @return the escaped text.

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -31,7 +30,7 @@ import org.apache.lucene.util.Version;
/**
* A Lucene field analyzer used to analyzer queries against the CPE data.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public class SearchFieldAnalyzer extends Analyzer {
@@ -40,8 +39,8 @@ public class SearchFieldAnalyzer extends Analyzer {
*/
private final Version version;
/**
* A local reference to the TokenPairConcatenatingFilter so that we can
* clear any left over state if this analyzer is re-used.
* A local reference to the TokenPairConcatenatingFilter so that we can clear any left over state if this analyzer
* is re-used.
*/
private TokenPairConcatenatingFilter concatenatingFilter;
@@ -85,10 +84,11 @@ public class SearchFieldAnalyzer extends Analyzer {
}
/**
* <p>Resets the analyzer and clears any internal state data that may have
* been left-over from previous uses of the analyzer.</p>
* <p><b>If this analyzer is re-used this method must be called between
* uses.</b></p>
* <p>
* Resets the analyzer and clears any internal state data that may have been left-over from previous uses of the
* analyzer.</p>
* <p>
* <b>If this analyzer is re-used this method must be called between uses.</b></p>
*/
public void clear() {
if (concatenatingFilter != null) {

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -27,10 +26,9 @@ import org.apache.lucene.analysis.core.WhitespaceTokenizer;
import org.apache.lucene.util.Version;
/**
* SearchVersionAnalyzer is a Lucene Analyzer used to analyze version
* information.
* SearchVersionAnalyzer is a Lucene Analyzer used to analyze version information.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
* @deprecated version information is no longer stored in lucene
*/
@Deprecated

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -25,12 +24,12 @@ import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
/**
* <p>Takes a TokenStream and adds additional tokens by concatenating pairs of
* words.</p>
* <p><b>Example:</b> "Spring Framework Core" -> "Spring SpringFramework
* Framework FrameworkCore Core".</p>
* <p>
* Takes a TokenStream and adds additional tokens by concatenating pairs of words.</p>
* <p>
* <b>Example:</b> "Spring Framework Core" -> "Spring SpringFramework Framework FrameworkCore Core".</p>
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public final class TokenPairConcatenatingFilter extends TokenFilter {
@@ -76,9 +75,8 @@ public final class TokenPairConcatenatingFilter extends TokenFilter {
}
/**
* Increments the underlying TokenStream and sets CharTermAttributes to
* construct an expanded set of tokens by concatenating tokens with the
* previous token.
* Increments the underlying TokenStream and sets CharTermAttributes to construct an expanded set of tokens by
* concatenating tokens with the previous token.
*
* @return whether or not we have hit the end of the TokenStream
* @throws IOException is thrown when an IOException occurs
@@ -113,10 +111,11 @@ public final class TokenPairConcatenatingFilter extends TokenFilter {
}
/**
* <p>Resets the Filter and clears any internal state data that may have
* been left-over from previous uses of the Filter.</p>
* <p><b>If this Filter is re-used this method must be called between
* uses.</b></p>
* <p>
* Resets the Filter and clears any internal state data that may have been left-over from previous uses of the
* Filter.</p>
* <p>
* <b>If this Filter is re-used this method must be called between uses.</b></p>
*/
public void clear() {
previousWord = null;

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2013 Jeremy Long. All Rights Reserved.
*/
@@ -29,15 +28,18 @@ import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.owasp.dependencycheck.utils.UrlStringUtils;
/**
* <p>Takes a TokenStream and splits or adds tokens to correctly index version
* numbers.</p>
* <p><b>Example:</b> "3.0.0.RELEASE" -> "3 3.0 3.0.0 RELEASE
* 3.0.0.RELEASE".</p>
* <p>
* Takes a TokenStream and splits or adds tokens to correctly index version numbers.</p>
* <p>
* <b>Example:</b> "3.0.0.RELEASE" -> "3 3.0 3.0.0 RELEASE 3.0.0.RELEASE".</p>
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
*/
public final class UrlTokenizingFilter extends AbstractTokenizingFilter {
/**
* The logger.
*/
private static final Logger LOGGER = Logger.getLogger(UrlTokenizingFilter.class.getName());
/**
* Constructs a new VersionTokenizingFilter.
*
@@ -48,9 +50,8 @@ public final class UrlTokenizingFilter extends AbstractTokenizingFilter {
}
/**
* Increments the underlying TokenStream and sets CharTermAttributes to
* construct an expanded set of tokens by concatenating tokens with the
* previous token.
* Increments the underlying TokenStream and sets CharTermAttributes to construct an expanded set of tokens by
* concatenating tokens with the previous token.
*
* @return whether or not we have hit the end of the TokenStream
* @throws IOException is thrown when an IOException occurs
@@ -69,7 +70,7 @@ public final class UrlTokenizingFilter extends AbstractTokenizingFilter {
final List<String> data = UrlStringUtils.extractImportantUrlData(part);
tokens.addAll(data);
} catch (MalformedURLException ex) {
Logger.getLogger(UrlTokenizingFilter.class.getName()).log(Level.INFO, "error parsing " + part, ex);
LOGGER.log(Level.FINE, "error parsing " + part, ex);
tokens.add(part);
}
} else {

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -29,7 +28,7 @@ import org.apache.lucene.util.Version;
/**
* VersionAnalyzer is a Lucene Analyzer used to analyze version information.
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
* @deprecated version information is no longer stored in lucene
*/
@Deprecated

View File

@@ -1,18 +1,17 @@
/*
* This file is part of dependency-check-core.
*
* Dependency-check-core is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* Dependency-check-core is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU General Public License along with
* dependency-check-core. If not, see http://www.gnu.org/licenses/.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2012 Jeremy Long. All Rights Reserved.
*/
@@ -24,12 +23,12 @@ import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
/**
* <p>Takes a TokenStream and splits or adds tokens to correctly index version
* numbers.</p>
* <p><b>Example:</b> "3.0.0.RELEASE" -> "3 3.0 3.0.0 RELEASE
* 3.0.0.RELEASE".</p>
* <p>
* Takes a TokenStream and splits or adds tokens to correctly index version numbers.</p>
* <p>
* <b>Example:</b> "3.0.0.RELEASE" -> "3 3.0 3.0.0 RELEASE 3.0.0.RELEASE".</p>
*
* @author Jeremy Long (jeremy.long@owasp.org)
* @author Jeremy Long <jeremy.long@owasp.org>
* @deprecated version information is no longer stored in lucene
*/
@Deprecated
@@ -45,9 +44,8 @@ public final class VersionTokenizingFilter extends AbstractTokenizingFilter {
}
/**
* Increments the underlying TokenStream and sets CharTermAttributes to
* construct an expanded set of tokens by concatenating tokens with the
* previous token.
* Increments the underlying TokenStream and sets CharTermAttributes to construct an expanded set of tokens by
* concatenating tokens with the previous token.
*
* @return whether or not we have hit the end of the TokenStream
* @throws IOException is thrown when an IOException occurs
@@ -69,13 +67,13 @@ public final class VersionTokenizingFilter extends AbstractTokenizingFilter {
}
/**
* <p>Analyzes the version and adds several copies of the version as
* different tokens. For example, the version 1.2.7 would create the tokens
* 1 1.2 1.2.7. This is useful in discovering the correct version -
* sometimes a maintenance or build number will throw off the version
* identification.</p>
* <p>
* Analyzes the version and adds several copies of the version as different tokens. For example, the version 1.2.7
* would create the tokens 1 1.2 1.2.7. This is useful in discovering the correct version - sometimes a maintenance
* or build number will throw off the version identification.</p>
*
* <p>expected&nbsp;format:&nbps;major.minor[.maintenance[.build]]</p>
* <p>
* expected&nbsp;format:&nbps;major.minor[.maintenance[.build]]</p>
*
* @param version the version to analyze
*/

View File

@@ -0,0 +1,164 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2014 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data.nexus;
/**
* Simple bean representing a Maven Artifact.
*
* @author colezlaw
*/
public class MavenArtifact {
/**
* The groupId
*/
private String groupId;
/**
* The artifactId
*/
private String artifactId;
/**
* The version
*/
private String version;
/**
* The artifact url. This may change depending on which Nexus server the search took place.
*/
private String artifactUrl;
/**
* Creates an empty MavenArtifact.
*/
public MavenArtifact() {
}
/**
* Creates a MavenArtifact with the given attributes.
*
* @param groupId the groupId
* @param artifactId the artifactId
* @param version the version
*/
public MavenArtifact(String groupId, String artifactId, String version) {
setGroupId(groupId);
setArtifactId(artifactId);
setVersion(version);
}
/**
* Creates a MavenArtifact with the given attributes.
*
* @param groupId the groupId
* @param artifactId the artifactId
* @param version the version
* @param url the artifactLink url
*/
public MavenArtifact(String groupId, String artifactId, String version, String url) {
setGroupId(groupId);
setArtifactId(artifactId);
setVersion(version);
setArtifactUrl(url);
}
/**
* Returns the Artifact coordinates as a String.
*
* @return the String representation of the artifact coordinates
*/
@Override
public String toString() {
return String.format("%s:%s:%s", groupId, artifactId, version);
}
/**
* Sets the groupId.
*
* @param groupId the groupId
*/
public void setGroupId(String groupId) {
this.groupId = groupId;
}
/**
* Gets the groupId.
*
* @return the groupId
*/
public String getGroupId() {
return groupId;
}
/**
* Sets the artifactId.
*
* @param artifactId the artifactId
*/
public void setArtifactId(String artifactId) {
this.artifactId = artifactId;
}
/**
* Gets the artifactId.
*
* @return the artifactId
*/
public String getArtifactId() {
return artifactId;
}
/**
* Sets the version.
*
* @param version the version
*/
public void setVersion(String version) {
this.version = version;
}
/**
* Gets the version.
*
* @return the version
*/
public String getVersion() {
return version;
}
/**
* Sets the artifactUrl.
*
* @param artifactUrl the artifactUrl
*/
public void setArtifactUrl(String artifactUrl) {
this.artifactUrl = artifactUrl;
}
/**
* Gets the artifactUrl.
*
* @return the artifactUrl
*/
public String getArtifactUrl() {
return artifactUrl;
}
}
// vim: cc=120:sw=4:ts=4:sts=4

View File

@@ -0,0 +1,178 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2014 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data.nexus;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import org.owasp.dependencycheck.utils.InvalidSettingException;
import org.owasp.dependencycheck.utils.Settings;
import org.owasp.dependencycheck.utils.URLConnectionFactory;
import org.w3c.dom.Document;
/**
* Class of methods to search Nexus repositories.
*
* @author colezlaw
*/
public class NexusSearch {
/**
* The root URL for the Nexus repository service
*/
private final URL rootURL;
/**
* Whether to use the Proxy when making requests
*/
private boolean useProxy;
/**
* Used for logging.
*/
private static final Logger LOGGER = Logger.getLogger(NexusSearch.class
.getName());
/**
* Creates a NexusSearch for the given repository URL.
*
* @param rootURL the root URL of the repository on which searches should execute. full URL's are calculated
* relative to this URL, so it should end with a /
*/
public NexusSearch(URL rootURL) {
this.rootURL = rootURL;
try {
if (null != Settings.getString(Settings.KEYS.PROXY_SERVER)
&& Settings.getBoolean(Settings.KEYS.ANALYZER_NEXUS_PROXY)) {
useProxy = true;
LOGGER.fine("Using proxy");
} else {
useProxy = false;
LOGGER.fine("Not using proxy");
}
} catch (InvalidSettingException ise) {
useProxy = false;
}
}
/**
* Searches the configured Nexus repository for the given sha1 hash. If the artifact is found, a
* <code>MavenArtifact</code> is populated with the coordinate information.
*
* @param sha1 The SHA-1 hash string for which to search
* @return the populated Maven coordinates
* @throws IOException if it's unable to connect to the specified repository or if the specified artifact is not
* found.
*/
public MavenArtifact searchSha1(String sha1) throws IOException {
if (null == sha1 || !sha1.matches("^[0-9A-Fa-f]{40}$")) {
throw new IllegalArgumentException("Invalid SHA1 format");
}
final URL url = new URL(rootURL, String.format("identify/sha1/%s",
sha1.toLowerCase()));
LOGGER.fine(String.format("Searching Nexus url %s", url.toString()));
// Determine if we need to use a proxy. The rules:
// 1) If the proxy is set, AND the setting is set to true, use the proxy
// 2) Otherwise, don't use the proxy (either the proxy isn't configured,
// or proxy is specifically
// set to false
final HttpURLConnection conn = URLConnectionFactory.createHttpURLConnection(url, useProxy);
conn.setDoOutput(true);
// JSON would be more elegant, but there's not currently a dependency
// on JSON, so don't want to add one just for this
conn.addRequestProperty("Accept", "application/xml");
conn.connect();
if (conn.getResponseCode() == 200) {
try {
final DocumentBuilder builder = DocumentBuilderFactory
.newInstance().newDocumentBuilder();
final Document doc = builder.parse(conn.getInputStream());
final XPath xpath = XPathFactory.newInstance().newXPath();
final String groupId = xpath
.evaluate(
"/org.sonatype.nexus.rest.model.NexusArtifact/groupId",
doc);
final String artifactId = xpath.evaluate(
"/org.sonatype.nexus.rest.model.NexusArtifact/artifactId",
doc);
final String version = xpath
.evaluate(
"/org.sonatype.nexus.rest.model.NexusArtifact/version",
doc);
final String link = xpath
.evaluate(
"/org.sonatype.nexus.rest.model.NexusArtifact/artifactLink",
doc);
return new MavenArtifact(groupId, artifactId, version, link);
} catch (Throwable e) {
// Anything else is jacked-up XML stuff that we really can't recover
// from well
throw new IOException(e.getMessage(), e);
}
} else if (conn.getResponseCode() == 404) {
throw new FileNotFoundException("Artifact not found in Nexus");
} else {
final String msg = String.format("Could not connect to Nexus received response code: %d %s",
conn.getResponseCode(), conn.getResponseMessage());
LOGGER.fine(msg);
throw new IOException(msg);
}
}
/**
* Do a preflight request to see if the repository is actually working.
*
* @return whether the repository is listening and returns the /status URL correctly
*/
public boolean preflightRequest() {
try {
final HttpURLConnection conn = URLConnectionFactory.createHttpURLConnection(new URL(rootURL, "status"), useProxy);
conn.addRequestProperty("Accept", "application/xml");
conn.connect();
if (conn.getResponseCode() != 200) {
LOGGER.log(Level.WARNING, "Expected 200 result from Nexus, got {0}", conn.getResponseCode());
return false;
}
final DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
final Document doc = builder.parse(conn.getInputStream());
if (!"status".equals(doc.getDocumentElement().getNodeName())) {
LOGGER.log(Level.WARNING, "Expected root node name of status, got {0}", doc.getDocumentElement().getNodeName());
return false;
}
} catch (Throwable e) {
return false;
}
return true;
}
}
// vim: cc=120:sw=4:ts=4:sts=4

View File

@@ -0,0 +1,14 @@
/**
* <html>
* <head>
* <title>org.owasp.dependencycheck.data.nexus</title>
* </head>
* <body>
* <p>
* Contains classes related to searching a Nexus repository.</p>
* <p>
* These are used to abstract Nexus searching away from OWASP Dependency Check so they can be reused elsewhere.</p>
* </body>
* </html>
*/
package org.owasp.dependencycheck.data.nexus;

View File

@@ -0,0 +1,186 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2014 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data.nuget;
/**
* Represents the contents of a Nuspec manifest.
*
* @author colezlaw
*/
public class NugetPackage {
/**
* The id.
*/
private String id;
/**
* The version.
*/
private String version;
/**
* The title.
*/
private String title;
/**
* The authors.
*/
private String authors;
/**
* The owners.
*/
private String owners;
/**
* The licenseUrl.
*/
private String licenseUrl;
/**
* Creates an empty NugetPackage.
*/
public NugetPackage() {
}
/**
* Sets the id.
* @param id the id
*/
public void setId(String id) {
this.id = id;
}
/**
* Gets the id.
* @return the id
*/
public String getId() {
return id;
}
/**
* Sets the version.
* @param version the version
*/
public void setVersion(String version) {
this.version = version;
}
/**
* Gets the version.
* @return the version
*/
public String getVersion() {
return version;
}
/**
* Sets the title.
* @param title the title
*/
public void setTitle(String title) {
this.title = title;
}
/**
* Gets the title.
* @return the title
*/
public String getTitle() {
return title;
}
/**
* Sets the authors.
* @param authors the authors
*/
public void setAuthors(String authors) {
this.authors = authors;
}
/**
* Gets the authors.
* @return the authors
*/
public String getAuthors() {
return authors;
}
/**
* Sets the owners.
* @param owners the owners
*/
public void setOwners(String owners) {
this.owners = owners;
}
/**
* Gets the owners.
* @return the owners
*/
public String getOwners() {
return owners;
}
/**
* Sets the licenseUrl.
* @param licenseUrl the licenseUrl
*/
public void setLicenseUrl(String licenseUrl) {
this.licenseUrl = licenseUrl;
}
/**
* Gets the licenseUrl.
* @return the licenseUrl
*/
public String getLicenseUrl() {
return licenseUrl;
}
@Override
public boolean equals(Object other) {
if (this == other) {
return true;
}
if (other == null || other.getClass() != this.getClass()) {
return false;
}
final NugetPackage o = (NugetPackage) other;
return o.getId().equals(id)
&& o.getVersion().equals(version)
&& o.getTitle().equals(title)
&& o.getAuthors().equals(authors)
&& o.getOwners().equals(owners)
&& o.getLicenseUrl().equals(licenseUrl);
}
@Override
public int hashCode() {
int hash = 7;
hash = 31 * hash + (null == id ? 0 : id.hashCode());
hash = 31 * hash + (null == version ? 0 : version.hashCode());
hash = 31 * hash + (null == title ? 0 : title.hashCode());
hash = 31 * hash + (null == authors ? 0 : authors.hashCode());
hash = 31 * hash + (null == owners ? 0 : owners.hashCode());
hash = 31 * hash + (null == licenseUrl ? 0 : licenseUrl.hashCode());
return hash;
}
}

View File

@@ -0,0 +1,67 @@
/*
* This file is part of dependency-check-core.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) 2014 Jeremy Long. All Rights Reserved.
*/
package org.owasp.dependencycheck.data.nuget;
/**
* Exception during the parsing of a Nuspec file.
*
* @author colezlaw
*/
public class NuspecParseException extends Exception {
/**
* The serialVersionUID
*/
private static final long serialVersionUID = 1;
/**
* Constructs a new exception with <code>null</code> as its detail message.
*
* The cause is not initialized, and may subsequently be initialized by a call to
* {@link java.lang.Throwable#initCause(java.lang.Throwable)}.
*/
public NuspecParseException() {
super();
}
/**
* Constructs a new exception with the specified detail message. The cause is not initialized, and may subsequently
* be initialized by a call to {@link java.lang.Throwable#initCause(java.lang.Throwable)}.
*
* @param message the detail message. The detail message is saved for later retrieval by the
* {@link java.lang.Throwable#getMessage()} method.
*/
public NuspecParseException(String message) {
super(message);
}
/**
* Constructs a new exception with the specified detail message and cause.
*
* Note that the detail message associated with <code>cause</code> is <em>not</em>
* automatically incorporated in this exception's detail message.
*
* @param message the detail message (which is saved for later retrieval by the
* {@link java.lang.Throwable#getMessage()} method.
* @param cause the cause (which is saved for later retrieval by the {@link java.lang.Throwable#getCause()} method).
* (A <code>null</code> value is permitted, and indicates that the cause is nonexistent or unknown).
*/
public NuspecParseException(String message, Throwable cause) {
super(message, cause);
}
}

Some files were not shown because too many files have changed in this diff Show More