veracode 1.0.0.alpha10 → 1.0.0.alpha17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9d4c42c7f7bb1f062f0a4bd9b9fb0ccbde47bd47
4
- data.tar.gz: 3f265d90ae401b96eeb16b922eb0b362a547d52c
2
+ SHA256:
3
+ metadata.gz: e5cb7c4ca35c0ba950a80cd3128abe49464b68357d59528a09af7e17998bf2d9
4
+ data.tar.gz: fea0072496133717cc1f109cfe987eee7ee6099443c6032efd594c823338353f
5
5
  SHA512:
6
- metadata.gz: a6fc4d6e61099492949241b59e6ff73d268656f97ae01c890331afe78a16758a67fcb7c190cd745ee80e123e92e86ea7f66e5345e1e5fe8175a7d1714c272c73
7
- data.tar.gz: 4de1b27795a483f2fee83076ea038f43d082cef21bfdb6acfbf772026864c429a8d3e5e895914b75e5543184eb77ed553c11084d0ee797b9b86cff8006e8a31a
6
+ metadata.gz: 955ceacaea17f867fbbacbeb50607cdf71c4392474e71d73c5a3ba2c585139fef63ea6b73cc1fd6713a078e76c2855465f65a9a567d066a654989a3fdac9caf7
7
+ data.tar.gz: 0700d727fe2b5a19ebec8ba118e6d4438473e3234ffbd3fa26520f7cce054fd9fd5cd5c20d1d09e550bbcb417708cccf1019ad24a784f3e6b59a8fbea30de1a9
data/bin/veracode CHANGED
@@ -23,8 +23,13 @@ require 'veracode/version'
23
23
  $options = {
24
24
  :archive_source => true,
25
25
  :include_inherited => false,
26
- :jruby => false,
27
26
  :environment => false,
27
+ :verbose => false,
28
+ :jruby => false,
29
+ :skipactiverecord => false,
30
+ :skipactionview => false,
31
+ :skipsprockets => false,
32
+ :snapshot => false
28
33
  }
29
34
 
30
35
  subcommand = ARGV.shift
@@ -41,6 +46,18 @@ case subcommand
41
46
  $options[:jruby] = true
42
47
  end
43
48
 
49
+ opts.on("-O", "--skip-active-record", "Skip ActiveRecord") do
50
+ $options[:skipactiverecord] = true
51
+ end
52
+
53
+ opts.on("-V", "--skip-action-view", "Skip ActionView") do
54
+ $options[:skipactionview] = true
55
+ end
56
+
57
+ opts.on("-S", "--skip-sprockets", "Skip Sprockets") do
58
+ $options[:skipsprockets] = true
59
+ end
60
+
44
61
  # opts.on("--[no-]source", "[Don't] Include source code in archive") do |s|
45
62
  # $options[:archive_source] = s
46
63
  # end
@@ -49,6 +66,10 @@ case subcommand
49
66
  $DEBUG = true
50
67
  end
51
68
 
69
+ opts.on("--debug-snapshot", "Generate a snapshot of the prepare state for Veracode debugging.") do
70
+ $options[:snapshot] = true
71
+ end
72
+
52
73
  end.parse!
53
74
 
54
75
  Veracode.prepare
data/lib/veracode.rb CHANGED
@@ -202,7 +202,11 @@ module Veracode
202
202
  exit
203
203
  end
204
204
 
205
- puts "Please upload #{@archive_filename}"
205
+ if $options[:snapshot]
206
+ puts "Please provide #{@archive_filename} to veracode for further investigation."
207
+ else
208
+ puts "Please upload #{@archive_filename}"
209
+ end
206
210
  end
207
211
 
208
212
  def self.cleanup
@@ -419,20 +423,25 @@ module Veracode
419
423
  ##############################################################################
420
424
  # Archiving Headers
421
425
  def self.class_header(c)
422
- return "" unless c.is_a? Class
426
+ begin
427
+ return "" unless c.is_a? Class
423
428
 
424
- puts " class header" if $options[:verbose]
429
+ puts " class header" if $options[:verbose]
425
430
 
426
- case
427
- when c.superclass.nil? # this should only happen for BasicObject
431
+ case
432
+ when c.superclass.nil? # this should only happen for BasicObject
433
+ return ""
434
+ when c.superclass.name.nil? # in case the parent is anonymous
435
+ name = c.superclass.to_s.dump
436
+ else
437
+ name = c.superclass.name.dump
438
+ end
439
+
440
+ "superclass #{name}\n"
441
+ rescue Exception => e
442
+ log_error e.message
428
443
  return ""
429
- when c.superclass.name.nil? # in case the parent is anonymous
430
- name = c.superclass.to_s.dump
431
- else
432
- name = c.superclass.name.dump
433
444
  end
434
-
435
- "superclass #{name}\n"
436
445
  end
437
446
 
438
447
  def self.module_header(m)
@@ -440,14 +449,27 @@ module Veracode
440
449
 
441
450
  puts " module header" if $options[:verbose]
442
451
 
443
- ( m.included_modules.count > 0 ?
444
- m.included_modules.map {|m| "include #{m.inspect.dump}\n" }.join :
445
- ""
446
- ) +
447
- ( m.respond_to?(:singleton_class) && m.singleton_class.included_modules.count > 0 ?
448
- m.singleton_class.included_modules.map {|m| "extend #{m.inspect.dump}\n" }.join :
449
- ""
450
- )
452
+ formatted_contents = ""
453
+
454
+ begin
455
+ formatted_contents += ( m.included_modules.count > 0 ?
456
+ m.included_modules.map {|m| "include #{m.inspect.dump}\n" }.join :
457
+ ""
458
+ )
459
+ rescue Exception => e
460
+ log_error "Error archiving module header #{m.inspect.dump}: #{e.message}"
461
+ end
462
+
463
+ begin
464
+ formatted_contents += ( m.respond_to?(:singleton_class) && m.singleton_class.included_modules.count > 0 ?
465
+ m.singleton_class.included_modules.map {|m| "extend #{m.inspect.dump}\n" }.join :
466
+ ""
467
+ )
468
+ rescue Exception => e
469
+ log_error "Error archiving module header #{m.inspect.dump}: #{e.message}"
470
+ end
471
+
472
+ return formatted_contents
451
473
  end
452
474
 
453
475
 
@@ -496,51 +518,63 @@ module Veracode
496
518
  # m.respond_to?(:global_variables) was throwing exceptions
497
519
  end
498
520
 
499
- %w[ public protected private ].each {|p|
500
- get_methods = (p + "_instance_methods").to_sym
501
- if m.respond_to?(get_methods) && m.__send__(get_methods, $options[:include_inherited]).count > 0
502
- m.__send__(get_methods, $options[:include_inherited]).each do |m_symbol|
503
- begin
504
- method = m.instance_method(m_symbol)
505
- formatted_contents += format_method(method, "#{p.to_s}_instance", with_disasm)
506
- rescue Exception => e
507
- log_error "Error archiving #{p.to_s} instance method #{m_symbol.to_s.dump}: #{e.message}"
521
+ begin
522
+ %w[ public protected private ].each {|p|
523
+ get_methods = (p + "_instance_methods").to_sym
524
+ if m.respond_to?(get_methods) && m.__send__(get_methods, $options[:include_inherited]).count > 0
525
+ m.__send__(get_methods, $options[:include_inherited]).each do |m_symbol|
526
+ begin
527
+ method = m.instance_method(m_symbol)
528
+ formatted_contents += format_method(method, "#{p.to_s}_instance", with_disasm)
529
+ rescue Exception => e
530
+ log_error "Error archiving #{p.to_s} instance method #{m_symbol.to_s.dump}: #{e.message}"
531
+ end
508
532
  end
509
533
  end
510
- end
511
- }
534
+ }
535
+ rescue Exception => e
536
+ # m.respond_to?(get_methods)
537
+ end
512
538
 
513
539
  formatted_contents
514
540
  end
515
541
 
516
542
  def self.object_contents(o, with_disasm=true)
517
- return "" unless o.is_a? Object
543
+ return "" unless !o.nil? && o.is_a?(Object)
518
544
 
519
545
  puts " object contents" if $options[:verbose]
520
546
 
521
547
  formatted_contents = ""
522
-
523
- if o.respond_to?(:instance_variables) && o.instance_variables.count > 0
524
- o.instance_variables.each do |v_symbol|
525
- begin
526
- v = o.instance_variable_get(v_symbol)
527
- formatted_contents += format_variable(v_symbol, v, "instance")
528
- rescue Exception => e
529
- log_error "Error archiving instance variable #{v_symbol.to_s.dump}: #{e.message}"
530
- formatted_contents += format_variable(v_symbol, :veracode_nil, "instance")
548
+
549
+ begin
550
+ if o.respond_to?(:instance_variables) && o.instance_variables.count > 0
551
+ o.instance_variables.each do |v_symbol|
552
+ begin
553
+ v = o.instance_variable_get(v_symbol)
554
+ formatted_contents += format_variable(v_symbol, v, "instance")
555
+ rescue Exception => e
556
+ log_error "Error archiving instance variable #{v_symbol.to_s.dump}: #{e.message}"
557
+ formatted_contents += format_variable(v_symbol, :veracode_nil, "instance")
558
+ end
531
559
  end
532
560
  end
561
+ rescue Exception => e
562
+ log_error "Error getting :instance_variables for object #{o}: #{e.message}"
533
563
  end
534
564
 
535
- if o.respond_to?(:singleton_methods) && o.singleton_methods($options[:include_inherited]).count > 0
536
- o.singleton_methods($options[:include_inherited]).each do |m_symbol|
537
- begin
538
- m = o.method(m_symbol)
539
- formatted_contents += format_method(m, "singleton", with_disasm)
540
- rescue Exception => e
541
- log_error "Error archiving singleton method #{m_symbol.to_s.dump}: #{e.message}"
565
+ begin
566
+ if o.respond_to?(:singleton_methods) && o.singleton_methods($options[:include_inherited]).count > 0
567
+ o.singleton_methods($options[:include_inherited]).each do |m_symbol|
568
+ begin
569
+ m = o.method(m_symbol)
570
+ formatted_contents += format_method(m, "singleton", with_disasm)
571
+ rescue Exception => e
572
+ log_error "Error archiving singleton method #{m_symbol.to_s.dump}: #{e.message}"
573
+ end
542
574
  end
543
575
  end
576
+ rescue Exception => e
577
+ log_error "Error getting :singleton_methods for object #{o}: #{e.message}"
544
578
  end
545
579
 
546
580
  formatted_contents
@@ -550,13 +584,12 @@ module Veracode
550
584
  ##############################################################################
551
585
  # Archiving Objects
552
586
  def self.archive(objects, with_disasm=true)
553
-
554
587
  objects = objects - [
555
- Veracode,
556
- Veracode::ActiveRecord,
557
- Veracode::ActiveRecord::Model,
558
- Veracode::ActiveRecord::Schema,
559
- ]
588
+ Veracode,
589
+ Veracode::ActiveRecord,
590
+ Veracode::ActiveRecord::Model,
591
+ Veracode::ActiveRecord::Schema,
592
+ ]
560
593
 
561
594
  if $options[:verbose]
562
595
  puts "Archiving #{objects.count.to_s} objects" + (with_disasm ? " with disassembly" : "")
@@ -565,20 +598,16 @@ module Veracode
565
598
 
566
599
  objects.sort_by {|o| safe_name(o) }.each do |o|
567
600
 
568
- puts "archiving #{o.class.to_s.downcase} #{quote(safe_name(o))}" if $options[:verbose]
569
-
570
- add_to_archive "#{o.class.to_s.downcase} #{quote(safe_name(o))}\n" +
571
-
572
- ( o.is_a?(Class) ? class_header(o) : "") + # superclass
573
- ( o.is_a?(Module) ? module_header(o) : "") + # included modules
601
+ puts "archiving #{o.class.to_s.downcase} #{quote(safe_name(o))}" if $options[:verbose]
574
602
 
575
- ( o.is_a?(Object) ? object_contents(o, with_disasm) : "") +
576
- ( o.is_a?(Module) ? module_contents(o, with_disasm) : "") +
577
-
578
- "end#{o.class.to_s.downcase}\n" +
579
- "\n"
603
+ add_to_archive "#{o.class.to_s.downcase} #{quote(safe_name(o))}\n" +
604
+ ( o.is_a?(Class) ? class_header(o) : "") + # superclass
605
+ ( o.is_a?(Module) ? module_header(o) : "") + # included modules
606
+ ( (o.is_a?(Object) && !o.nil?) ? object_contents(o, with_disasm) : "") +
607
+ ( o.is_a?(Module) ? module_contents(o, with_disasm) : "") +
608
+ "end#{o.class.to_s.downcase}\n" +
609
+ "\n"
580
610
  end
581
-
582
611
  end
583
612
 
584
613
 
@@ -626,7 +655,11 @@ module Veracode
626
655
 
627
656
  assigns = {}
628
657
  view = ActionView::Base.new(view_paths, assigns)
629
- controller_view = ApplicationController.new.view_context
658
+ begin
659
+
660
+ rescue Exception => e
661
+ log_error "Unable to get controller view context (#{e.message})"
662
+ end
630
663
 
631
664
  templates.each { |template|
632
665
  puts "Compiling template #{template}" if $options[:verbose]
@@ -845,7 +878,17 @@ end
845
878
 
846
879
  puts "Phase 2 - Load Rails" if $options[:verbose]
847
880
  begin
848
- require "rails/all"
881
+ if $options[:skipactiverecord] || $options[:skipactionview] || $options[:skipsprockets]
882
+ require "active_model/railtie"
883
+ require "active_record/railtie" unless $options[:skipactiverecord]
884
+ require "action_controller/railtie"
885
+ require "action_mailer/railtie"
886
+ require "action_view/railtie" unless $options[:skipactionview]
887
+ require "sprockets/railtie" unless $options[:skipsprockets]
888
+ require "rails/test_unit/railtie"
889
+ else
890
+ require "rails/all"
891
+ end
849
892
  rescue Exception => e
850
893
  puts "Unable to require rails: #{e.message}"
851
894
  log_error "Unable to require rails: #{e.message}"
@@ -856,9 +899,9 @@ end
856
899
 
857
900
  ## Imitate script/rails
858
901
  # APP_PATH = File.expand_path('config/application')
859
- # APP_PATH is already set in bin/veracode
902
+ # APP_PATH is already set in bin/veracode
860
903
  #require File.expand_path('../../config/boot', __FILE__)
861
- glob_require "config/boot.rb"
904
+ glob_require "config/boot.rb"
862
905
  #require 'rails/commands'
863
906
  # this will trigger the console to be launched
864
907
  # ARGV.clear
@@ -867,7 +910,16 @@ end
867
910
  # require 'rails/commands'
868
911
 
869
912
  ## Imitate rails/commands when console
870
- cond_require 'rails/commands/console.rb'
913
+ if Gem::Version.new(Rails.version) >= Gem::Version.new("5.1.0")
914
+ cond_require 'rails/command.rb'
915
+ cond_require 'rails/command/actions.rb'
916
+ cond_require 'rails/command/base.rb'
917
+ cond_require 'rails/command/behavior.rb'
918
+ cond_require 'rails/command/environment_argument.rb'
919
+ cond_require 'rails/commands/console/console_command.rb'
920
+ else
921
+ cond_require 'rails/commands/console.rb'
922
+ end
871
923
  # require APP_PATH # => config/application.rb
872
924
 
873
925
  glob_require "config/application.rb"
@@ -903,35 +955,46 @@ end
903
955
 
904
956
  puts "Phase 3 - Imitate Rails" if $options[:verbose]
905
957
 
906
- any_new = true
907
- while any_new
908
- any_new = false
909
- any_new |= glob_require "lib/**/*.rb"
910
- any_new |= glob_require "app/**/*.rb"
911
- puts "new successful requires? #{any_new.to_s}" if $options[:verbose]
912
- end
958
+ begin
959
+ any_new = true
960
+ while any_new
961
+ any_new = false
962
+ any_new |= glob_require "lib/**/*.rb"
963
+ any_new |= glob_require "app/**/*.rb"
964
+ puts "new successful requires? #{any_new.to_s}" if $options[:verbose]
965
+ end
913
966
 
914
- compile_templates
967
+ compile_templates
915
968
 
916
- self.update
917
- self.stats if $options[:verbose]
969
+ self.update
970
+ self.stats if $options[:verbose]
918
971
 
919
- # Ensure compiled templates are fully disassembled in archive
920
- @baseline_modules.delete(ActionView::CompiledTemplates)
972
+ # Ensure compiled templates are fully disassembled in archive
973
+ @baseline_modules.delete(ActionView::CompiledTemplates)
921
974
 
922
- if $options[:environment]
923
- puts "Processing and disassembling environment"
924
- archive(@modules.reject {|o| safe_name(o) =~ /^#<(Class|Module):0x[0-9a-f]+>/i }
925
- .reject {|o| safe_name(o) =~ /^Veracode/ }
926
- .reject {|o| safe_name(o) =~ /^EmptyRails/ }
927
- .reject {|o| safe_name(o) =~ /^ActionView::CompiledTemplates$/ }, false)
928
- else
929
- puts "Processing Ruby and Rails classes and modules"
930
- archive(@baseline_modules, false)
931
- add_to_archive "\n# Phase 3 - App disassembly\n"
932
- puts "Processing and disassembling #{APP_NAME} classes and modules"
933
- archive(@modules - @baseline_modules, true)
934
- archive_schema
975
+ if $options[:environment]
976
+ puts "Processing and disassembling environment"
977
+ archive(@modules.reject {|o| safe_name(o) =~ /^#<(Class|Module):0x[0-9a-f]+>/i }
978
+ .reject {|o| safe_name(o) =~ /^Veracode/ }
979
+ .reject {|o| safe_name(o) =~ /^EmptyRails/ }
980
+ .reject {|o| safe_name(o) =~ /^ActionView::CompiledTemplates$/ }, false)
981
+ else
982
+ puts "Processing Ruby and Rails classes and modules"
983
+ archive(@baseline_modules, false)
984
+ add_to_archive "\n# Phase 3 - App disassembly\n"
985
+ puts "Processing and disassembling #{APP_NAME} classes and modules"
986
+ archive(@modules - @baseline_modules, true)
987
+ archive_schema
988
+
989
+ end
990
+
991
+ rescue Exception => e
992
+ if $options[:snapshot]
993
+ log_error e.message
994
+ log_error e.backtrace.join("\n")
995
+ else
996
+ raise
997
+ end
935
998
  end
936
999
 
937
1000
  ## /phase 3 - require app
@@ -1,4 +1,4 @@
1
1
  module Veracode
2
- VERSION = '1.0.0.alpha10'
2
+ VERSION = '1.0.0.alpha17'
3
3
  ARCHIVE_VERSION = '2012-07-04'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: veracode
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha10
4
+ version: 1.0.0.alpha17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Veracode
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-08 00:00:00.000000000 Z
11
+ date: 2019-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -55,10 +55,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
55
55
  version: 1.3.1
56
56
  requirements: []
57
57
  rubyforge_project:
58
- rubygems_version: 2.6.11
58
+ rubygems_version: 2.7.8
59
59
  signing_key:
60
60
  specification_version: 4
61
61
  summary: Command line tool for preparing your Ruby on Rails app for submission to
62
62
  Veracode
63
63
  test_files: []
64
- has_rdoc: