X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=common%2Ftr_config_realms.c;h=60bae00e986fae8d7c74c3ccc2c6d6be6326a3c4;hb=a445d02a6c0b4c8c41276d511111ccf0c5003f43;hp=2f6fa095044bfd266239755b8488adaa29278450;hpb=b9adb7a0845273cab35025a347c7213553aa154a;p=trust_router.git diff --git a/common/tr_config_realms.c b/common/tr_config_realms.c index 2f6fa09..60bae00 100644 --- a/common/tr_config_realms.c +++ b/common/tr_config_realms.c @@ -55,30 +55,45 @@ TR_AAA_SERVER *tr_cfg_parse_one_aaa_server(TALLOC_CTX *mem_ctx, json_t *jaddr, TR_CFG_RC *rc) { + TALLOC_CTX *tmp_ctx = talloc_new(NULL); TR_AAA_SERVER *aaa = NULL; - TR_NAME *name=NULL; if ((!jaddr) || (!json_is_string(jaddr))) { tr_debug("tr_cfg_parse_one_aaa_server: Bad parameters."); *rc = TR_CFG_BAD_PARAMS; - return NULL; + goto cleanup; } - name=tr_new_name(json_string_value(jaddr)); - if (name==NULL) { - tr_debug("tr_cfg_parse_one_aaa_server: Out of memory allocating hostname."); + aaa = tr_aaa_server_from_string(mem_ctx, json_string_value(jaddr)); + if (aaa == NULL) { + tr_debug("tr_cfg_parse_one_aaa_server: Out of memory allocating AAA server."); *rc = TR_CFG_NOMEM; - return NULL; + goto cleanup; } - aaa=tr_aaa_server_new(mem_ctx, name); - if (aaa==NULL) { - tr_free_name(name); - tr_debug("tr_cfg_parse_one_aaa_server: Out of memory allocating AAA server."); - *rc = TR_CFG_NOMEM; - return NULL; + if (tr_aaa_server_get_hostname(aaa)->len == 0) { + tr_debug("tr_cfg_parse_one_aaa_server: Invalid hostname for AAA server (%s)", + json_string_value(jaddr)); + *rc = TR_CFG_NOPARSE; + goto cleanup; + } + + if ((tr_aaa_server_get_port(aaa) <= 0) + || (tr_aaa_server_get_port(aaa) > 65535)) { + tr_debug("tr_cfg_parse_one_aaa_server: Invalid AAA server port (%s)", + json_string_value(jaddr)); + *rc = TR_CFG_NOPARSE; + goto cleanup; } + /* success ! */ + *rc = TR_CFG_SUCCESS; + talloc_steal(mem_ctx, aaa); + +cleanup: + if (*rc != TR_CFG_SUCCESS) + aaa = NULL; + talloc_free(tmp_ctx); return aaa; }