Re: FAKE_CELL

Michel Arboi <[email protected]> Wed, 02 Feb 2005 20:45:09 +0100
Newsgroups gmane.comp.security.nessus.devel
Message-ID <[email protected]>
On Sun Jan 30 2005 at 13:20, Michel Arboi wrote:

> Has the defense anything to say to save the life of this constant?

Any opposition to this patch? Renaud?

_______________________________________________
Nessus-devel mailing list
[email protected]
http://mail.nessus.org/mailman/listinfo/nessus-devel
(unnamed) (text/x-patch, 26.5 KB)
--- libnasl/nasl/exec.c	24 Nov 2004 21:22:53 -0000	1.79
+++ libnasl/nasl/exec.c	1 Feb 2005 13:01:14 -0000
@@ -58,7 +58,7 @@
   int		flag;
 
 
-  if (c == NULL || c == FAKE_CELL)
+  if (c == NULL)
     return 0;
   
   switch (c->type)
@@ -107,7 +107,7 @@
   int		x;
   char		*p = NULL;
 
-  if (c == NULL || c == FAKE_CELL) /*  Do not SEGV on undefined variables */
+  if (c == NULL) /*  Do not SEGV on undefined variables */
     return 0;
 
   switch(c->type)
@@ -164,10 +164,10 @@
   tree_cell	*c2;
   nasl_array	*a;
 
-  if (c == NULL || c == FAKE_CELL)
+  if (c == NULL)
     {
 #if NASL_DEBUG > 0
-      nasl_perror(lexic, "Cannot convert NULL or FAKE cell to string\n");
+      nasl_perror(lexic, "Cannot convert NULL cell to string\n");
 #endif
       return NULL;
     }
@@ -212,10 +212,10 @@
   char	* p;
   tree_cell	*c2;
 
-  if (c == NULL || c == FAKE_CELL)
+  if (c == NULL)
     {
 #if NASL_DEBUG > 0
-      nasl_perror(lexic, "Cannot convert NULL or FAKE cell to string\n");
+      nasl_perror(lexic, "Cannot convert NULL cell to string\n");
 #endif
       return NULL;
     }
@@ -258,7 +258,7 @@
 cell2atom(lex_ctxt* lexic, tree_cell* c1)
 {
   tree_cell	*c2 = NULL, *ret = NULL;
-  if (c1 == NULL || c1 == FAKE_CELL)
+  if (c1 == NULL)
     return c1;
 
   switch(c1->type)
@@ -287,9 +287,9 @@
 
 
 #if NASL_DEBUG >= 0
-  if (c1 == NULL || c1 == FAKE_CELL)
+  if (c1 == NULL)
     nasl_perror(lexic, "cell_cmp: c1 == NULL !\n");
-  if (c2 == NULL || c2 == FAKE_CELL)
+  if (c2 == NULL)
     nasl_perror(lexic, "cell_cmp: c2 == NULL !\n");
 #endif
 
@@ -416,8 +416,6 @@
 {
   if (c == NULL)
     fprintf(fp, "NULL");
-  else if  (c == FAKE_CELL)
-    fprintf(fp, "FAKE");
   else
     switch(c->type)
       {
@@ -702,7 +700,7 @@
 static void
 nasl_short_dump(FILE* fp, const tree_cell* c)
 {
-  if (c == NULL || c == FAKE_CELL)
+  if (c == NULL)
     return;
 
   switch (c->type)
@@ -837,10 +835,7 @@
 
   /* break or continue */
   if (lexic->break_flag || lexic->cont_flag)
-    return FAKE_CELL;
-
-  if (st == FAKE_CELL)
-    return FAKE_CELL;
+    return NULL;
 
   if (st == NULL)
     {
@@ -857,17 +852,13 @@
     {
     case NODE_IF_ELSE:
       ret = nasl_exec(lexic, st->link[0]);
-#ifdef STOP_AT_FIRST_ERROR
-      if (ret == NULL)
-	return NULL;
-#endif
       if (cvt_bool(lexic, ret))
 	ret2 = nasl_exec(lexic, st->link[1]);
       else
 	if (st->link[2] != NULL) /* else branch */
 	  ret2 = nasl_exec(lexic, st->link[2]);
 	else			/* No else */
-	  ret2 = FAKE_CELL;
+	  ret2 = NULL;
       deref_cell(ret);
       return ret2;
 
@@ -886,10 +877,6 @@
     case NODE_FOR:
       /* [0] = start expr, [1] = cond, [2] = end_expr, [3] = block */
       ret2 = nasl_exec(lexic, st->link[0]);
-#ifdef STOP_AT_FIRST_ERROR
-      if (ret2 == NULL)
-	return NULL;
-#endif
       deref_cell(ret2);
       for (;;)
 	{
@@ -909,30 +896,22 @@
 	    break;
 	  /* block */
 	  ret = nasl_exec(lexic, st->link[3]);
-#ifdef STOP_AT_FIRST_ERROR
-	  if (ret == NULL)
-	    return NULL;
-#endif
 	  deref_cell(ret);
 
 	  /* break */
 	  if (lexic->break_flag)
 	    {
 	      lexic->break_flag = 0;
-	      return FAKE_CELL;
+	      return NULL;
 	    }
 
 	  lexic->cont_flag = 0;	/* No need to test if set */
 
 	  /* end expression */
 	  ret = nasl_exec(lexic, st->link[2]);
-#ifdef STOP_AT_FIRST_ERROR
-	  if (ret == NULL)
-	    return NULL;
-#endif
 	  deref_cell(ret); 
 	}
-      return FAKE_CELL;
+      return NULL;
 
     case NODE_WHILE:
       /* [0] = cond, [1] = block */
@@ -953,21 +932,17 @@
 	    break;
 	  /* Block */
 	  ret = nasl_exec(lexic, st->link[1]);
-#ifdef STOP_AT_FIRST_ERROR
-	  if (ret == NULL)
-	    return NULL;
-#endif	  
 	  deref_cell(ret);
 
 	  /* break */
 	  if (lexic->break_flag)
 	    {
 	      lexic->break_flag = 0;
-	      return FAKE_CELL;
+	      return NULL;
 	    }
 	  lexic->cont_flag = 0;
 	}
-      return FAKE_CELL;
+      return NULL;
 
     case NODE_REPEAT_UNTIL:
       /* [0] = block, [1] = cond  */
@@ -981,32 +956,24 @@
 	    }
 	  /* Block */
 	  ret = nasl_exec(lexic, st->link[0]);
-#ifdef STOP_AT_FIRST_ERROR
-	  if (ret == NULL)
-	    return NULL;
-#endif
 	  deref_cell(ret);
 
 	  /* break */
 	  if (lexic->break_flag)
 	    {
 	      lexic->break_flag = 0;
-	      return FAKE_CELL;
+	      return NULL;
 	    }
 	  lexic->cont_flag = 0;
 
 	  /* Condition */
 	  ret = nasl_exec(lexic, st->link[1]);
-#ifdef STOP_AT_FIRST_ERROR
-	  if (ret == NULL)
-	    return NULL;
-#endif
 	  flag = cvt_bool(lexic, ret);
 	  deref_cell(ret);
 	  if (flag)
 	    break;
 	}
-      return FAKE_CELL;
+      return NULL;
 
     case NODE_FOREACH:
       /* str_val = index name, [0] = array, [1] = block */
@@ -1025,10 +992,6 @@
 	    ret = nasl_exec(lexic, st->link[1]);
 	    deref_cell(val);
 	    deref_cell(tc1);
-#ifdef STOP_AT_FIRST_ERROR
-	    if (ret == NULL) 
-	      break;
-#endif
 	    deref_cell(ret);
 
 	    /* return */
@@ -1045,7 +1008,7 @@
 	deref_cell(a);
 	deref_cell(v);
       }
-      return FAKE_CELL;
+      return NULL;
 
     case NODE_FUN_DEF:
       /* x.str_val = function name, [0] = argdecl, [1] = block */
@@ -1073,22 +1036,12 @@
       if (n <= 0)
 	return NULL;
 	
-#ifdef STOP_AT_FIRST_ERROR	
-      for (tc1 = NULL, i = 1; i <= n; i ++)
-	{
-	  deref_cell(tc1);
-	  if ((tc1 = nasl_exec(lexic, st->link[0])) == NULL)
-	    return NULL;
-	}
-      return tc1;
-#else
       for (i = 1; i <= n; i ++)
 	{
 	  tc1 = nasl_exec(lexic, st->link[0]);
 	  deref_cell(tc1);
 	}
-      return FAKE_CELL;
-#endif
+      return NULL;
 
       /*
        * I wonder... 
@@ -1111,11 +1064,11 @@
 
     case NODE_BREAK:
       lexic->break_flag = 1;
-      return FAKE_CELL;
+      return NULL;
 
     case NODE_CONTINUE:
       lexic->cont_flag = 1;
-      return FAKE_CELL;
+      return NULL;
 
     case NODE_ARRAY_EL:		/* val = array name, [0] = index */
       idx = cell2atom(lexic, st->link[0]);
@@ -1274,22 +1227,11 @@
     case EXPR_PLUS:
       s1 = s2 = NULL;
       tc1 = cell2atom(lexic, st->link[0]);
-#ifdef STOP_AT_FIRST_ERROR
-      if (tc1 == NULL || tc1 == FAKE_CELL)
-	return NULL;
-#endif
       tc2 = cell2atom(lexic, st->link[1]);
-      if (tc2 == NULL || tc2 == FAKE_CELL)
-	{
-#ifdef STOP_AT_FIRST_ERROR
-	  deref_cell(tc1);
-	  return NULL;
-#else
+      if (tc2 == NULL)
 	  return tc1;
-#endif
-	}
 
-      if (tc1 == NULL || tc1 == FAKE_CELL)
+      if (tc1 == NULL)
 	return tc2;
 
       /*
@@ -1359,22 +1301,11 @@
     case EXPR_MINUS:		/* Infamous duplicated code */
       s1 = s2 = NULL;
       tc1 = cell2atom(lexic, st->link[0]);
-#ifdef STOP_AT_FIRST_ERROR
-      if (tc1 == NULL || tc1 == FAKE_CELL)
-	return NULL;
-#endif
       tc2 = cell2atom(lexic, st->link[1]);
-      if (tc2 == NULL || tc2 == FAKE_CELL)
-	{
-#ifdef STOP_AT_FIRST_ERROR
-	  deref_cell(tc1);
-	  return NULL;
-#else
+      if (tc2 == NULL)
 	  return tc1;
-#endif
-	}
 
-      if (tc1 == NULL || tc1 == FAKE_CELL)
+      if (tc1 == NULL)
 	{
 	  if (tc2->type == CONST_INT)
 	    {
@@ -1577,7 +1508,7 @@
       tc2 = cell2atom(lexic, st->link[1]); 
       s1 = s2 = NULL;
 
-      if (tc1 == NULL || tc1 == FAKE_CELL)
+      if (tc1 == NULL)
 	{
 	  p1 = ""; 
 	  len1 = 0;
@@ -1596,7 +1527,7 @@
 	  len1 = strlen(s1);
 	}
 
-      if (tc2 == NULL || tc2 == FAKE_CELL)
+      if (tc2 == NULL)
 	{
 	  p2 = "";
 	  len2 = 0;
--- libnasl/nasl/lint.c	29 Sep 2004 12:22:45 -0000	1.4
+++ libnasl/nasl/lint.c	1 Feb 2005 13:01:15 -0000
@@ -42,7 +42,7 @@
 nasl_lint(lex_ctxt* lexic, tree_cell* st)
 {
   int		i;
-  tree_cell	*ret = FAKE_CELL;
+  tree_cell	*ret = NULL;
   nasl_func	*pf;
 
   switch (st->type)
@@ -60,7 +60,7 @@
 	}
     default:
       for (i = 0; i < 4; i ++)
-	if (st->link[i] != NULL && st->link[i] != FAKE_CELL)
+	if (st->link[i] != NULL)
 	  if ((ret = nasl_lint(lexic, st->link[i])) == NULL)
 	    return NULL;
       return ret;
--- libnasl/nasl/nasl_cmd_exec.c	20 Jan 2005 03:48:08 -0000	1.15
+++ libnasl/nasl/nasl_cmd_exec.c	1 Feb 2005 13:01:16 -0000
@@ -322,7 +322,7 @@
       return NULL;
     }
   /* No need to return a value */
-  return FAKE_CELL;
+  return NULL;
 }
 
 /* Definitely dangerous too */
--- libnasl/nasl/nasl_crypto2.c	27 Oct 2004 17:06:50 -0000	1.10
+++ libnasl/nasl/nasl_crypto2.c	1 Feb 2005 13:01:16 -0000
@@ -150,7 +150,7 @@
   long privlen, plen, s1len;
   int len;
 
-  if ( check_authenticated(lexic) < 0 ) return FAKE_CELL;
+  if ( check_authenticated(lexic) < 0 ) return NULL;
 
   retc = alloc_tree_cell(0, NULL);
   retc->type = CONST_DATA;
@@ -437,7 +437,7 @@
   int len, ok;
   long sz1, sz2, sz3, sz4, slen;
 
-  if ( check_authenticated(lexic) < 0 ) return FAKE_CELL;
+  if ( check_authenticated(lexic) < 0 ) return NULL;
 
   retc = alloc_tree_cell(0, NULL);
   retc->type = CONST_DATA;
@@ -640,7 +640,7 @@
   long plen, glen, qlen, publen, privlen, rlen, slen, datalen;
 
 
-  if ( check_authenticated(lexic) < 0 ) return FAKE_CELL;
+  if ( check_authenticated(lexic) < 0 ) return NULL;
 
   retc = emalloc(sizeof(tree_cell));
   retc->ref_count = 1;
--- libnasl/nasl/nasl_func.c	15 Nov 2004 17:37:55 -0000	1.19
+++ libnasl/nasl/nasl_func.c	1 Feb 2005 13:01:17 -0000
@@ -90,7 +90,7 @@
   pf = emalloc(sizeof(nasl_func));
   pf->func_name = estrdup(fname);
 
-  if (decl_node != NULL && decl_node != FAKE_CELL)
+  if (decl_node != NULL)
     {
       for (pc = decl_node->link[0]; pc != NULL; pc = pc->link[0])
 	if (pc->x.str_val == NULL)
@@ -120,16 +120,14 @@
 tree_cell*
 decl_nasl_func(lex_ctxt* lexic, tree_cell* decl_node)
 {
-  if (decl_node == NULL || decl_node == FAKE_CELL)
+  if (decl_node == NULL)
     {
-      nasl_perror(lexic, "Cannot insert NULL or FAKE cell as function\n");
+      nasl_perror(lexic, "Cannot insert NULL cell as function\n");
       return NULL;
     }
     
-  if (insert_nasl_func(lexic, decl_node->x.str_val, decl_node) == NULL)
+  (void) insert_nasl_func(lexic, decl_node->x.str_val, decl_node);
     return NULL;
-  else
-    return FAKE_CELL;
 }
 
 nasl_func*
@@ -150,9 +148,6 @@
 tree_cell*
 nasl_func_call(lex_ctxt* lexic, const nasl_func* f, tree_cell* arg_list)
 {
-#if 0
-  return FAKE_CELL;
-#else
   int		nb_u = 0, nb_n = 0, nb_a = 0;
   tree_cell	*pc = NULL, *pc2 = NULL, *retc = NULL;
   lex_ctxt	*lexic2 = NULL;
@@ -279,14 +274,13 @@
 	{
 	  retc = nasl_exec(lexic2, f->block);
 	  deref_cell(retc);
-	  retc = FAKE_CELL;
+	  retc = NULL;
 	}
 
-      if ((retc == NULL || retc == FAKE_CELL) &&
-	  (lexic2->ret_val != NULL && lexic2->ret_val != FAKE_CELL))
+      if (retc == NULL && lexic2->ret_val != NULL)
 	{
 #if 0
-	  nasl_perror(lexic, "nasl_func_call: nasl_exec(%s) returns NULL or FAKE value, but context disagrees. Fixing...\n", f->func_name);
+	  nasl_perror(lexic, "nasl_func_call: nasl_exec(%s) returns NULL value, but context disagrees. Fixing...\n", f->func_name);
 	  nasl_dump_tree(retc);
 #endif
 	  retc = lexic2->ret_val;
@@ -311,7 +305,6 @@
  error:
   free_lex_ctxt(lexic2);
   return NULL;
-#endif
 }
 
 tree_cell* nasl_return(lex_ctxt* ctxt, tree_cell* retv)
@@ -319,12 +312,8 @@
   tree_cell	*c;
 
   retv = cell2atom(ctxt, retv);
-  if (retv == NULL)
-    retv = FAKE_CELL;
-    
     
-
-  if (retv != FAKE_CELL && retv->type == REF_ARRAY)
+  if (retv != NULL && retv->type == REF_ARRAY)
     /* We have to "copy" it as the referenced array will be freed */
     {
       c = copy_ref_array(retv);
@@ -342,7 +331,7 @@
     }
   /* Bug? Do not return NULL, as we may test it to break the control flow */
   deref_cell(retv);
-  return FAKE_CELL;
+  return NULL;
 }
 
 static void
--- libnasl/nasl/nasl_host.c	27 Oct 2004 17:06:50 -0000	1.14
+++ libnasl/nasl/nasl_host.c	1 Feb 2005 13:01:17 -0000
@@ -58,7 +58,7 @@
 
  if(ip == NULL) /* WTF ? */
  {
-   return FAKE_CELL;
+   return NULL;
  }
 
  retc = alloc_tree_cell(0, NULL);
@@ -92,7 +92,7 @@
 
  port = get_int_var_by_num(lexic, 0, -1);
  if(port < 0)
-	 return FAKE_CELL;
+   return NULL;
 
  retc = alloc_tree_cell(0, NULL);
  retc->type = CONST_INT;
@@ -111,7 +111,7 @@
 
  port = get_int_var_by_num(lexic, 0, -1);
  if(port < 0)
-	 return FAKE_CELL;
+   return NULL;
 
  retc = alloc_tree_cell(0, NULL);
  retc->type = CONST_INT;
--- libnasl/nasl/nasl_misc_funcs.c	27 Oct 2004 17:06:51 -0000	1.35
+++ libnasl/nasl/nasl_misc_funcs.c	1 Feb 2005 13:01:18 -0000
@@ -49,14 +49,14 @@
 {
  int slp = get_int_var_by_num(lexic, 0, 0);
  usleep(slp);
- return FAKE_CELL;
+ return NULL;
 }
 
 tree_cell * nasl_sleep(lex_ctxt * lexic)
 {
  int slp = get_int_var_by_num(lexic, 0, 0);
  sleep(slp);
- return FAKE_CELL;
+ return NULL;
 }
 
 
@@ -199,7 +199,7 @@
     
    close_stream_connection(soc);
   
-   return FAKE_CELL;
+   return NULL;
   }
  }
 
@@ -213,7 +213,7 @@
  
  deref_cell(p);
 
- return FAKE_CELL;
+ return NULL;
 }
 
 tree_cell * nasl_end_denial(lex_ctxt * lexic)
@@ -271,7 +271,7 @@
 tree_cell* nasl_dump_ctxt(lex_ctxt* lexic)
 {
   dump_ctxt(lexic->up_ctxt);
-  return FAKE_CELL;
+  return NULL;
 }
 
 
--- libnasl/nasl/nasl_nessusd_glue.c	12 Dec 2004 11:46:57 -0000	1.39
+++ libnasl/nasl/nasl_nessusd_glue.c	1 Feb 2005 13:01:18 -0000
@@ -69,10 +69,10 @@
  int to = get_int_var_by_num(lexic, 0, -65535);
 
  if(to == -65535)
-	 return FAKE_CELL;
+   return NULL;
 
   plug_set_timeout(script_infos, to ? to : -1 );
-  return FAKE_CELL;
+  return NULL;
 }
 
 
@@ -85,7 +85,7 @@
  if(id > 0)
   	plug_set_id(script_infos, id);
 
-  return FAKE_CELL;
+  return NULL;
 }
 
 /*
@@ -105,7 +105,7 @@
  }
 	 
 
- return FAKE_CELL;
+ return NULL;
 }
 
 /*
@@ -123,7 +123,7 @@
   bid = get_str_var_by_num(lexic, i + 1);
  }
  
- return FAKE_CELL;
+ return NULL;
 }
 
 
@@ -137,12 +137,12 @@
  if( value == NULL || name == NULL )
  {
   fprintf(stderr, "script_xref() syntax error - should be script_xref(name:<name>, value:<value>)\n");
-  return FAKE_CELL;
+  return NULL;
  }
  
  plug_set_xref(script_infos, name, value);
  
- return FAKE_CELL;
+ return NULL;
 }
 
 
@@ -150,7 +150,7 @@
 tree_cell* script_see_also(lex_ctxt* lexic)
 {
  nasl_perror(lexic, "Error - script_see_also() called\n");
- return FAKE_CELL;
+ return NULL;
 }
 
 typedef void(*script_register_func_t)(struct arglist*, const char *, const char*);
@@ -174,13 +174,13 @@
  	if( str == NULL ){
 		str = get_str_var_by_num(lexic, 0);
  		if( str == NULL )
-			return FAKE_CELL;
+		  return NULL;
 			
 		}
 	    }
 	    
  script_register_func(script_infos, str, NULL);	    
- return FAKE_CELL;
+ return NULL;
 }
 
 
@@ -206,7 +206,7 @@
  else
  	plug_set_version(script_infos, version);
  
- return FAKE_CELL;
+ return NULL;
  
 }
 
@@ -235,10 +235,10 @@
  if(category < 0){
  	nasl_perror(lexic, "Argument error in function script_category()\n");
 	nasl_perror(lexic, "Function usage is : script_category(<category>)\n");
- 	return FAKE_CELL;
+ 	return NULL;
  	}
  plug_set_category(script_infos, category);
- return FAKE_CELL;
+ return NULL;
 }
 
 tree_cell * script_family(lex_ctxt * lexic)
@@ -257,7 +257,7 @@
 	nasl_perror(lexic, "Function usage is : script_dependencie(<name>)\n");
 	nasl_perror(lexic, "Where <name> is the name of another script\n");
 	
-	return FAKE_CELL;
+	return NULL;
 	}
   
  for(i=0;dep != NULL;i++)
@@ -267,7 +267,7 @@
 	plug_set_dep(script_infos, dep);
  }
  
- return FAKE_CELL;
+ return NULL;
 }
 
 
@@ -282,7 +282,7 @@
  	nasl_perror(lexic, "Argument error in function script_require_keys()\n");
 	nasl_perror(lexic, "Function usage is : script_require_keys(<name>)\n");
 	nasl_perror(lexic, "Where <name> is the name of a key\n");
-	return FAKE_CELL;
+	return NULL;
 	}
   
  for(i=0; keys != NULL;i++)
@@ -292,7 +292,7 @@
   	plug_require_key(script_infos, keys);
  }
  
- return FAKE_CELL;
+ return NULL;
 }
 
 tree_cell * script_exclude_keys(lex_ctxt * lexic)
@@ -311,7 +311,7 @@
   }
  }
  
- return FAKE_CELL;
+ return NULL;
 }
 
 
@@ -330,7 +330,7 @@
 	  break;
  }
  
- return FAKE_CELL;
+ return NULL;
 }
 
 
@@ -349,7 +349,7 @@
 		 break;
  }
 
- return FAKE_CELL;
+ return NULL;
 }
 
 tree_cell * script_add_preference(lex_ctxt * lexic)
@@ -364,7 +364,7 @@
  else
    add_plugin_preference(script_infos, name, type, value);
 
- return FAKE_CELL;
+ return NULL;
 }
 
 tree_cell * script_get_preference(lex_ctxt * lexic)
@@ -377,7 +377,7 @@
  if(pref == NULL){
  	nasl_perror(lexic, "Argument error in the function script_get_preference()\n");
 	nasl_perror(lexic, "Function usage is : pref = script_get_preference(<name>)\n");
- 	return FAKE_CELL;
+ 	return NULL;
 	}
 
  value = get_plugin_preference(script_infos, pref);
@@ -398,7 +398,7 @@
 	 return retc;
  } 
  else
-	 return FAKE_CELL;
+   return NULL;
 }
 
 tree_cell * script_get_preference_file_content(lex_ctxt * lexic)
@@ -430,7 +430,7 @@
  if(value == NULL) return NULL;
 
  value = (char*)get_plugin_preference_fname(script_infos, value);
- if ( value == NULL ) return FAKE_CELL;
+ if ( value == NULL ) return NULL;
 
  fd = open(value, O_RDONLY);
  if (fd < 0)
@@ -618,7 +618,7 @@
  if(num_elems == 0)
  {
   deref_cell(retc);
-  return FAKE_CELL;
+  return NULL;
  }
  return retc;
 }
@@ -739,7 +739,7 @@
  if( name == NULL )
  {
   nasl_perror(lexic, "Syntax error with replace_kb_item() [null name]\n", name);
-  return FAKE_CELL;
+  return NULL;
  }
  
  if(type == VAR2_INT)
@@ -753,12 +753,12 @@
   if( value == NULL )
   {
     nasl_perror(lexic, "Syntax error with replace_kb_item(%s) [null value]\n", name);
-    return FAKE_CELL;
+    return NULL;
   }
   plug_replace_key(script_infos, name, ARG_STRING, value);
  }
 
- return FAKE_CELL;
+ return NULL;
 }
 
 tree_cell * set_kb_item(lex_ctxt * lexic)
@@ -770,7 +770,7 @@
  if( name == NULL )
  {
   nasl_perror(lexic, "Syntax error with set_kb_item() [null name]\n", name);
-  return FAKE_CELL;
+  return NULL;
  }
  
  if(type == VAR2_INT)
@@ -784,12 +784,12 @@
   if( value == NULL )
   {
     nasl_perror(lexic, "Syntax error with set_kb_item() [null value]\n", name);
-    return FAKE_CELL;
+    return NULL;
   }
   plug_set_key(script_infos, name, ARG_STRING, value);
  }
 
- return FAKE_CELL;
+ return NULL;
 }
 
 /*------------------------[ Reporting a problem ]---------------------------*/
@@ -845,7 +845,7 @@
    proto_post_func(script_infos, port, proto, dup);
 
   efree(&dup);
-  return FAKE_CELL;
+  return NULL;
  }
  
  if(proto == NULL)
@@ -854,7 +854,7 @@
   proto_post_func(script_infos, port, proto, NULL);
   
 
- return FAKE_CELL;
+ return NULL;
 }
  
 tree_cell * security_hole(lex_ctxt * lexic)
@@ -965,7 +965,7 @@
   scanner_add_port(script_infos, port, proto?proto:"tcp");
  }
 
- return FAKE_CELL;
+ return NULL;
 }
  
 tree_cell * nasl_scanner_status(lex_ctxt * lexic)
@@ -981,7 +981,7 @@
       if (globs == NULL) return NULL;
       comm_send_status(globs, arg_get_value(hostdata, "NAME"), "portscan", current, total);
     }
-  return FAKE_CELL;
+  return NULL;
 } 
 
 
@@ -1008,7 +1008,7 @@
 
 
  shared_socket_register(script_infos, soc, name);
- return FAKE_CELL;
+ return NULL;
 }
 
 tree_cell * nasl_shared_socket_acquire( lex_ctxt * lexic )
--- libnasl/nasl/nasl_packet_forgery.c	27 Oct 2004 17:06:52 -0000	1.57
+++ libnasl/nasl/nasl_packet_forgery.c	1 Feb 2005 13:01:19 -0000
@@ -348,7 +348,7 @@
    }
   }
  
- return FAKE_CELL;
+ return NULL;
 }
 /*--------------[ 	TCP 	]--------------------------------------------*/
 
@@ -1282,7 +1282,7 @@
 
 tree_cell*	nasl_send_packet(lex_ctxt* lexic)
 {
-  tree_cell	*retc = FAKE_CELL;
+  tree_cell	*retc = NULL;
   int		bpf = -1;
   u_char	* answer;
   int	 	answer_sz;
--- libnasl/nasl/nasl_socket.c	23 Nov 2004 14:21:37 -0000	1.37
+++ libnasl/nasl/nasl_socket.c	1 Feb 2005 13:01:20 -0000
@@ -260,13 +260,13 @@
      if ( sport < 0 )
  	 goto restart;
       else 
-         return FAKE_CELL;
+         return NULL;
 
    case 0:
 	break;
    default:
        close ( sock );
-       return FAKE_CELL;
+       return NULL;
        break;
  }
  
@@ -605,7 +605,10 @@
  	}
 
  if ( fd_is_stream(soc) )
-  return close_stream_connection(soc) < 0 ? NULL:FAKE_CELL;
+   {
+     close_stream_connection(soc);
+     return NULL;
+   }
  
  e = getsockopt(soc, SOL_SOCKET, SO_TYPE, &type, &opt_len);
  if(e == 0 )
@@ -613,10 +616,10 @@
   if (type == SOCK_DGRAM)
   {
    rm_udp_data(lexic->script_infos, soc);
-   return FAKE_CELL;
+   return NULL;
   }
   close(soc);
-  return FAKE_CELL;
+  return NULL;
  }
  else nasl_perror(lexic, "close(): invalid argument\n");
 
@@ -728,7 +731,7 @@
       {
 	if (-- jmg_desc[i].count <= 0)
 	  close(jmg_desc[i].s);
-	return FAKE_CELL;
+	return NULL;
       }
 
   nasl_perror(lexic, "leave_multicast_group: never joined group %s\n", a);
--- libnasl/nasl/nasl_text_utils.c	27 Oct 2004 17:06:53 -0000	1.46
+++ libnasl/nasl/nasl_text_utils.c	1 Feb 2005 13:01:20 -0000
@@ -741,7 +741,7 @@
   {
    efree(&rets);
    efree(&string);
-   return FAKE_CELL;
+   return NULL;
   }
 #endif
   efree(&string);
@@ -1091,7 +1091,7 @@
     len = len2;
 
   if( len == 0 )
-  	return FAKE_CELL;
+  	return NULL;
 	
   if (data != NULL)
     {
@@ -1150,7 +1150,7 @@
  
  c = (char*)memmem(a, sz_a, b, sz_b);
  if(c == NULL)
-  return FAKE_CELL;
+  return NULL;
  
  retc = alloc_tree_cell(0, NULL);
  retc->type = CONST_DATA;
--- libnasl/nasl/nasl_tree.c	27 Oct 2004 17:06:53 -0000	1.34
+++ libnasl/nasl/nasl_tree.c	1 Feb 2005 13:01:21 -0000
@@ -66,7 +66,7 @@
   tree_cell *c = alloc_tree_cell(lnb, NULL);
   c->type = t;			/* We could check the type... */
   c->link[0] = l;
-  c->link[1] = FAKE_CELL;
+  c->link[1] = NULL;
   e = nasl_regcomp(re, re_str, REG_EXTENDED|REG_NOSUB|REG_ICASE);
   if (! e)
     c->x.ref_val = re;
@@ -98,8 +98,6 @@
 
   if (tc == NULL)
     return NULL;
-  else if (tc == FAKE_CELL)
-    return FAKE_CELL;
 
   r  = alloc_tree_cell(tc->line_nb, NULL);
   r->type = tc->type;
@@ -127,7 +125,7 @@
   int			i;
   nasl_array		*a;
 
-  if (c == NULL || c == FAKE_CELL)
+  if (c == NULL)
     return;
 #if 0
   nasl_dump_tree(c);
@@ -185,7 +183,7 @@
 void
 ref_cell(tree_cell* c)
 {
-  if (c == NULL || c == FAKE_CELL)
+  if (c == NULL)
     return;
   c->ref_count ++;
   if (c->ref_count < 0)
@@ -199,7 +197,7 @@
 void
 deref_cell(tree_cell* c)
 {
-  if (c == NULL || c == FAKE_CELL)
+  if (c == NULL)
     return;
   if (-- c->ref_count <= 0)
     free_tree(c);
@@ -302,8 +300,6 @@
 
   if (c == NULL)
     return "NULL";
-  else if (c == FAKE_CELL)
-     return "FAKE";
   else
     switch(c->type)
       {
@@ -337,12 +333,6 @@
 
   prefix(n, idx);
 
-  if (c == FAKE_CELL)
-    {
-      puts("* FAKE *");
-      return;
-    }
-
   if (c->line_nb > 0)
     printf("L%d: ", c->line_nb);
 
@@ -438,8 +428,6 @@
   printf("^^^^ %08x ^^^^^\n", (int) c);
   if (c == NULL)
     puts("NULL CELL");
-  else if (c == FAKE_CELL)
-    puts ("FAKE CELL");
   else
     dump_tree(c, 0, 0);
   printf("vvvvvvvvvvvvvvvvvv\n");
@@ -449,7 +437,7 @@
 get_line_nb(const tree_cell* c)
 {
   static char txt[32];
-  if (c == NULL || c == FAKE_CELL || c->line_nb <= 0)
+  if (c == NULL || c->line_nb <= 0)
     return "";
   snprintf(txt, sizeof(txt), " at or near line %d ", c->line_nb);
   return txt;
@@ -459,7 +447,7 @@
 int
 nasl_is_leaf(const tree_cell* pc)
 {
-  if (pc == NULL || pc == FAKE_CELL)
+  if (pc == NULL)
     return 1;
   switch(pc->type)
     {
@@ -478,7 +466,7 @@
 int
 cell_type(const tree_cell* c)
 {
-  if (c == NULL || c== FAKE_CELL)
+  if (c == NULL)
     return 0;
   else
     return c->type;
--- libnasl/nasl/nasl_tree.h	19 Jan 2004 21:28:25 -0000	1.20
+++ libnasl/nasl/nasl_tree.h	1 Feb 2005 13:01:21 -0000
@@ -125,7 +125,6 @@
   struct TC	*link[4];
 } tree_cell;
 
-#define FAKE_CELL	((void*)1)
 #define EXIT_CELL	((void*)2)
 
 tree_cell*	alloc_tree_cell(int, char*);
--- libnasl/nasl/nasl_var.c	15 Nov 2004 17:46:25 -0000	1.52
+++ libnasl/nasl/nasl_var.c	1 Feb 2005 13:01:22 -0000
@@ -606,7 +606,7 @@
   tree_cell	*c2;
   nasl_array	*a2;
 
-  if (c1 == NULL || c1 == FAKE_CELL || c1->type != REF_ARRAY)
+  if (c1 == NULL || c1->type != REF_ARRAY)
     return NULL;
 
   c2 = alloc_tree_cell(0, NULL); c2->type = DYN_ARRAY;
@@ -628,10 +628,10 @@
 
   t1 = v1->var_type;
 
-  if (rval == NULL || rval == FAKE_CELL)
+  if (rval == NULL)
     {
 #if NASL_DEBUG > 1
-      nasl_perror(NULL, "nasl_affect: affecting NULL or FAKE cell undefines variable %s %s\n", get_var_name(v1), get_line_nb(rval));
+      nasl_perror(NULL, "nasl_affect: affecting NULL cell undefines variable %s %s\n", get_var_name(v1), get_line_nb(rval));
 #endif
       clear_anon_var(v1);
       if(nasl_trace_enabled())nasl_trace(NULL, "NASL> %s <- undef\n", get_var_name(v1));
@@ -657,7 +657,7 @@
 #if NASL_DEBUG > 1
 	  nasl_perror(NULL, "Copying variable %s to itself is useless and dangerous!\n", get_var_name(v1));
 #endif
-	  return FAKE_CELL;
+	  return NULL;
 	}
       t2 = v2->var_type;
       if (t2 == VAR2_ARRAY)
@@ -673,7 +673,7 @@
 #if NASL_DEBUG > 1
 	  nasl_perror(NULL, "Copying array %s to itself is useless and dangerous!\n", get_var_name(v1));
 #endif
-	  return FAKE_CELL;
+	  return NULL;
 	}
       break;
 
@@ -790,7 +790,7 @@
       }
 
   clear_anon_var(&v0);
-  return FAKE_CELL;
+  return NULL;
 }
 
 tree_cell*
@@ -824,10 +824,10 @@
   if (name != NULL)
     v->var_name = estrdup(name);
 
-  if (val == NULL || val == FAKE_CELL)
+  if (val == NULL)
     {
 #if NASL_DEBUG > 1
-      nasl_perror(NULL, "create_named_var: affecting NULL or FAKE cell to variable %s\n", get_var_name(v));
+      nasl_perror(NULL, "create_named_var: affecting NULL cell to variable %s\n", get_var_name(v));
 #endif
       v->u.var_type = VAR2_UNDEF;
       return v;
@@ -845,10 +845,10 @@
   anon_nasl_var	*v = emalloc(sizeof(anon_nasl_var));
   tree_cell		*tc;
 
-  if (val == NULL || val == FAKE_CELL)
+  if (val == NULL)
     {
 #if NASL_DEBUG > 1
-      nasl_perror(NULL, "create_anon_var: affecting NULL or FAKE cell to variable %s\n", get_var_name(v));
+      nasl_perror(NULL, "create_anon_var: affecting NULL cell to variable %s\n", get_var_name(v));
 #endif
       v->var_type = VAR2_UNDEF;
       return v;
@@ -870,7 +870,7 @@
       nasl_perror(lexic, "decl_local_variables: null name!\n");
     else
       add_named_var_to_ctxt(lexic, t->x.str_val, NULL);
-  return FAKE_CELL;
+  return NULL;
 }
 
 tree_cell*
@@ -950,9 +950,9 @@
   const char		*name;
 #endif
 
-  if (tc == NULL || tc == FAKE_CELL)
+  if (tc == NULL)
     {
-      nasl_perror(lexic, "nasl_read_var_ref: cannot read NULL or FAKE cell\n");
+      nasl_perror(lexic, "nasl_read_var_ref: cannot read NULL cell\n");
       return NULL;
     }
   if (tc->type != REF_VAR)
@@ -1375,7 +1375,7 @@
   it.i1 = 0;
   it.iH = 0;
   
-  if (c == NULL || c == FAKE_CELL)
+  if (c == NULL)
     return it;
 
   if (c->type == REF_VAR)
@@ -1541,7 +1541,7 @@
   for (n = 0, c = el; c != NULL; c= c->link[1])
     {
       c2 = c->link[0];
-      if (c2 != NULL && c2 != FAKE_CELL)
+      if (c2 != NULL)
 	{
 	  memset(&v, 0, sizeof(v));
 	  switch (c2->type)
--- libnasl/nasl/preparse.c	27 Oct 2004 17:06:54 -0000	1.8
+++ libnasl/nasl/preparse.c	1 Feb 2005 13:01:22 -0000
@@ -319,7 +319,7 @@
   int		l, i;
   unsigned char flag;
 
-  if (tc == NULL || tc == FAKE_CELL)
+  if (tc == NULL)
     {
       typ = NODE_EMPTY;
       if (fdctx_write(ctx, &typ, sizeof(typ)) < 0 )