From 2a2e67b17fa3aa1adfcf3d72066e5f27bc3ab9b7 Mon Sep 17 00:00:00 2001 From: Yaelle Vincont <yaelle.vincont@cea.fr> Date: Fri, 22 Feb 2019 16:39:28 +0100 Subject: [PATCH] [obfuscator] obfuscate logic types and constructors --- src/kernel_services/ast_data/cil_types.mli | 4 ++-- src/plugins/obfuscator/obfuscate.ml | 4 ++-- src/plugins/obfuscator/obfuscator_kind.ml | 8 +++++++- src/plugins/obfuscator/obfuscator_kind.mli | 2 ++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/kernel_services/ast_data/cil_types.mli b/src/kernel_services/ast_data/cil_types.mli index c550806aaab..f0eb6d86d0a 100644 --- a/src/kernel_services/ast_data/cil_types.mli +++ b/src/kernel_services/ast_data/cil_types.mli @@ -1487,7 +1487,7 @@ and logic_body = (** Description of a logic type. @plugin development guide *) and logic_type_info = { - lt_name: string; + mutable lt_name: string; lt_params : string list; (** type parameters*) mutable lt_def: logic_type_def option; (** definition of the type. None for abstract types. *) @@ -1528,7 +1528,7 @@ and logic_var = { (** Description of a constructor of a logic sum-type. @plugin development guide *) and logic_ctor_info = - { ctor_name: string; (** name of the constructor. *) + { mutable ctor_name: string; (** name of the constructor. *) ctor_type: logic_type_info; (** type to which the constructor belongs. *) ctor_params: logic_type list (** types of the parameters of the constructor. *) diff --git a/src/plugins/obfuscator/obfuscate.ml b/src/plugins/obfuscator/obfuscate.ml index 41145d204d6..f602d521aaa 100644 --- a/src/plugins/obfuscator/obfuscate.ml +++ b/src/plugins/obfuscator/obfuscate.ml @@ -161,11 +161,11 @@ class visitor = object Cil.DoChildren method! vlogic_type_info_decl lti = - warn "logic type" lti.lt_name; + lti.lt_name <- Dictionary.fresh Obfuscator_kind.Logic_type lti.lt_name ; Cil.DoChildren method! vlogic_ctor_info_decl lci = - warn "logic constructor" lci.ctor_name; + lci.ctor_name <- Dictionary.fresh Obfuscator_kind.Logic_constructor lci.ctor_name ; Cil.DoChildren method! vattr = function diff --git a/src/plugins/obfuscator/obfuscator_kind.ml b/src/plugins/obfuscator/obfuscator_kind.ml index f4f1fb22e5b..47633a9a28a 100644 --- a/src/plugins/obfuscator/obfuscator_kind.ml +++ b/src/plugins/obfuscator/obfuscator_kind.ml @@ -33,7 +33,9 @@ type k = | Logic_var | Predicate | Type - + | Logic_type + | Logic_constructor + let name_of_kind = function | Behavior -> "behavior" | Enum -> "enum" @@ -47,6 +49,8 @@ let name_of_kind = function | Logic_var -> "logic variable" | Predicate -> "predicate" | Type -> "type" + | Logic_type -> "logic type" + | Logic_constructor -> "logic constructor" let prefix = function | Behavior -> "B" @@ -61,6 +65,8 @@ let prefix = function | Logic_var -> "LV" | Predicate -> "P" | Type -> "T" + | Logic_type -> "LT" + | Logic_constructor -> "LC" include Datatype.Make_with_collections (struct diff --git a/src/plugins/obfuscator/obfuscator_kind.mli b/src/plugins/obfuscator/obfuscator_kind.mli index 0aa33ec5223..25685566b88 100644 --- a/src/plugins/obfuscator/obfuscator_kind.mli +++ b/src/plugins/obfuscator/obfuscator_kind.mli @@ -33,6 +33,8 @@ type k = | Logic_var | Predicate | Type + | Logic_type + | Logic_constructor include Datatype.S_with_collections with type t = k val prefix: t -> string -- GitLab