Jerry <[email protected]> ha escrit:

> I've tried it on fedora 7 without a problem, but there's something with
> gnu radius that I cannot get it to run at all even though it compiles. 

Please try the attached patch.

Regards,
Sergey

diff --git a/lib/numtostr.c b/lib/numtostr.c
index 97ce981..a319c78 100644
--- a/lib/numtostr.c
+++ b/lib/numtostr.c
@@ -32,8 +32,6 @@ numtostr (inttype i, char *buf, size_t size)
 	char *p = ibuf + sizeof ibuf;
 	size_t s;
 	
-	*p = 0;
-
 	if (i < 0) {
 		do
 			*--p = '0' - i % 10;
diff --git a/radiusd/rewrite.y b/radiusd/rewrite.y
index e77dc98..34f0926 100644
--- a/radiusd/rewrite.y
+++ b/radiusd/rewrite.y
@@ -661,6 +661,7 @@ static int rw_error_free(char *msg);
 #define rw_code_unlock()
 
 #define AVPLIST(m) ((m)->req ? (m)->req->avlist : NULL)
+
 %}
 
 
@@ -729,18 +730,15 @@ input   : dcllist
 	  }
         | expr
           {
-		  FUNCTION fmain;
-
                   if (errcnt) {
                           YYERROR;
                   }
 		  
 		  mtx_return($1);
-                  
-		  memset(&fmain, 0, sizeof(fmain));
-		  fmain.name = "main";
-		  fmain.rettype = return_type = $1->gen.datatype;
-		  function = &fmain;
+
+		  function = grad_emalloc(sizeof(*function));
+		  function->name = "main";
+		  function->rettype = return_type = $1->gen.datatype;
 
                   if (optimize() == 0) {
                           codegen();
@@ -2071,6 +2069,7 @@ _list_insert(RWLIST **first, RWLIST **last, RWLIST *prev, RWLIST *obj,
 RWLIST *
 _list_remove(RWLIST **first, RWLIST **last, RWLIST *obj)
 {
+	RWLIST *p = obj;
         RWLIST *temp;
 
         if (temp = obj->prev) 
@@ -2080,10 +2079,10 @@ _list_remove(RWLIST **first, RWLIST **last, RWLIST *obj)
 
         if (temp = obj->next)
                 temp->prev = obj->prev;
-        else if (last)
+        else 
                 *last = obj->prev;
 
-        obj->prev = obj->next = NULL;
+        p->prev = p->next = NULL;
         
         return obj;
 }
@@ -5959,6 +5958,7 @@ rewrite_compile(char *expr)
 		}
 		function->name = name;
 		function_install(function);
+		grad_free(function);
 	}
 	return name;
 }
_______________________________________________
Bug-gnu-radius mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-gnu-radius

Reply via email to