From 8a3f999718ef2f92cbe2568fc69b13378ec34416 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zden=C4=9Bk=20=C5=A0ustr?= Date: Mon, 3 Sep 2012 10:09:59 +0000 Subject: [PATCH] Simplified mapping list construction. --- org.glite.lb.server/src/bkserverd.c | 5 +++-- org.glite.lb.server/src/lb_authz.c | 29 ++++++++++------------------- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/org.glite.lb.server/src/bkserverd.c b/org.glite.lb.server/src/bkserverd.c index 3bd9925..7655638 100644 --- a/org.glite.lb.server/src/bkserverd.c +++ b/org.glite.lb.server/src/bkserverd.c @@ -1122,9 +1122,10 @@ int bk_handle_connection(int conn, struct timeval *timeout, void *data) else ctx->html_header_file = NULL; ctx->id_mapping.num = id_mapping.num; + ctx->id_mapping.rules = (_edg_wll_mapping_rule*)malloc(ctx->id_mapping.num * sizeof(_edg_wll_mapping_rule)); for ( i = 0; i < ctx->id_mapping.num; i++ ) { - ctx->id_mapping.rules[i]->a = strdup(id_mapping.rules[i]->a); - ctx->id_mapping.rules[i]->b = strdup(id_mapping.rules[i]->b); + ctx->id_mapping.rules[i].a = strdup(id_mapping.rules[i].a); + ctx->id_mapping.rules[i].b = strdup(id_mapping.rules[i].b); } gettimeofday(&conn_start, 0); diff --git a/org.glite.lb.server/src/lb_authz.c b/org.glite.lb.server/src/lb_authz.c index ce9e53b..42e8c17 100644 --- a/org.glite.lb.server/src/lb_authz.c +++ b/org.glite.lb.server/src/lb_authz.c @@ -1237,11 +1237,11 @@ equal_mapped(const char *a, const char *b, struct _edg_wll_id_mapping *mapping) return 0; for (i = 0; i < mapping->num; i++) { - if (edg_wll_gss_equal_subj(a, mapping->rules[i]->a) && - edg_wll_gss_equal_subj(b, mapping->rules[i]->b)) + if (edg_wll_gss_equal_subj(a, mapping->rules[i].a) && + edg_wll_gss_equal_subj(b, mapping->rules[i].b)) return 1; - if (edg_wll_gss_equal_subj(a, mapping->rules[i]->b) && - edg_wll_gss_equal_subj(b, mapping->rules[i]->a)) + if (edg_wll_gss_equal_subj(a, mapping->rules[i].b) && + edg_wll_gss_equal_subj(b, mapping->rules[i].a)) return 1; } return 0; @@ -1300,7 +1300,6 @@ parse_gridmap(edg_wll_Context ctx, char line[4096]; char *p, *a, *b; int ret; - struct _edg_wll_mapping_rule *rule = NULL, **tmp; fd = fopen(file, "r"); if (fd == NULL) @@ -1330,26 +1329,18 @@ parse_gridmap(edg_wll_Context ctx, p++; b = p; - rule = malloc(sizeof(*rule)); - if (rule == NULL) { - ret = edg_wll_SetError(ctx, ENOMEM, "Not enough memory"); - goto end; - } - rule->a = strdup(a); - rule->b = strdup(b); - if (rule->a == NULL || rule->b == NULL) { + + mapping->rules = realloc(mapping->rules, (mapping->num+1) * sizeof(_edg_wll_mapping_rule)); + if (mapping->rules == NULL) { ret = edg_wll_SetError(ctx, ENOMEM, "Not enough memory"); goto end; } - - tmp = realloc(mapping->rules, (mapping->num+1) * sizeof(*tmp)); - if (tmp == NULL) { + if (!(mapping->rules[mapping->num].a = strdup(a)) || + !(mapping->rules[mapping->num].b = strdup(b))) { ret = edg_wll_SetError(ctx, ENOMEM, "Not enough memory"); goto end; } - mapping->rules = tmp; - mapping->rules[mapping->num++] = rule; - rule = NULL; + mapping->num++; } ret = 0; -- 1.8.2.3