cmdparse: don't duplicate hostname in CPS_ParseNTPSourceAdd()
Let the caller duplicate the string if needed.
This commit is contained in:
parent
336473398a
commit
d466390233
3 changed files with 4 additions and 21 deletions
2
client.c
2
client.c
|
@ -971,11 +971,9 @@ process_cmd_add_server_or_peer(CMD_Request *msg, char *line)
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case CPS_Success:
|
case CPS_Success:
|
||||||
if (DNS_Name2IPAddress(data.name, &ip_addr) != DNS_Success) {
|
if (DNS_Name2IPAddress(data.name, &ip_addr) != DNS_Success) {
|
||||||
free(data.name);
|
|
||||||
fprintf(stderr, "Invalid host/IP address\n");
|
fprintf(stderr, "Invalid host/IP address\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
free(data.name);
|
|
||||||
|
|
||||||
if (data.params.min_stratum != SRC_DEFAULT_MINSTRATUM) {
|
if (data.params.min_stratum != SRC_DEFAULT_MINSTRATUM) {
|
||||||
fprintf(stderr, "Option minstratum not supported\n");
|
fprintf(stderr, "Option minstratum not supported\n");
|
||||||
|
|
22
cmdparse.c
22
cmdparse.c
|
@ -42,7 +42,7 @@ CPS_Status
|
||||||
CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
{
|
{
|
||||||
char *hostname, *cmd;
|
char *hostname, *cmd;
|
||||||
int ok, n, done;
|
int n, done;
|
||||||
CPS_Status result;
|
CPS_Status result;
|
||||||
|
|
||||||
src->port = SRC_DEFAULT_PORT;
|
src->port = SRC_DEFAULT_PORT;
|
||||||
|
@ -67,10 +67,10 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
|
|
||||||
if (!*hostname) {
|
if (!*hostname) {
|
||||||
result = CPS_BadHost;
|
result = CPS_BadHost;
|
||||||
ok = 0;
|
|
||||||
} else {
|
} else {
|
||||||
|
src->name = hostname;
|
||||||
|
|
||||||
/* Parse subfields */
|
/* Parse subfields */
|
||||||
ok = 1;
|
|
||||||
done = 0;
|
done = 0;
|
||||||
do {
|
do {
|
||||||
cmd = line;
|
cmd = line;
|
||||||
|
@ -80,7 +80,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
if (!strcasecmp(cmd, "port")) {
|
if (!strcasecmp(cmd, "port")) {
|
||||||
if (sscanf(line, "%hu%n", &src->port, &n) != 1) {
|
if (sscanf(line, "%hu%n", &src->port, &n) != 1) {
|
||||||
result = CPS_BadPort;
|
result = CPS_BadPort;
|
||||||
ok = 0;
|
|
||||||
done = 1;
|
done = 1;
|
||||||
} else {
|
} else {
|
||||||
line += n;
|
line += n;
|
||||||
|
@ -88,7 +87,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
} else if (!strcasecmp(cmd, "minpoll")) {
|
} else if (!strcasecmp(cmd, "minpoll")) {
|
||||||
if (sscanf(line, "%d%n", &src->params.minpoll, &n) != 1) {
|
if (sscanf(line, "%d%n", &src->params.minpoll, &n) != 1) {
|
||||||
result = CPS_BadMinpoll;
|
result = CPS_BadMinpoll;
|
||||||
ok = 0;
|
|
||||||
done = 1;
|
done = 1;
|
||||||
} else {
|
} else {
|
||||||
line += n;
|
line += n;
|
||||||
|
@ -96,7 +94,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
} else if (!strcasecmp(cmd, "maxpoll")) {
|
} else if (!strcasecmp(cmd, "maxpoll")) {
|
||||||
if (sscanf(line, "%d%n", &src->params.maxpoll, &n) != 1) {
|
if (sscanf(line, "%d%n", &src->params.maxpoll, &n) != 1) {
|
||||||
result = CPS_BadMaxpoll;
|
result = CPS_BadMaxpoll;
|
||||||
ok = 0;
|
|
||||||
done = 1;
|
done = 1;
|
||||||
} else {
|
} else {
|
||||||
line += n;
|
line += n;
|
||||||
|
@ -104,7 +101,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
} else if (!strcasecmp(cmd, "presend")) {
|
} else if (!strcasecmp(cmd, "presend")) {
|
||||||
if (sscanf(line, "%d%n", &src->params.presend_minpoll, &n) != 1) {
|
if (sscanf(line, "%d%n", &src->params.presend_minpoll, &n) != 1) {
|
||||||
result = CPS_BadPresend;
|
result = CPS_BadPresend;
|
||||||
ok = 0;
|
|
||||||
done = 1;
|
done = 1;
|
||||||
} else {
|
} else {
|
||||||
line += n;
|
line += n;
|
||||||
|
@ -112,7 +108,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
} else if (!strcasecmp(cmd, "maxdelaydevratio")) {
|
} else if (!strcasecmp(cmd, "maxdelaydevratio")) {
|
||||||
if (sscanf(line, "%lf%n", &src->params.max_delay_dev_ratio, &n) != 1) {
|
if (sscanf(line, "%lf%n", &src->params.max_delay_dev_ratio, &n) != 1) {
|
||||||
result = CPS_BadMaxdelaydevratio;
|
result = CPS_BadMaxdelaydevratio;
|
||||||
ok = 0;
|
|
||||||
done = 1;
|
done = 1;
|
||||||
} else {
|
} else {
|
||||||
line += n;
|
line += n;
|
||||||
|
@ -120,7 +115,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
} else if (!strcasecmp(cmd, "maxdelayratio")) {
|
} else if (!strcasecmp(cmd, "maxdelayratio")) {
|
||||||
if (sscanf(line, "%lf%n", &src->params.max_delay_ratio, &n) != 1) {
|
if (sscanf(line, "%lf%n", &src->params.max_delay_ratio, &n) != 1) {
|
||||||
result = CPS_BadMaxdelayratio;
|
result = CPS_BadMaxdelayratio;
|
||||||
ok = 0;
|
|
||||||
done = 1;
|
done = 1;
|
||||||
} else {
|
} else {
|
||||||
line += n;
|
line += n;
|
||||||
|
@ -128,7 +122,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
} else if (!strcasecmp(cmd, "maxdelay")) {
|
} else if (!strcasecmp(cmd, "maxdelay")) {
|
||||||
if (sscanf(line, "%lf%n", &src->params.max_delay, &n) != 1) {
|
if (sscanf(line, "%lf%n", &src->params.max_delay, &n) != 1) {
|
||||||
result = CPS_BadMaxdelay;
|
result = CPS_BadMaxdelay;
|
||||||
ok = 0;
|
|
||||||
done = 1;
|
done = 1;
|
||||||
} else {
|
} else {
|
||||||
line += n;
|
line += n;
|
||||||
|
@ -137,7 +130,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
if (sscanf(line, "%lu%n", &src->params.authkey, &n) != 1 ||
|
if (sscanf(line, "%lu%n", &src->params.authkey, &n) != 1 ||
|
||||||
src->params.authkey == INACTIVE_AUTHKEY) {
|
src->params.authkey == INACTIVE_AUTHKEY) {
|
||||||
result = CPS_BadKey;
|
result = CPS_BadKey;
|
||||||
ok = 0;
|
|
||||||
done = 1;
|
done = 1;
|
||||||
} else {
|
} else {
|
||||||
line += n;
|
line += n;
|
||||||
|
@ -154,7 +146,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
} else if (!strcasecmp(cmd, "minstratum")) {
|
} else if (!strcasecmp(cmd, "minstratum")) {
|
||||||
if (sscanf(line, "%d%n", &src->params.min_stratum, &n) != 1) {
|
if (sscanf(line, "%d%n", &src->params.min_stratum, &n) != 1) {
|
||||||
result = CPS_BadMinstratum;
|
result = CPS_BadMinstratum;
|
||||||
ok = 0;
|
|
||||||
done = 1;
|
done = 1;
|
||||||
} else {
|
} else {
|
||||||
line += n;
|
line += n;
|
||||||
|
@ -163,7 +154,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
} else if (!strcasecmp(cmd, "polltarget")) {
|
} else if (!strcasecmp(cmd, "polltarget")) {
|
||||||
if (sscanf(line, "%d%n", &src->params.poll_target, &n) != 1) {
|
if (sscanf(line, "%d%n", &src->params.poll_target, &n) != 1) {
|
||||||
result = CPS_BadPolltarget;
|
result = CPS_BadPolltarget;
|
||||||
ok = 0;
|
|
||||||
done = 1;
|
done = 1;
|
||||||
} else {
|
} else {
|
||||||
line += n;
|
line += n;
|
||||||
|
@ -177,7 +167,6 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
result = CPS_BadOption;
|
result = CPS_BadOption;
|
||||||
ok = 0;
|
|
||||||
done = 1;
|
done = 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -186,12 +175,7 @@ CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src)
|
||||||
} while (!done);
|
} while (!done);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ok) {
|
|
||||||
src->name = strdup(hostname);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ================================================== */
|
/* ================================================== */
|
||||||
|
|
1
conf.c
1
conf.c
|
@ -529,6 +529,7 @@ parse_source(char *line, NTP_Source_Type type)
|
||||||
|
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case CPS_Success:
|
case CPS_Success:
|
||||||
|
ntp_sources[n_ntp_sources].params.name = Strdup(ntp_sources[n_ntp_sources].params.name);
|
||||||
n_ntp_sources++;
|
n_ntp_sources++;
|
||||||
break;
|
break;
|
||||||
case CPS_BadOption:
|
case CPS_BadOption:
|
||||||
|
|
Loading…
Reference in a new issue