veracode 1.0.0.alpha11 → 1.0.0.alpha18

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: 964f87e830e4ecd33cebac6f2bc0b38348096e13
4
- data.tar.gz: 44210d8588d2d63f26deb090f0f749f2b6427ce6
2
+ SHA256:
3
+ metadata.gz: e42ef047b5e2b3f33eba714c33d5c13aa393679e704633ac93df478b6697c811
4
+ data.tar.gz: 5adf88dcca009894d9f1631061750d108e9ec3ab77de5ac6083c95aeda5db4e6
5
5
  SHA512:
6
- metadata.gz: e9b6eb4539068b5c29309b922bf376f2df68592605c01ca789a05241763456e219e0dcb456746ceae24ff51e536d2b6e26b191764480d5cc1065eb1b642a6e14
7
- data.tar.gz: 7bfd6df0aa27556f5c83c9d3df6522f9fd458bde3bf55cc4e90cc01be1872ae6973b8f095a8b8a46c0236e4b471644f664e01a7b6746fa37dcb223474f6acd45
6
+ metadata.gz: afcf1ebbc31dfb94ade508fdf858f6815a088d66d40982f82e2f7c439929b3eb2c803b5d238cea1825f7ed5f60cb0d483caa4d85032542d60e91be970c9d2db2
7
+ data.tar.gz: 8dd0fa92c21625c40df171a9ee8d4f5a8dc4f37f53f8a1dd223f5fbd8e5aefc1d0279915ff368d24b228eef690b0cafb5407a85c1cbb743e17e5127b34830c15
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
@@ -61,6 +66,10 @@ case subcommand
61
66
  $DEBUG = true
62
67
  end
63
68
 
69
+ opts.on("--debug-snapshot", "Generate a snapshot of the prepare state for Veracode debugging.") do
70
+ $options[:snapshot] = true
71
+ end
72
+
64
73
  end.parse!
65
74
 
66
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
@@ -294,7 +298,8 @@ module Veracode
294
298
  begin
295
299
  ( o.nil? ? "nil" : o.to_s )
296
300
  rescue
297
- "nil"
301
+ log_error "Error testing #{o} with nil?. Probable monkey patching. #{e.message}"
302
+ ( o == nil ? "nil" : o.to_s ) # in case of monkey patched nil?
298
303
  end
299
304
  end
300
305
  when o.is_a?(Method), o.is_a?(UnboundMethod)
@@ -419,20 +424,25 @@ module Veracode
419
424
  ##############################################################################
420
425
  # Archiving Headers
421
426
  def self.class_header(c)
422
- return "" unless c.is_a? Class
427
+ begin
428
+ return "" unless c.is_a? Class
423
429
 
424
- puts " class header" if $options[:verbose]
430
+ puts " class header" if $options[:verbose]
425
431
 
426
- case
427
- when c.superclass.nil? # this should only happen for BasicObject
432
+ case
433
+ when c.superclass.nil? # this should only happen for BasicObject
434
+ return ""
435
+ when c.superclass.name.nil? # in case the parent is anonymous
436
+ name = c.superclass.to_s.dump
437
+ else
438
+ name = c.superclass.name.dump
439
+ end
440
+
441
+ "superclass #{name}\n"
442
+ rescue Exception => e
443
+ log_error e.message
428
444
  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
445
  end
434
-
435
- "superclass #{name}\n"
436
446
  end
437
447
 
438
448
  def self.module_header(m)
@@ -440,14 +450,27 @@ module Veracode
440
450
 
441
451
  puts " module header" if $options[:verbose]
442
452
 
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
- )
453
+ formatted_contents = ""
454
+
455
+ begin
456
+ formatted_contents += ( m.included_modules.count > 0 ?
457
+ m.included_modules.map {|m| "include #{m.inspect.dump}\n" }.join :
458
+ ""
459
+ )
460
+ rescue Exception => e
461
+ log_error "Error archiving module header #{m.inspect.dump}: #{e.message}"
462
+ end
463
+
464
+ begin
465
+ formatted_contents += ( m.respond_to?(:singleton_class) && m.singleton_class.included_modules.count > 0 ?
466
+ m.singleton_class.included_modules.map {|m| "extend #{m.inspect.dump}\n" }.join :
467
+ ""
468
+ )
469
+ rescue Exception => e
470
+ log_error "Error archiving module header #{m.inspect.dump}: #{e.message}"
471
+ end
472
+
473
+ return formatted_contents
451
474
  end
452
475
 
453
476
 
@@ -496,51 +519,70 @@ module Veracode
496
519
  # m.respond_to?(:global_variables) was throwing exceptions
497
520
  end
498
521
 
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}"
522
+ begin
523
+ %w[ public protected private ].each {|p|
524
+ get_methods = (p + "_instance_methods").to_sym
525
+ if m.respond_to?(get_methods) && m.__send__(get_methods, $options[:include_inherited]).count > 0
526
+ m.__send__(get_methods, $options[:include_inherited]).each do |m_symbol|
527
+ begin
528
+ method = m.instance_method(m_symbol)
529
+ formatted_contents += format_method(method, "#{p.to_s}_instance", with_disasm)
530
+ rescue Exception => e
531
+ log_error "Error archiving #{p.to_s} instance method #{m_symbol.to_s.dump}: #{e.message}"
532
+ end
508
533
  end
509
534
  end
510
- end
511
- }
535
+ }
536
+ rescue Exception => e
537
+ # m.respond_to?(get_methods)
538
+ end
512
539
 
513
540
  formatted_contents
514
541
  end
515
542
 
516
543
  def self.object_contents(o, with_disasm=true)
517
- return "" unless o.is_a? Object
544
+ begin
545
+ return "" unless !o.nil?
546
+ rescue Exception => e
547
+ log_error "Error testing #{o} with nil?. Probable monkey patching. #{e.message}"
548
+ return "" if o == nil
549
+ end
550
+
551
+ return "" unless o.is_a?(Object)
518
552
 
519
553
  puts " object contents" if $options[:verbose]
520
554
 
521
555
  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")
556
+
557
+ begin
558
+ if o.respond_to?(:instance_variables) && o.instance_variables.count > 0
559
+ o.instance_variables.each do |v_symbol|
560
+ begin
561
+ v = o.instance_variable_get(v_symbol)
562
+ formatted_contents += format_variable(v_symbol, v, "instance")
563
+ rescue Exception => e
564
+ log_error "Error archiving instance variable #{v_symbol.to_s.dump}: #{e.message}"
565
+ formatted_contents += format_variable(v_symbol, :veracode_nil, "instance")
566
+ end
531
567
  end
532
568
  end
569
+ rescue Exception => e
570
+ log_error "Error getting :instance_variables for object #{o}: #{e.message}"
533
571
  end
534
572
 
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}"
573
+ begin
574
+ if o.respond_to?(:singleton_methods) && o.singleton_methods($options[:include_inherited]).count > 0
575
+ o.singleton_methods($options[:include_inherited]).each do |m_symbol|
576
+ begin
577
+ m = o.method(m_symbol)
578
+ formatted_contents += format_method(m, "singleton", with_disasm)
579
+ rescue Exception => e
580
+ log_error "Error archiving singleton method #{m_symbol.to_s.dump}: #{e.message}"
581
+ end
542
582
  end
543
583
  end
584
+ rescue Exception => e
585
+ log_error "Error getting :singleton_methods for object #{o}: #{e.message}"
544
586
  end
545
587
 
546
588
  formatted_contents
@@ -550,13 +592,13 @@ module Veracode
550
592
  ##############################################################################
551
593
  # Archiving Objects
552
594
  def self.archive(objects, with_disasm=true)
553
-
554
- objects = objects - [
555
- Veracode,
556
- Veracode::ActiveRecord,
557
- Veracode::ActiveRecord::Model,
558
- Veracode::ActiveRecord::Schema,
559
- ]
595
+ veracode_artifacts = Set[
596
+ safe_name(Veracode),
597
+ safe_name(Veracode::ActiveRecord),
598
+ safe_name(Veracode::ActiveRecord::Model),
599
+ safe_name(Veracode::ActiveRecord::Schema)
600
+ ]
601
+ objects = objects.reject { |o| veracode_artifacts.include?(safe_name(o)) }
560
602
 
561
603
  if $options[:verbose]
562
604
  puts "Archiving #{objects.count.to_s} objects" + (with_disasm ? " with disassembly" : "")
@@ -568,17 +610,13 @@ module Veracode
568
610
  puts "archiving #{o.class.to_s.downcase} #{quote(safe_name(o))}" if $options[:verbose]
569
611
 
570
612
  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
574
-
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"
613
+ ( o.is_a?(Class) ? class_header(o) : "") + # superclass
614
+ ( o.is_a?(Module) ? module_header(o) : "") + # included modules
615
+ ( o.is_a?(Object) ? object_contents(o, with_disasm) : "") +
616
+ ( o.is_a?(Module) ? module_contents(o, with_disasm) : "") +
617
+ "end#{o.class.to_s.downcase}\n" +
618
+ "\n"
580
619
  end
581
-
582
620
  end
583
621
 
584
622
 
@@ -626,7 +664,11 @@ module Veracode
626
664
 
627
665
  assigns = {}
628
666
  view = ActionView::Base.new(view_paths, assigns)
629
- controller_view = ApplicationController.new.view_context
667
+ begin
668
+
669
+ rescue Exception => e
670
+ log_error "Unable to get controller view context (#{e.message})"
671
+ end
630
672
 
631
673
  templates.each { |template|
632
674
  puts "Compiling template #{template}" if $options[:verbose]
@@ -866,9 +908,9 @@ end
866
908
 
867
909
  ## Imitate script/rails
868
910
  # APP_PATH = File.expand_path('config/application')
869
- # APP_PATH is already set in bin/veracode
911
+ # APP_PATH is already set in bin/veracode
870
912
  #require File.expand_path('../../config/boot', __FILE__)
871
- glob_require "config/boot.rb"
913
+ glob_require "config/boot.rb"
872
914
  #require 'rails/commands'
873
915
  # this will trigger the console to be launched
874
916
  # ARGV.clear
@@ -877,7 +919,16 @@ end
877
919
  # require 'rails/commands'
878
920
 
879
921
  ## Imitate rails/commands when console
880
- cond_require 'rails/commands/console.rb'
922
+ if Gem::Version.new(Rails.version) >= Gem::Version.new("5.1.0")
923
+ cond_require 'rails/command.rb'
924
+ cond_require 'rails/command/actions.rb'
925
+ cond_require 'rails/command/base.rb'
926
+ cond_require 'rails/command/behavior.rb'
927
+ cond_require 'rails/command/environment_argument.rb'
928
+ cond_require 'rails/commands/console/console_command.rb'
929
+ else
930
+ cond_require 'rails/commands/console.rb'
931
+ end
881
932
  # require APP_PATH # => config/application.rb
882
933
 
883
934
  glob_require "config/application.rb"
@@ -913,35 +964,47 @@ end
913
964
 
914
965
  puts "Phase 3 - Imitate Rails" if $options[:verbose]
915
966
 
916
- any_new = true
917
- while any_new
918
- any_new = false
919
- any_new |= glob_require "lib/**/*.rb"
920
- any_new |= glob_require "app/**/*.rb"
921
- puts "new successful requires? #{any_new.to_s}" if $options[:verbose]
922
- end
967
+ begin
968
+ any_new = true
969
+ while any_new
970
+ any_new = false
971
+ any_new |= glob_require "lib/**/*.rb"
972
+ any_new |= glob_require "app/**/*.rb"
973
+ puts "new successful requires? #{any_new.to_s}" if $options[:verbose]
974
+ end
923
975
 
924
- compile_templates
976
+ compile_templates
925
977
 
926
- self.update
927
- self.stats if $options[:verbose]
978
+ self.update
979
+ self.stats if $options[:verbose]
928
980
 
929
- # Ensure compiled templates are fully disassembled in archive
930
- @baseline_modules.delete(ActionView::CompiledTemplates)
981
+ # Ensure compiled templates are fully disassembled in archive
982
+ @baseline_modules.delete(ActionView::CompiledTemplates)
931
983
 
932
- if $options[:environment]
933
- puts "Processing and disassembling environment"
934
- archive(@modules.reject {|o| safe_name(o) =~ /^#<(Class|Module):0x[0-9a-f]+>/i }
935
- .reject {|o| safe_name(o) =~ /^Veracode/ }
936
- .reject {|o| safe_name(o) =~ /^EmptyRails/ }
937
- .reject {|o| safe_name(o) =~ /^ActionView::CompiledTemplates$/ }, false)
938
- else
939
- puts "Processing Ruby and Rails classes and modules"
940
- archive(@baseline_modules, false)
941
- add_to_archive "\n# Phase 3 - App disassembly\n"
942
- puts "Processing and disassembling #{APP_NAME} classes and modules"
943
- archive(@modules - @baseline_modules, true)
944
- archive_schema
984
+ if $options[:environment]
985
+ puts "Processing and disassembling environment"
986
+ archive(@modules.reject {|o| safe_name(o) =~ /^#<(Class|Module):0x[0-9a-f]+>/i }
987
+ .reject {|o| safe_name(o) =~ /^Veracode/ }
988
+ .reject {|o| safe_name(o) =~ /^EmptyRails/ }
989
+ .reject {|o| safe_name(o) =~ /^ActionView::CompiledTemplates$/ }, false)
990
+ else
991
+ puts "Processing Ruby and Rails classes and modules"
992
+ archive(@baseline_modules, false)
993
+ add_to_archive "\n# Phase 3 - App disassembly\n"
994
+ puts "Processing and disassembling #{APP_NAME} classes and modules"
995
+ safe_baseline_modules = @baseline_modules.each_with_object(Set.new) { |o, s| s << safe_name(o) }
996
+ archive(@modules.reject {|o| safe_baseline_modules.include?(safe_name(o))}, true)
997
+ archive_schema
998
+
999
+ end
1000
+
1001
+ rescue Exception => e
1002
+ if $options[:snapshot]
1003
+ log_error e.message
1004
+ log_error e.backtrace.join("\n")
1005
+ else
1006
+ raise
1007
+ end
945
1008
  end
946
1009
 
947
1010
  ## /phase 3 - require app
@@ -1,4 +1,4 @@
1
1
  module Veracode
2
- VERSION = '1.0.0.alpha11'
2
+ VERSION = '1.0.0.alpha18'
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.alpha11
4
+ version: 1.0.0.alpha18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Veracode
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-07 00:00:00.000000000 Z
11
+ date: 2019-06-10 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: