diff --git a/client.c b/client.c index ea83702..5262042 100644 --- a/client.c +++ b/client.c @@ -971,11 +971,9 @@ process_cmd_add_server_or_peer(CMD_Request *msg, char *line) switch (status) { case CPS_Success: if (DNS_Name2IPAddress(data.name, &ip_addr) != DNS_Success) { - free(data.name); fprintf(stderr, "Invalid host/IP address\n"); break; } - free(data.name); if (data.params.min_stratum != SRC_DEFAULT_MINSTRATUM) { fprintf(stderr, "Option minstratum not supported\n"); diff --git a/cmdparse.c b/cmdparse.c index a6f1efa..411f78a 100644 --- a/cmdparse.c +++ b/cmdparse.c @@ -42,7 +42,7 @@ CPS_Status CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) { char *hostname, *cmd; - int ok, n, done; + int n, done; CPS_Status result; src->port = SRC_DEFAULT_PORT; @@ -67,10 +67,10 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) if (!*hostname) { result = CPS_BadHost; - ok = 0; } else { + src->name = hostname; + /* Parse subfields */ - ok = 1; done = 0; do { cmd = line; @@ -80,7 +80,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) if (!strcasecmp(cmd, "port")) { if (sscanf(line, "%hu%n", &src->port, &n) != 1) { result = CPS_BadPort; - ok = 0; done = 1; } else { line += n; @@ -88,7 +87,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) } else if (!strcasecmp(cmd, "minpoll")) { if (sscanf(line, "%d%n", &src->params.minpoll, &n) != 1) { result = CPS_BadMinpoll; - ok = 0; done = 1; } else { line += n; @@ -96,7 +94,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) } else if (!strcasecmp(cmd, "maxpoll")) { if (sscanf(line, "%d%n", &src->params.maxpoll, &n) != 1) { result = CPS_BadMaxpoll; - ok = 0; done = 1; } else { line += n; @@ -104,7 +101,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) } else if (!strcasecmp(cmd, "presend")) { if (sscanf(line, "%d%n", &src->params.presend_minpoll, &n) != 1) { result = CPS_BadPresend; - ok = 0; done = 1; } else { line += n; @@ -112,7 +108,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) } else if (!strcasecmp(cmd, "maxdelaydevratio")) { if (sscanf(line, "%lf%n", &src->params.max_delay_dev_ratio, &n) != 1) { result = CPS_BadMaxdelaydevratio; - ok = 0; done = 1; } else { line += n; @@ -120,7 +115,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) } else if (!strcasecmp(cmd, "maxdelayratio")) { if (sscanf(line, "%lf%n", &src->params.max_delay_ratio, &n) != 1) { result = CPS_BadMaxdelayratio; - ok = 0; done = 1; } else { line += n; @@ -128,7 +122,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) } else if (!strcasecmp(cmd, "maxdelay")) { if (sscanf(line, "%lf%n", &src->params.max_delay, &n) != 1) { result = CPS_BadMaxdelay; - ok = 0; done = 1; } else { line += n; @@ -137,7 +130,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) if (sscanf(line, "%lu%n", &src->params.authkey, &n) != 1 || src->params.authkey == INACTIVE_AUTHKEY) { result = CPS_BadKey; - ok = 0; done = 1; } else { line += n; @@ -154,7 +146,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) } else if (!strcasecmp(cmd, "minstratum")) { if (sscanf(line, "%d%n", &src->params.min_stratum, &n) != 1) { result = CPS_BadMinstratum; - ok = 0; done = 1; } else { line += n; @@ -163,7 +154,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) } else if (!strcasecmp(cmd, "polltarget")) { if (sscanf(line, "%d%n", &src->params.poll_target, &n) != 1) { result = CPS_BadPolltarget; - ok = 0; done = 1; } else { line += n; @@ -177,7 +167,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) } else { result = CPS_BadOption; - ok = 0; done = 1; } } else { @@ -186,12 +175,7 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src) } while (!done); } - if (ok) { - src->name = strdup(hostname); - } - return result; - } /* ================================================== */ diff --git a/conf.c b/conf.c index 0624157..240b56b 100644 --- a/conf.c +++ b/conf.c @@ -529,6 +529,7 @@ parse_source(char *line, NTP_Source_Type type) switch (status) { case CPS_Success: + ntp_sources[n_ntp_sources].params.name = Strdup(ntp_sources[n_ntp_sources].params.name); n_ntp_sources++; break; case CPS_BadOption: