From: Arran Cudbard-Bell Date: Fri, 25 Sep 2020 20:40:19 +0000 (-0500) Subject: Pretty sure the first version of this was fine too (stupid gcc) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4a2039fb6cefa11ead93dab778adea19aa239edf;p=thirdparty%2Ffreeradius-server.git Pretty sure the first version of this was fine too (stupid gcc) --- diff --git a/src/lib/unlang/compile.c b/src/lib/unlang/compile.c index ff261be2945..4858172e397 100644 --- a/src/lib/unlang/compile.c +++ b/src/lib/unlang/compile.c @@ -2684,37 +2684,36 @@ static unlang_t *compile_subrequest(unlang_t *parent, unlang_compile_t *unlang_c * subrequests can specify the dictionary if they want to. */ name2 = cf_section_name2(cs); - if (!name2) { - dict = unlang_ctx->rules->dict_def; - namespace = fr_dict_root(dict)->name; - packet_name = unlang_ctx->section_name2; - goto resolve; - } + if (name2) { + p = strchr(name2, '.'); + if (!p) { + dict = unlang_ctx->rules->dict_def; + namespace = fr_dict_root(dict)->name; + packet_name = name2; - p = strchr(name2, '.'); - if (!p) { - dict = unlang_ctx->rules->dict_def; - namespace = fr_dict_root(dict)->name; - packet_name = name2; + } else { + if ((size_t) (p - name2) >= sizeof(buffer)) { + cf_log_err(cs, "Unknown namespace '%.*s'", (int) (p - name2), name2); + return NULL; + } - } else { - if ((size_t) (p - name2) >= sizeof(buffer)) { - cf_log_err(cs, "Unknown namespace '%.*s'", (int) (p - name2), name2); - return NULL; - } + memcpy(buffer, name2, p - name2); + buffer[p - name2] = '\0'; - memcpy(buffer, name2, p - name2); - buffer[p - name2] = '\0'; + dict = fr_dict_by_protocol_name(buffer); + if (!dict) { + cf_log_err(cs, "Unknown namespace '%.*s'", (int) (p - name2), name2); + return NULL; + } - dict = fr_dict_by_protocol_name(buffer); - if (!dict) { - cf_log_err(cs, "Unknown namespace '%.*s'", (int) (p - name2), name2); - return NULL; + namespace = buffer; + p++; + packet_name = p; // need to quiet a stupid compiler } - - namespace = buffer; - p++; - packet_name = p; // need to quiet a stupid compiler + } else { + dict = unlang_ctx->rules->dict_def; + namespace = fr_dict_root(dict)->name; + packet_name = unlang_ctx->section_name2; } da = fr_dict_attr_by_name(dict, "Packet-Type");