On 22/11/2007, Scott McKellar <[EMAIL PROTECTED]> wrote: > > --- Dan Scott <[EMAIL PROTECTED]> wrote: > > > I was pondering a few possibilities for helping to tighten up our > > code > > in a more automated fashion today. I thought I would throw the ideas > > out there to see if there's interest or support for them... > > <snip: info about code-scanning tools> > > Mod parent up. > > I have stumbled across various problems (security vulnerabilities, > memory leaks, etc.) in the course of doing other things, but I > haven't been looking for them systematically. I've probably > overlooked more than I've found, even if you don't count the code > that I haven't looked at yet. No doubt the automated tools can find > more stuff faster. It's the difference between working with a pick > and shovel and working with a backhoe. > > Don't forget good old lint. I haven't used it yet on this project > because I've been finding enough to keep me busy with the pick-and- > shovel approach. However my experience is that lint usually finds > at least a few forehead-slappers. > > My one reservation is about the idea of posting the results on the > web. The point is not that I don't want to air our dirty linens > in public -- it's all open source, after all -- but I wouldn't want > to erect needless barriers to the code scans. If it takes ten > minutes to run the scans, and three hours to update the website, then > we probably won't run the scans as often as we should. I'd rather > have more scans than prettier web pages. > > Hence I suggest that any publication of the scan results involve > minimal work, because the reporting is rudimentary, automated, > or both. > > I note that Coverity's website already publishes defect counts on the > projects it covers.
Hi Scott: I wouldn't propose something that would take a lot of work - I'm lazy that way :) For tools like rats and Perl::Critic, we could simply run the tools over the entire tree of OpenSRF and Evergreen, pipe the output into a file, and post the file to the Web site. If we had an automated build machine, we could make that a standard part of each build. This is also where we would store the results of automated regression test runs, if we, well, had regression tests :) A moderately sophisticated approach would diff the output between builds and flag new warnings, to focus attention on regressions or new code that had been introduced. A more sophisticated approach would shove each possible violation into a database row, then let human eyes determine whether the warning was valid or not; if not, then a brief rationale could be entered and the warning could automatically be ignored in future runs (with some degree of fuzziness for line number drift) and future developers would be able to find a record of why that particular "violation" is actually quite intentional and necessary. But I would be happy with just the least sophisticated approach. The hard part is where things like Perl::Critic flag coding practices that verge towards style, e.g. coming down hard on the use of unless() and postfix conditionals ($foo = $bar unless $bar = 0; and the like). If there is violent disagreement with cleaning up these "moderately severe" violations, we can always just turn that particular rule off in our profile. Perl::Critic also provides nice summary statistics. Here's an example of the summary for Evergreen trunk, with only the most severe violations flagged: 190 files. 1,558 subroutines/methods. 43,568 statements. 55,421 lines of code. Average McCabe score of subroutines was 4.37. 537 violations. Violations per line of code was 0.010. 537 severity 5 violations. 21 violations of BuiltinFunctions::ProhibitStringyEval. 48 violations of InputOutput::ProhibitBarewordFileHandles. 47 violations of InputOutput::ProhibitTwoArgOpen. 12 violations of Modules::RequireBarewordIncludes. 6 violations of Modules::RequireFilenameMatchesPackage. 314 violations of Subroutines::ProhibitExplicitReturnUndef. 1 violations of Subroutines::ProhibitSubroutinePrototypes. 7 violations of TestingAndDebugging::ProhibitNoStrict. 47 violations of TestingAndDebugging::RequireUseStrict. 1 violations of ValuesAndExpressions::ProhibitLeadingZeros. 30 violations of Variables::ProhibitConditionalDeclarations. 3 violations of Variables::RequireLexicalLoopIterators. (I know you're not a Perl hacker, but for those Perl hackers reading this who haven't been exposed to Perl::Critic, more info on the particular violations and the rationale for why they are violations can be found for each violation at http://search.cpan.org/dist/Perl-Critic/ and in even greater depth in Damian Conway's "Perl Best Practices"). I have attached the RATS output in HTML format for the Evergreen tree as well, for anyone interested in what it has to say. -- Dan Scott Laurentian UniversityEntries in perl database: 33
Entries in python database: 62
Entries in c database: 334
Entries in php database: 55
Analyzing ./Evergreen/conf/load_ips.pl
Analyzing ./Evergreen/src/support-scripts/eg_gen_overdue.pl
Analyzing ./Evergreen/src/perlmods/Evergreen/Application/Search/AddedContent/ContentCafe.pm
Analyzing ./Evergreen/src/extras/import/create-batgirl-keyfile.pl
Analyzing ./Evergreen/src/extras/import/drain-batgirl-charge.pl
Analyzing ./Evergreen/src/extras/import/lib_spliter.pl
Analyzing ./Evergreen/src/extras/import/drain-batgirl-intransit.pl
Analyzing ./Evergreen/src/extras/import/drain-batgirl-item.pl
Analyzing ./Evergreen/src/extras/import/parse_patron_xml.pl
Analyzing ./Evergreen/src/extras/import/drain-batgirl-cn.pl
Analyzing ./Evergreen/src/extras/import/pre_cat_items.pl
Analyzing ./Evergreen/src/extras/import/import_clean_marc.pl
Analyzing ./Evergreen/src/extras/import/libfixup.pl
Analyzing ./Evergreen/src/extras/import/import_holdings.pl
Analyzing ./Evergreen/src/extras/import/import_legacy_closings.pl
Analyzing ./Evergreen/src/extras/import/recirc_user_loader.pl
Analyzing ./Evergreen/src/extras/import/drain-batgirl-email.pl
Analyzing ./Evergreen/src/extras/import/import_legacy_hoo.pl
Analyzing ./Evergreen/src/extras/import/user_import.pl
Analyzing ./Evergreen/src/extras/import/barcode_lookup_loader.pl
Analyzing ./Evergreen/src/extras/import/object_dumper.pl
Analyzing ./Evergreen/src/extras/import/import_authority.pl
Analyzing ./Evergreen/src/extras/import/piece_count_loader.pl
Analyzing ./Evergreen/src/extras/import/non-real_user_loader.pl
Analyzing ./Evergreen/src/extras/import/create-batgirl-usermap.pl
Analyzing ./Evergreen/src/extras/import/drain-batgirl-bill.pl
Analyzing ./Evergreen/src/extras/import/drain-batgirl-hold.pl
Analyzing ./Evergreen/src/extras/import/renewal_subtract.pl
Analyzing ./Open-ILS/src/python/oils/utils/csedit.py
Analyzing ./Open-ILS/src/python/oils/utils/idl.py
Analyzing ./Open-ILS/src/python/oils/utils/__init__.py
Analyzing ./Open-ILS/src/python/oils/utils/utils.py
Analyzing ./Open-ILS/src/python/oils/__init__.py
Analyzing ./Open-ILS/src/python/oils/system.py
Analyzing ./Open-ILS/src/python/oils/const.py
Analyzing ./Open-ILS/src/support-scripts/test-scripts/in_house_use.pl
Analyzing ./Open-ILS/src/support-scripts/test-scripts/checkout.pl
Analyzing ./Open-ILS/src/support-scripts/test-scripts/copy_locations.pl
Analyzing ./Open-ILS/src/support-scripts/test-scripts/notes.pl
Analyzing ./Open-ILS/src/support-scripts/test-scripts/simple.pl
Analyzing ./Open-ILS/src/support-scripts/test-scripts/circ_rules.pl
Analyzing ./Open-ILS/src/support-scripts/test-scripts/collections.pl
Analyzing ./Open-ILS/src/support-scripts/test-scripts/circ_load.pl
Analyzing ./Open-ILS/src/support-scripts/test-scripts/container.pl
Analyzing ./Open-ILS/src/support-scripts/test-scripts/copy_notes.pl
Analyzing ./Open-ILS/src/support-scripts/test-scripts/offline.pl
Analyzing ./Open-ILS/src/support-scripts/oils_header.pl
Analyzing ./Open-ILS/src/support-scripts/ac_ctl.pl
Analyzing ./Open-ILS/src/support-scripts/fine_generator.pl
Analyzing ./Open-ILS/src/support-scripts/make-mods.pl
Analyzing ./Open-ILS/src/support-scripts/long-overdue-status-update.pl
Analyzing ./Open-ILS/src/support-scripts/offline-blocked-list.pl
Analyzing ./Open-ILS/src/support-scripts/hold_targeter.pl
Analyzing ./Open-ILS/src/support-scripts/settings-tester.pl
Analyzing ./Open-ILS/src/offline/offline-config.pl
Analyzing ./Open-ILS/src/offline/offline.pl
Analyzing ./Open-ILS/src/reporter/clark-kent.pl
Analyzing ./Open-ILS/src/c-apps/oils_idl-core.c
Analyzing ./Open-ILS/src/c-apps/oils_fetch.c
Analyzing ./Open-ILS/src/c-apps/oils_cstore.c
Analyzing ./Open-ILS/src/c-apps/oils_dataloader.c
Analyzing ./Open-ILS/src/c-apps/oils_utils.c
Analyzing ./Open-ILS/src/c-apps/oils_auth.c
Analyzing ./Open-ILS/src/c-apps/oils_event.c
Analyzing ./Open-ILS/src/apachemods/mod_xmlbuilder.c
Analyzing ./Open-ILS/src/apachemods/mod_xmlent.c
Analyzing ./Open-ILS/src/apachemods/fieldmapper_lookup-gen.pl
Analyzing ./Open-ILS/src/apachemods/json_xml.c
Analyzing ./Open-ILS/src/apachemods/mod_rest_gateway.c
Analyzing ./Open-ILS/src/perlmods/OpenILS/Utils/CStoreEditor.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Utils/Editor.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Utils/FlatXML.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Utils/PermitHold.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Utils/Fieldmapper.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Utils/ZClient.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Utils/SpiderMonkey.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Utils/ScriptRunner.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Utils/ModsParser.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Utils/OfflineStore.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Reporter/Proxy.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Circ/CopyLocations.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Circ/Transit.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Circ/Money.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Circ/Survey.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Circ/HoldNotify.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Circ/NonCat.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Circ/StatCat.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/permission.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/config.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/money.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/actor.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/authority.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/action.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/asset.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/biblio.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/container.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/metabib.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg/storage.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg/fts.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg/dbi.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg/cdbi.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/permission.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/config.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/money.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/actor.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/authority.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/action.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/asset.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/biblio.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/container.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/FTS.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Search/Authority.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Search/Zips.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Search/Z3950.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Search/AddedContent.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Search/CNBrowse.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Cat/Merge.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Cat/Utils.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Actor/ClosedDates.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Actor/UserGroups.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Actor/Container.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Collections.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Storage.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Search.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Cat.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Actor.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Penalty.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/SuperCat.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Circ.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Proxy.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Ingest.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Auth.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/AppUtils.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/Reporter/transforms.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat/Feed.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/AddedContent/Syndetic.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/AddedContent/Amazon.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/XMLRPCGateway.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/AddedContent.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/Exporter.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/Method.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/Web.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/Redirect.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/Reporter.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/WWW/Proxy.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/SIP/Transaction/Checkin.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/SIP/Transaction/Checkout.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/SIP/Transaction/Renew.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/SIP/Transaction.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/SIP/Msg.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/SIP/Item.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/SIP/Patron.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Template/Plugin/WebSession.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Template/Plugin/Unicode.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Template/Plugin/WebUtils.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Const.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/SIP.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Event.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Perm.pm
Analyzing ./Open-ILS/src/perlmods/OpenILS/Application.pm
Analyzing ./Open-ILS/src/extras/marcdumper/marcdumper.c
Analyzing ./Open-ILS/src/extras/import/marc2are.pl
Analyzing ./Open-ILS/src/extras/import/pg_loader.pl
Analyzing ./Open-ILS/src/extras/import/generate-srfsh-indexer.pl
Analyzing ./Open-ILS/src/extras/import/marc2bre.pl
Analyzing ./Open-ILS/src/extras/import/marcFilterDump.pl
Analyzing ./Open-ILS/src/extras/import/direct_loader.pl
Analyzing ./Open-ILS/src/extras/import/direct_ingest.pl
Analyzing ./Open-ILS/src/extras/import/update_marc.pl
Analyzing ./Open-ILS/src/extras/import/parallel_pg_loader.pl
Analyzing ./Open-ILS/src/extras/org_tree_html_options.pl
Analyzing ./Open-ILS/src/extras/fieldmapper_IDL.pl
Analyzing ./Open-ILS/src/extras/Perl2REST.pl
Analyzing ./Open-ILS/src/extras/oils_requestor.c
Analyzing ./Open-ILS/src/extras/opensearch.pm
Analyzing ./Open-ILS/src/extras/fieldmapper.pl
Analyzing ./Open-ILS/src/extras/Evergreen.py
Analyzing ./Open-ILS/src/extras/org_tree_js.pl
Analyzing ./Open-ILS/src/cgi-bin/setup.pl
Analyzing ./Open-ILS/admin/ils_admin/setup/ils_data/__init__.py
Analyzing ./Open-ILS/admin/ils_admin/setup/ils_data/models.py
Analyzing ./Open-ILS/admin/ils_admin/setup/__init__.py
Analyzing ./Open-ILS/admin/ils_admin/setup/views.py
Analyzing ./Open-ILS/admin/ils_admin/manage.py
Analyzing ./Open-ILS/admin/ils_admin/__init__.py
Analyzing ./Open-ILS/admin/ils_admin/urls.py
Analyzing ./Open-ILS/xul/staff_client/external/dtd2js.pl
RATS results.
Severity: High
Issue: connect
The second argument specifiying the packed address to bind to, should not be derived from user input. If the address is derived from user input, it is possible for a malicious user to cause the socket to connect to an arbitrary remote address, enabling hijacking of potentially sensitive network data.
-
File: ./Evergreen/src/extras/import/create-batgirl-keyfile.pl Line:6
-
File: ./Evergreen/src/extras/import/drain-batgirl-charge.pl Line:6
-
File: ./Evergreen/src/extras/import/lib_spliter.pl Line:26
-
File: ./Evergreen/src/extras/import/drain-batgirl-intransit.pl Line:6
-
File: ./Evergreen/src/extras/import/drain-batgirl-item.pl Line:6
-
File: ./Evergreen/src/extras/import/drain-batgirl-cn.pl Line:6
-
File: ./Evergreen/src/extras/import/import_holdings.pl Line:73
-
File: ./Evergreen/src/extras/import/drain-batgirl-email.pl Line:6
-
File: ./Evergreen/src/extras/import/create-batgirl-usermap.pl Line:6
-
File: ./Evergreen/src/extras/import/drain-batgirl-bill.pl Line:6
-
File: ./Evergreen/src/extras/import/drain-batgirl-hold.pl Line:6
-
File: ./Open-ILS/src/support-scripts/offline-blocked-list.pl Line:59
-
File: ./Open-ILS/src/support-scripts/settings-tester.pl Line:202
-
File: ./Open-ILS/src/reporter/clark-kent.pl Line:87
File: ./Open-ILS/src/reporter/clark-kent.pl Line:156
-
File: ./Open-ILS/src/perlmods/OpenILS/Utils/OfflineStore.pm Line:26
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg.pm Line:67
File: ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg.pm Line:76
File: ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg.pm Line:100
File: ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg.pm Line:101
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/SuperCat.pm Line:748
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/Ingest.pm Line:123
File: ./Open-ILS/src/perlmods/OpenILS/Application/Ingest.pm Line:287
File: ./Open-ILS/src/perlmods/OpenILS/Application/Ingest.pm Line:312
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/AppUtils.pm Line:27
-
File: ./Open-ILS/src/extras/import/marc2bre.pl Line:75
Issue: fixed size global buffer
Extra care should be taken to ensure that character arrays that are allocated on the stack are used safely. They are prime targets for buffer overflow attacks.
-
File: ./Open-ILS/src/c-apps/oils_fetch.c Line:52
File: ./Open-ILS/src/c-apps/oils_fetch.c Line:130
File: ./Open-ILS/src/c-apps/oils_fetch.c Line:134
-
File: ./Open-ILS/src/c-apps/oils_cstore.c Line:2991
File: ./Open-ILS/src/c-apps/oils_cstore.c Line:3094
-
File: ./Open-ILS/src/c-apps/oils_utils.c Line:192
-
File: ./Open-ILS/src/c-apps/oils_event.c Line:88
-
File: ./Open-ILS/src/apachemods/mod_xmlbuilder.c Line:247
File: ./Open-ILS/src/apachemods/mod_xmlbuilder.c Line:302
File: ./Open-ILS/src/apachemods/mod_xmlbuilder.c Line:395
-
File: ./Open-ILS/src/apachemods/mod_xmlent.c Line:244
File: ./Open-ILS/src/apachemods/mod_xmlent.c Line:388
-
File: ./Open-ILS/src/apachemods/mod_rest_gateway.c Line:87
-
File: ./Open-ILS/src/extras/marcdumper/marcdumper.c Line:65
File: ./Open-ILS/src/extras/marcdumper/marcdumper.c Line:315
Issue: strcpy
Check to be sure that argument 2 passed to this function call will not copy more data than can be handled, resulting in a buffer overflow.
-
File: ./Open-ILS/src/apachemods/mod_xmlbuilder.c Line:249
-
File: ./Open-ILS/src/extras/marcdumper/marcdumper.c Line:336
Issue: strcat
Check to be sure that argument 2 passed to this function call will not copy more data than can be handled, resulting in a buffer overflow.
-
File: ./Open-ILS/src/apachemods/mod_xmlbuilder.c Line:255
Issue: strncat
Consider using strlcat() instead.
-
File: ./Open-ILS/src/apachemods/mod_xmlbuilder.c Line:304
Issue: strncat
Check to be sure that argument 1 passed to this function call will not copy more data than can be handled, resulting in a buffer overflow.
-
File: ./Open-ILS/src/apachemods/mod_xmlbuilder.c Line:304
Issue: eval
Using user supplied strings anywhere inside of an eval is extremely dangerous. Unvalidated user input fed into an eval call may allow the user to execute arbitrary perl code. Avoid ever passing user supplied strings into eval.
-
File: ./Open-ILS/src/perlmods/OpenILS/Utils/SpiderMonkey.pm Line:82
File: ./Open-ILS/src/perlmods/OpenILS/Utils/SpiderMonkey.pm Line:339
File: ./Open-ILS/src/perlmods/OpenILS/Utils/SpiderMonkey.pm Line:350
File: ./Open-ILS/src/perlmods/OpenILS/Utils/SpiderMonkey.pm Line:366
File: ./Open-ILS/src/perlmods/OpenILS/Utils/SpiderMonkey.pm Line:374
File: ./Open-ILS/src/perlmods/OpenILS/Utils/SpiderMonkey.pm Line:380
File: ./Open-ILS/src/perlmods/OpenILS/Utils/SpiderMonkey.pm Line:386
-
File: ./Open-ILS/src/perlmods/OpenILS/Utils/ScriptRunner.pm Line:169
File: ./Open-ILS/src/perlmods/OpenILS/Utils/ScriptRunner.pm Line:177
File: ./Open-ILS/src/perlmods/OpenILS/Utils/ScriptRunner.pm Line:537
File: ./Open-ILS/src/perlmods/OpenILS/Utils/ScriptRunner.pm Line:548
File: ./Open-ILS/src/perlmods/OpenILS/Utils/ScriptRunner.pm Line:564
File: ./Open-ILS/src/perlmods/OpenILS/Utils/ScriptRunner.pm Line:572
File: ./Open-ILS/src/perlmods/OpenILS/Utils/ScriptRunner.pm Line:578
File: ./Open-ILS/src/perlmods/OpenILS/Utils/ScriptRunner.pm Line:584
Issue: getopt
Truncate all input strings to a reasonable length before passing them to this function
-
File: ./Open-ILS/src/extras/oils_requestor.c Line:27
Issue: compile
Argument 1 to this function call should be checked to ensure that it does not come from an untrusted source without first verifying that it contains nothing dangerous.
-
File: ./Open-ILS/src/extras/Evergreen.py Line:50
Issue: open
The filename argument of open should be carefully checked if it is being created with any user-supplied string as a compontent of it. Strings should be checked for occurences of path backtracking/relative path components (../ as an example), or nulls, which may cause the underlying C call to interpret the filename to open differently than expected. It is also important to make sure that the final filename does not end in a "|", as this will cause the path to be executed.
-
File: ./Evergreen/conf/load_ips.pl Line:7
-
File: ./Evergreen/src/support-scripts/eg_gen_overdue.pl Line:46
-
File: ./Open-ILS/src/support-scripts/test-scripts/circ_load.pl Line:22
-
File: ./Open-ILS/src/support-scripts/fine_generator.pl Line:17
File: ./Open-ILS/src/support-scripts/fine_generator.pl Line:21
File: ./Open-ILS/src/support-scripts/fine_generator.pl Line:31
-
File: ./Open-ILS/src/support-scripts/hold_targeter.pl Line:19
-
File: ./Open-ILS/src/support-scripts/settings-tester.pl Line:275
File: ./Open-ILS/src/support-scripts/settings-tester.pl Line:280
-
File: ./Open-ILS/src/offline/offline.pl Line:216
File: ./Open-ILS/src/offline/offline.pl Line:417
File: ./Open-ILS/src/offline/offline.pl Line:498
-
File: ./Open-ILS/src/reporter/clark-kent.pl Line:78
File: ./Open-ILS/src/reporter/clark-kent.pl Line:535
File: ./Open-ILS/src/reporter/clark-kent.pl Line:659
File: ./Open-ILS/src/reporter/clark-kent.pl Line:763
-
File: ./Open-ILS/src/apachemods/fieldmapper_lookup-gen.pl Line:23
-
File: ./Open-ILS/src/perlmods/OpenILS/Utils/SpiderMonkey.pm Line:74
-
File: ./Open-ILS/src/perlmods/OpenILS/Utils/ScriptRunner.pm Line:153
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/Circ/HoldNotify.pm Line:303
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/Search/Zips.pm Line:27
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/Cat.pm Line:93
-
File: ./Open-ILS/src/perlmods/OpenILS/WWW/Redirect.pm Line:33
Issue: chdir
When using this function, it is important to be sure that the string being passed in does not contain relative path elements (../ for example), or a null, which may cause underlying C calls to behave in ways you do not expect. This is especially important if the string is in any way constructed from a user supplied value.
-
File: ./Open-ILS/src/support-scripts/settings-tester.pl Line:262
Issue: mkdir
When using this function, it is important to be sure that the string being passed in does not contain relative path elements (../ for example), or a null, which may cause underlying C calls to behave in ways you do not expect. This is especially important if the string is in any way constructed from a user supplied value.
-
File: ./Open-ILS/src/support-scripts/settings-tester.pl Line:266
-
File: ./Open-ILS/src/reporter/clark-kent.pl Line:192
File: ./Open-ILS/src/reporter/clark-kent.pl Line:193
File: ./Open-ILS/src/reporter/clark-kent.pl Line:194
File: ./Open-ILS/src/reporter/clark-kent.pl Line:195
Issue: system
When using system, it is important to be sure that the string being used does not contain relative path elements (../ for example), or a null, which may cause underlying C calls to behave strangely. It is also imperative to insure the string has no characters that may be interpreted by the shell, possibly allowing arbitrary commands to be run
-
File: ./Open-ILS/src/support-scripts/settings-tester.pl Line:269
File: ./Open-ILS/src/support-scripts/settings-tester.pl Line:272
File: ./Open-ILS/src/support-scripts/settings-tester.pl Line:285
File: ./Open-ILS/src/support-scripts/settings-tester.pl Line:288
Issue: rand
Standard random number generators should not be used to generate randomness used for security reasons. For security sensitive randomnes s a crytographic randomness generator that provides sufficient entropy should be used.
-
File: ./Open-ILS/src/offline/offline.pl Line:140
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm Line:438
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/Circ/Survey.pm Line:367
File: ./Open-ILS/src/perlmods/OpenILS/Application/Circ/Survey.pm Line:389
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg.pm Line:124
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/action.pm Line:1285
File: ./Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/action.pm Line:1299
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI.pm Line:267
-
File: ./Open-ILS/src/perlmods/OpenILS/Application/Auth.pm Line:103
File: ./Open-ILS/src/perlmods/OpenILS/Application/Auth.pm Line:184
-
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1061
Issue: getchar
Check buffer boundaries if calling this function in a loop and make sure you are not in danger of writing past the allocated space.
-
File: ./Open-ILS/src/c-apps/oils_dataloader.c Line:108
Issue: link
When using this function, it is important to be sure that the string being passed in does not contain relative path elements (../ for example), or a null, which may cause underlying C calls to behave in ways you do not expect. This is especially important if the string is in any way constructed from a user supplied value.
-
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:412
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:656
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:745
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:746
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:747
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:748
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:750
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:814
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:815
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:816
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:817
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:819
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1125
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1131
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1137
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1143
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1149
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1155
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1161
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1167
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1245
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1246
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1247
File: ./Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm Line:1248
Inputs detected at the following points
Total lines analyzed: 58932
Total time 2.894895 seconds
20357 lines per second
