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

Author: Andrei Pelinescu-Onciul <[email protected]>
Committer: Andrei Pelinescu-Onciul <[email protected]>
Date:   Thu Oct  1 01:16:08 2009 +0200

permissions(s): gcc 2.9x fixes: 0-len arrays & anonymous unions

- replaced flexible arrays (array[]) in structs with 0 length
  arrays (array[0]). Flexible array members are supported in C99,
  but not by gcc 2.9x.
- anonymous union members cannot be accessed when compiling with
  gcc 2.9x.

---

 modules_s/permissions/ip_tree.h     |    2 +-
 modules_s/permissions/permissions.c |   36 +++++++++++++++++-----------------
 2 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/modules_s/permissions/ip_tree.h b/modules_s/permissions/ip_tree.h
index 15b7bb9..1b3abc1 100644
--- a/modules_s/permissions/ip_tree.h
+++ b/modules_s/permissions/ip_tree.h
@@ -88,7 +88,7 @@
 struct ip_tree_leaf {
        unsigned int prefix_match_len;  /* next prefix_match_len must be equal 
to next bit in IP address being compared */
        struct ip_tree_leaf *next[2];    /* tree goes on in leaf based on first 
bit following prefix_match, if next[0] && next[1] are null then IP matches - 
it's subnet address */
-       unsigned char prefix_match[];  /* match_bits div 8 + 1, the same 
representation as ip address */
+       unsigned char prefix_match[0]; /* match_bits div 8 + 1, the same 
representation as ip address */
 };
 
 struct ip_tree_find {
diff --git a/modules_s/permissions/permissions.c 
b/modules_s/permissions/permissions.c
index fb6d606..2ce457d 100644
--- a/modules_s/permissions/permissions.c
+++ b/modules_s/permissions/permissions.c
@@ -574,7 +574,7 @@ struct ip_set_param {
                struct {
                        struct ip_set_list_item *ip_set;
                } global;                       
-       };
+       }u;
 };
 
 #define MODULE_NAME "permissions"
@@ -621,7 +621,7 @@ static int w_ip_is_trusted(struct sip_msg* msg, char* 
_ip_set, char* _ip) {
        int kind;
        kind = ((struct ip_set_param*)_ip_set)->kind;
        if (kind == IP_SET_PARAM_KIND_LOCAL) {
-               if (get_str_fparam(&ip_set_s, msg, ((struct 
ip_set_param*)_ip_set)->local.fparam) < 0) {
+               if (get_str_fparam(&ip_set_s, msg, ((struct 
ip_set_param*)_ip_set)->u.local.fparam) < 0) {
                    ERR(MODULE_NAME": ip_is_trusted: Error while obtaining 
ip_set parameter value\n");
                        return -1;
                }
@@ -634,10 +634,10 @@ static int w_ip_is_trusted(struct sip_msg* msg, char* 
_ip_set, char* _ip) {
                        kind = IP_SET_PARAM_KIND_GLOBAL;
                        goto force_global;
                }               
-               ip_set = &((struct ip_set_param*)_ip_set)->local.ip_set;
+               ip_set = &((struct ip_set_param*)_ip_set)->u.local.ip_set;
        }
        else {
-               isli = ((struct ip_set_param*)_ip_set)->global.ip_set;
+               isli = ((struct ip_set_param*)_ip_set)->u.global.ip_set;
        force_global:
                if (!isli->ip_set) return -1; /* empty ip set */
                
@@ -693,28 +693,28 @@ static int w_ip_is_trusted(struct sip_msg* msg, char* 
_ip_set, char* _ip) {
 
        /* test if ip_set string has changed since last call */
        if (kind == IP_SET_PARAM_KIND_LOCAL) {
-               if (((struct ip_set_param*)_ip_set)->local.s.len != 
ip_set_s.len || 
-                       memcmp(((struct ip_set_param*)_ip_set)->local.s.s, 
ip_set_s.s, ip_set_s.len) != 0) {
+               if (((struct ip_set_param*)_ip_set)->u.local.s.len != 
ip_set_s.len || 
+                       memcmp(((struct ip_set_param*)_ip_set)->u.local.s.s, 
ip_set_s.s, ip_set_s.len) != 0) {
 
                        ip_set_init(&new_ip_set, 0);
                        if (ip_set_add_list(&new_ip_set, ip_set_s) < 0) {
                                ip_set_destroy(&new_ip_set);
                                return -1;
                        };
-                       if (((struct ip_set_param*)_ip_set)->local.sz < 
ip_set_s.len) {
+                       if (((struct ip_set_param*)_ip_set)->u.local.sz < 
ip_set_s.len) {
                                void *p;
-                               p = pkg_realloc(((struct 
ip_set_param*)_ip_set)->local.s.s, ip_set_s.len);
+                               p = pkg_realloc(((struct 
ip_set_param*)_ip_set)->u.local.s.s, ip_set_s.len);
                                if (!p) {
                                        ip_set_destroy(&new_ip_set);
                                        return E_OUT_OF_MEM;
                                }
-                               ((struct ip_set_param*)_ip_set)->local.s.s = p; 
                
-                               ((struct ip_set_param*)_ip_set)->local.sz = 
ip_set_s.len;                       
+                               ((struct ip_set_param*)_ip_set)->u.local.s.s = 
p;                       
+                               ((struct ip_set_param*)_ip_set)->u.local.sz = 
ip_set_s.len;                     
                        }
-                       memcpy(((struct ip_set_param*)_ip_set)->local.s.s, 
ip_set_s.s, ip_set_s.len);
-                       ((struct ip_set_param*)_ip_set)->local.s.len = 
ip_set_s.len;
-                       ip_set_destroy(&((struct 
ip_set_param*)_ip_set)->local.ip_set);
-                       ((struct ip_set_param*)_ip_set)->local.ip_set = 
new_ip_set;
+                       memcpy(((struct ip_set_param*)_ip_set)->u.local.s.s, 
ip_set_s.s, ip_set_s.len);
+                       ((struct ip_set_param*)_ip_set)->u.local.s.len = 
ip_set_s.len;
+                       ip_set_destroy(&((struct 
ip_set_param*)_ip_set)->u.local.ip_set);
+                       ((struct ip_set_param*)_ip_set)->u.local.ip_set = 
new_ip_set;
                }
        }
 /* ip_set_print(stderr, &ip_set); */
@@ -740,8 +740,8 @@ static int fixup_ip_is_trusted(void** param, int param_no) {
                s.len = strlen(s.s);
 
                if (is_ip_set_name(&s)) {
-                       p->global.ip_set = ip_set_list_find_by_name(s);
-                       if (!p->global.ip_set) {
+                       p->u.global.ip_set = ip_set_list_find_by_name(s);
+                       if (!p->u.global.ip_set) {
                                ERR(MODULE_NAME": fixup_ip_is_trusted: ip set 
'%.*s' is not declared\n", s.len, s.s);                   
                                goto err;
                        }
@@ -749,8 +749,8 @@ static int fixup_ip_is_trusted(void** param, int param_no) {
                } else {
                        ret = fixup_var_str_12(param, param_no);
                        if (ret < 0) goto err;
-                       ip_set_init(&p->local.ip_set, 0);
-                       p->local.fparam = *param;
+                       ip_set_init(&p->u.local.ip_set, 0);
+                       p->u.local.fparam = *param;
                        *param = p;
                        p->kind = IP_SET_PARAM_KIND_LOCAL;
                }


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

Reply via email to