]> Nishi Git Mirror - gwion.git/commitdiff
:bug: more AFL fixes
authorJérémie Astor <fennecdjay@gmail.com>
Thu, 23 Sep 2021 15:30:21 +0000 (17:30 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Thu, 23 Sep 2021 15:30:21 +0000 (17:30 +0200)
src/lib/deep_equal.c
src/lib/lib_func.c
src/vm/vm.c

index e7e208fdafe961ba97e3b3cdc3d78351c11debd7..a94d456a541ffb3b0f91c7fff78845a56f00c554 100644 (file)
@@ -27,14 +27,16 @@ static OP_##ACTION(op##action##_deep_##_t##_any) {             \
 static OP_CHECK(opck_deep_eq_any) {
   Exp_Binary *bin = data;
   bin->op = insert_symbol(env->gwion->st, "==");
+  exp_self(bin)->exp_type = ae_exp_binary;
   DECL_ON(const Type, t, = check_exp(env, exp_self(bin)));
   return t;
 }
 static OP_CHECK(opck_deep_ne_any) {
   Exp_Binary *bin = data;
   bin->op = insert_symbol(env->gwion->st, "!=");
-  const Type t = check_exp(env, exp_self(bin));
-  return !t ? env->gwion->type[et_error] : env->gwion->type[et_bool];
+  exp_self(bin)->exp_type = ae_exp_binary;
+  DECL_ON(const Type, t, = check_exp(env, exp_self(bin)));
+  return t;
 }
 
 deep_any(emit, emit, em, EMIT,  CHECK_BB, eq, ==);
index 07713d65a6d29ef05f7c35a5118f746fb03fa07e..5ba2f0ff54e93f23bf83eece9038442c943be7d0 100644 (file)
@@ -52,7 +52,7 @@ ANN static Exp order_curry(const Env env, Exp fn, Exp arg) {
     }
     if (!base)
       base = next = cpy_nonext(env, curr);
-    else {
+    else if(next) { // check me (added after a fuzzing session)
       next->next = cpy_nonext(env, curr);
       next       = next->next;
     }
index 96ba7e920963a73adb50b05b75c5376351094592..d80907473251ed1a998994863f24a47af6c5d6fa 100644 (file)
@@ -68,7 +68,7 @@ ANN static uint16_t find_pc(const VM_Shred shred, const Symbol effect, const m_u
     if (start > shred->pc) break;
     if (start < shred->pc && VKEY(m, i) > shred->pc) {
       const m_uint next  = VKEY(m, i);
-      const Instr  instr = (Instr)vector_at(&code->instr, next + 1);
+      const Instr  instr = (Instr)vector_at(&code->instr, next);
       if (!instr->m_val2 || (Symbol)instr->m_val2 == effect)
         return next + 1;
     }