Module: sip-router
Branch: master
Commit: c5e8ac5603f5a770b2306cd0d574c20586d788ad
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c5e8ac5603f5a770b2306cd0d574c20586d788ad

Author: Andrei Pelinescu-Onciul <[email protected]>
Committer: Andrei Pelinescu-Onciul <[email protected]>
Date:   Fri Jul 17 18:15:44 2009 +0200

core: config parser minor fix

- use a pkg_malloc'ed copy of yy_number_str for host_if_id
- always free ID/NUM_ID/host_if_id after copying them (bug
  introduced in the last merge)

---

 cfg.y |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/cfg.y b/cfg.y
index a70c56c..51df90e 100644
--- a/cfg.y
+++ b/cfg.y
@@ -1932,6 +1932,7 @@ host:
                        }
                        pkg_free($1);
                }
+               if ($3) pkg_free($3);
        }
        | host MINUS ID {
                if ($1){
@@ -1947,6 +1948,7 @@ host:
                        }
                        pkg_free($1);
                }
+               if ($3) pkg_free($3);
        }
        | host DOT error { $$=0; pkg_free($1); yyerror("invalid hostname"); }
        | host MINUS error { $$=0; pkg_free($1); yyerror("invalid hostname"); }
@@ -1954,7 +1956,12 @@ host:
 
 host_if_id: ID
                | NUM_ID
-               | NUMBER { $$=yy_number_str /* text version */; }
+               | NUMBER {
+                       /* get string version */
+                       $$=pkg_malloc(strlen(yy_number_str)+1);
+                       if ($$)
+                               strcpy($$, yy_number_str);
+               }
                ;
 
 host_or_if:
@@ -1973,6 +1980,7 @@ host_or_if:
                        }
                        pkg_free($1);
                }
+               if ($3) pkg_free($3);
        }
        | host_or_if MINUS host_if_id {
                if ($1){
@@ -1988,6 +1996,7 @@ host_or_if:
                        }
                        pkg_free($1);
                }
+               if ($3) pkg_free($3);
        }
        | host_or_if DOT error { $$=0; pkg_free($1);
                                                                
yyerror("invalid host or interface name"); }


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to