]> Nishi Git Mirror - gwion.git/commitdiff
:art: headers and traverse security
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Sun, 12 Jul 2020 17:35:37 +0000 (19:35 +0200)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Sun, 12 Jul 2020 17:35:37 +0000 (19:35 +0200)
include/parse.h
src/lib/ptr.c
src/parse/check.c

index 0615183942fa3fcd52da2f76ede75b1eebb706a2..8df27eb7cbb283268e0c49c19ce478c1785ec383 100644 (file)
@@ -91,4 +91,6 @@ __attribute__((returns_nonnull))
 ANN Type get_type(const Type t);
 ANN m_bool check_subscripts(const Env, const Array_Sub, const m_bool is_decl);
 ANN m_bool check_implicit(const Env env, const Exp e, const Type t);
+ANN m_bool ensure_traverse(const Env env, const Type t);
+ANN m_bool check_traverse_fdef(const Env env, const Func_Def fdef);
 #endif
index e2cc692a402db8402d57ec5ddcdb018758689dfd..fc931530b20b408f26caf7aeacd801c1b90ee241 100644 (file)
@@ -57,7 +57,7 @@ static OP_CHECK(opck_ptr_cast) {
   DECL_ON(const Type, t, = known_type(env, cast->td)) // was type_decl_resolve
   const Type _t = get_type(t);
   if(_t->e->def && !GET_FLAG(_t, check))
-    CHECK_BN(traverse_class_def(env, _t->e->def))
+    CHECK_BN(ensure_traverse(env, _t))
   const Type to = known_type(env, cast->td->types->td);
   if(isa(cast->exp->info->type, to) > 0)
     return t;
index 24519002acd8b3d8012877540eca1a2dcd0d141d..40506c40906fc81f20bde043df3e44c77a4bcce8 100644 (file)
@@ -152,7 +152,7 @@ ANN static inline m_bool ensure_check(const Env env, const Type t) {
   return envset_run(&es, t);
 }
 
-ANN static inline m_bool ensure_traverse(const Env env, const Type t) {
+ANN m_bool ensure_traverse(const Env env, const Type t) {
   struct EnvSet es = { .env=env, .data=env, .func=(_exp_func)traverse_cdef,
     .scope=env->scope->depth, .flag=ae_flag_check };
   return envset_run(&es, t);