crokus 0.1.0 → 0.1.1
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 +4 -4
- data/lib/crokus/compiler.rb +6 -3
- data/lib/crokus/pretty_printer.rb +5 -3
- data/lib/crokus/trojan_inserter.rb +7 -3
- data/lib/crokus/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b12095d7e84e7b72f5e38eaa2901dc98044ffd7c42b582a80a72364be03ef29
|
4
|
+
data.tar.gz: 43dbd24919d3ec3e73981d8b9f22345a6f0885b5d1487ace5fbcc00d84070394
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43c1ab8d6bf5f8a798c8d97ca65de2b04e12ed6f6ce6e76f45ab91813c7484a8c37726c4133056c940cf2366386d8bbd3020afac5ed663dbc14809b7de58f5af
|
7
|
+
data.tar.gz: ada4e46905d24b2cda56582b03f8569baac7bce9b104f548cba1fb594799c901b54c3f7722478dd3a2275b918c0a0f6b962d1f3d74df11d7d562b35ddcee6c46
|
data/lib/crokus/compiler.rb
CHANGED
@@ -34,7 +34,8 @@ module Crokus
|
|
34
34
|
pretty_print
|
35
35
|
|
36
36
|
if options[:trojan]
|
37
|
-
insert_trojan
|
37
|
+
return_code=insert_trojan
|
38
|
+
return return_code
|
38
39
|
end
|
39
40
|
|
40
41
|
build_tac
|
@@ -108,9 +109,11 @@ module Crokus
|
|
108
109
|
if infected_ast
|
109
110
|
code=PrettyPrinter.new.visit(infected_ast)
|
110
111
|
pp_c=@base_name+"_troj.c"
|
111
|
-
puts code
|
112
112
|
File.open(pp_c,'w'){|f| f.puts code}
|
113
|
-
puts "
|
113
|
+
puts " "*5+"|--> saved as #{pp_c}" unless options[:mute]
|
114
|
+
return true
|
115
|
+
else
|
116
|
+
return false
|
114
117
|
end
|
115
118
|
end
|
116
119
|
|
@@ -159,7 +159,7 @@ module Crokus
|
|
159
159
|
fname=func.name.accept(self)
|
160
160
|
args =func.args.collect{|arg| arg.accept(self)}
|
161
161
|
args=args.join(",")
|
162
|
-
code = "\n#{tname} #{fname}(#{args})"
|
162
|
+
code = "\n#{tname} #{fname}(#{args});"
|
163
163
|
return code
|
164
164
|
end
|
165
165
|
|
@@ -194,7 +194,7 @@ module Crokus
|
|
194
194
|
if assign.rhs.is_a? Parenth
|
195
195
|
rhs=assign.rhs.expr.accept(self)
|
196
196
|
end
|
197
|
-
ret="#{lhs} #{op} #{rhs}
|
197
|
+
ret="#{lhs} #{op} #{rhs}"
|
198
198
|
ret
|
199
199
|
end
|
200
200
|
|
@@ -434,7 +434,9 @@ module Crokus
|
|
434
434
|
code << "{"
|
435
435
|
code.indent=2
|
436
436
|
body.each do |stmt|
|
437
|
-
|
437
|
+
kode_stmt = stmt.accept(self,true)
|
438
|
+
kode_stmt << ";"
|
439
|
+
code << kode_stmt
|
438
440
|
end
|
439
441
|
code.indent=0
|
440
442
|
code << "}"
|
@@ -28,7 +28,10 @@ module Crokus
|
|
28
28
|
puts " "*1+"|--[+] func #{func.name}"
|
29
29
|
func_troj=super(func,args)
|
30
30
|
success=insert_trojan(func_troj)
|
31
|
-
|
31
|
+
if success
|
32
|
+
@nb_trojans+=1
|
33
|
+
func_troj.name=Ident.new(Token.create "#{func.name}_troj")
|
34
|
+
end
|
32
35
|
func_troj
|
33
36
|
end
|
34
37
|
|
@@ -137,7 +140,7 @@ module Crokus
|
|
137
140
|
|
138
141
|
def get_arg_names args
|
139
142
|
ret=[]
|
140
|
-
|
143
|
+
args.each{|formal_arg|
|
141
144
|
case (type=formal_arg.type)
|
142
145
|
when ArrayOf
|
143
146
|
if type.size.is_a?(IntLit)
|
@@ -148,10 +151,11 @@ module Crokus
|
|
148
151
|
end
|
149
152
|
end
|
150
153
|
else
|
151
|
-
formal_arg.name
|
154
|
+
ret << formal_arg.name
|
152
155
|
end
|
153
156
|
}
|
154
157
|
ret.flatten!
|
158
|
+
ret
|
155
159
|
end
|
156
160
|
|
157
161
|
|
data/lib/crokus/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crokus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jean-Christophe Le Lann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: distribution
|