nasl-pedant 0.1.2 → 0.1.4

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
2
  SHA1:
3
- metadata.gz: 9a6b4c22908b881b935d3f7a3c533b7dca735438
4
- data.tar.gz: 44df11019465bd433a79877ace7df3f1d9fb53ea
3
+ metadata.gz: d41b8fcbe0898ca2aab9a2fcc9e1a7ef90ca900d
4
+ data.tar.gz: 0deb90491e2b59d9ebbd38f005306ae1b5aac425
5
5
  SHA512:
6
- metadata.gz: 636d307ea833d5e34ebd7dad9582ecfd003961754ae44d9710c3be1e6bb1f86748355d63bf95a0887684f82581789d3ad0e0b6ab1a05326f52b2c26a0d2d5ba8
7
- data.tar.gz: f31689c4a1a2920c099a3160e72fb672752420d70f1da1c97502caaf93fe0be28bd7d7865d0fc8895ef6400da27af95e380fb0d99aad142fc3893500ef9390df
6
+ metadata.gz: daa101baef76f0482ce3fec9dc479a40f7b03393bca55a53703a66efbd51debf6e0f6927ed394010f664450965e1f268b1e448d28bf787b276739f5369363103
7
+ data.tar.gz: 3f650035854cb18e97d652dba398db8e5352efac1386ba3a84551548f691242d58c4972295c89c7c153de612b54044afd49b0e66654e6c6bba29634084dc72e1
@@ -30,22 +30,46 @@ module Pedant
30
30
  class CheckArityOfBuiltins < Check
31
31
  @@anon_arity_of_one = Set.new [
32
32
  "isnull",
33
+ # Sockets
34
+ "get_port_state",
35
+ "get_tcp_port_state",
36
+ "get_udp_port_state",
37
+ "close",
38
+ # String functions
39
+ "strlen",
40
+ "int",
41
+ "uint",
42
+ "chomp",
43
+ "ord",
44
+ "hex",
45
+ "hexstr",
46
+ "tolower",
47
+ "toupper",
48
+ "xmlparse",
49
+ # Time
33
50
  "usleep",
34
51
  "sleep",
52
+ # Arrays and lists
35
53
  "keys",
36
54
  "max_index",
55
+ "sort",
56
+ # Runtime checks
37
57
  "typeof",
58
+ "typeof_ex",
38
59
  "defined_func",
60
+ # Bignum functions
39
61
  "bn_dec2raw",
40
62
  "bn_raw2dec",
41
63
  "bn_hex2raw",
42
64
  "bn_raw2hex",
43
65
  "bn_sqr",
66
+ # File system
44
67
  "fread",
45
68
  "unlink",
46
69
  "readdir",
47
70
  "mkdir",
48
71
  "rmdir",
72
+ # Unkeyed hashes (crypto)
49
73
  "SHA",
50
74
  "SHA1",
51
75
  "SHA224",
@@ -56,6 +80,7 @@ module Pedant
56
80
  "MD2",
57
81
  "MD4",
58
82
  "MD5",
83
+ # Knowledge base
59
84
  "get_kb_item",
60
85
  "get_kb_list",
61
86
  "get_global_kb_item",
@@ -68,20 +93,28 @@ module Pedant
68
93
 
69
94
  def check(file, tree)
70
95
  tree.all(:Call).each do |call|
71
- next unless @@anon_arity_of_one.include? call.name.ident.name
72
96
  next unless call.name.indexes == []
73
- next unless call.args.length != 1 or call.args.first.type != :anonymous
97
+ name = call.name.ident.name
74
98
 
75
- fail
76
- report(:error, "The builtin function '#{call.name.ident.name}' takes a single anonymous argument.")
99
+ if @@anon_arity_of_one.include? name
100
+ next if call.args.length == 1 and call.args.first.type == :anonymous
101
+ fail
102
+ report(:error, "The builtin function '#{name}' takes a single anonymous argument.")
103
+ # Pick the right thing to highlight.
104
+ if call.args.length == 0
105
+ report(:error, call.context(call))
106
+ elsif call.args.first.type != :anonymous
107
+ report(:error, call.args[0].context(call))
108
+ elsif call.args.length > 1
109
+ report(:error, call.args[1].context(call))
110
+ end
111
+ end
77
112
 
78
- # Pick the right thing to highlight.
79
- if call.args.length == 0
113
+ if name == "make_array"
114
+ next if call.args.length.even?
115
+ fail
116
+ report(:error, "The builtin function 'make_array()' takes an even number of arguments.")
80
117
  report(:error, call.context(call))
81
- elsif call.args.first.type != :anonymous
82
- report(:error, call.args[0].context(call))
83
- elsif call.args.length > 1
84
- report(:error, call.args[1].context(call))
85
118
  end
86
119
  end
87
120
  end
@@ -109,7 +109,7 @@ module Pedant
109
109
 
110
110
  def self.run_all(opts, args)
111
111
  # Separate plugins and libraries from the rest of the arguments.
112
- paths = args.select { |a| a =~ /(\/|\.(inc|nasl))$/ }
112
+ paths = args.select { |a| a =~ /(\/|\.(inc|nasl|pasl|tasl))$/ }
113
113
  args -= paths
114
114
 
115
115
  # If we have paths that aren't acceptable, there's a problem.
@@ -123,7 +123,7 @@ module Pedant
123
123
  paths.each do |path|
124
124
  begin
125
125
  Pathname.new(path).find do |dirent|
126
- if dirent.file? && dirent.extname =~ /inc|nasl/
126
+ if dirent.file? && dirent.extname =~ /inc|nasl|pasl|tasl/
127
127
  dirents << dirent
128
128
  end
129
129
  end
@@ -1,3 +1,3 @@
1
1
  module Pedant
2
- VERSION = '0.1.2'
2
+ VERSION = '0.1.4'
3
3
  end
@@ -82,4 +82,20 @@ class TestArityOfBuiltins < Test::Unit::TestCase
82
82
  %q|get_kb_item("hello/", index:index);|
83
83
  )
84
84
  end
85
+
86
+ def test_make_array_odd
87
+ check(
88
+ :fail,
89
+ :CheckArityOfBuiltins,
90
+ %q|make_array(1, 2, 3);|
91
+ )
92
+ end
93
+
94
+ def test_make_array_even
95
+ check(
96
+ :pass,
97
+ :CheckArityOfBuiltins,
98
+ %q|make_array(1, 2, 3, 4);|
99
+ )
100
+ end
85
101
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nasl-pedant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mak Kolybabi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-07-04 00:00:00.000000000 Z
13
+ date: 2016-07-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake