Don't limit refclock driver name to 4 chars
This commit is contained in:
parent
0bf34725e3
commit
31ba3144c8
3 changed files with 20 additions and 8 deletions
18
conf.c
18
conf.c
|
@ -471,7 +471,7 @@ parse_refclock(const char *line)
|
||||||
unsigned long ref_id, lock_ref_id;
|
unsigned long ref_id, lock_ref_id;
|
||||||
double offset, delay, precision;
|
double offset, delay, precision;
|
||||||
const char *tmp;
|
const char *tmp;
|
||||||
char name[5], cmd[10 + 1], *param;
|
char cmd[10 + 1], *name, *param;
|
||||||
unsigned char ref[5];
|
unsigned char ref[5];
|
||||||
SRC_SelectOption sel_option;
|
SRC_SelectOption sel_option;
|
||||||
|
|
||||||
|
@ -490,11 +490,20 @@ parse_refclock(const char *line)
|
||||||
lock_ref_id = 0;
|
lock_ref_id = 0;
|
||||||
sel_option = SRC_SelectNormal;
|
sel_option = SRC_SelectNormal;
|
||||||
|
|
||||||
if (sscanf(line, "%4s%n", name, &n) != 1) {
|
while (isspace(line[0]))
|
||||||
|
line++;
|
||||||
|
tmp = line;
|
||||||
|
while (line[0] != '\0' && !isspace(line[0]))
|
||||||
|
line++;
|
||||||
|
|
||||||
|
if (line == tmp) {
|
||||||
LOG(LOGS_WARN, LOGF_Configure, "Could not read refclock driver name at line %d", line_number);
|
LOG(LOGS_WARN, LOGF_Configure, "Could not read refclock driver name at line %d", line_number);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
line += n;
|
|
||||||
|
name = MallocArray(char, 1 + line - tmp);
|
||||||
|
strncpy(name, tmp, line - tmp);
|
||||||
|
name[line - tmp] = '\0';
|
||||||
|
|
||||||
while (isspace(line[0]))
|
while (isspace(line[0]))
|
||||||
line++;
|
line++;
|
||||||
|
@ -504,6 +513,7 @@ parse_refclock(const char *line)
|
||||||
|
|
||||||
if (line == tmp) {
|
if (line == tmp) {
|
||||||
LOG(LOGS_WARN, LOGF_Configure, "Could not read refclock parameter at line %d", line_number);
|
LOG(LOGS_WARN, LOGF_Configure, "Could not read refclock parameter at line %d", line_number);
|
||||||
|
Free(name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -558,7 +568,7 @@ parse_refclock(const char *line)
|
||||||
line += n;
|
line += n;
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy(refclock_sources[i].driver_name, name, 4);
|
refclock_sources[i].driver_name = name;
|
||||||
refclock_sources[i].driver_parameter = param;
|
refclock_sources[i].driver_parameter = param;
|
||||||
refclock_sources[i].driver_poll = dpoll;
|
refclock_sources[i].driver_poll = dpoll;
|
||||||
refclock_sources[i].poll = poll;
|
refclock_sources[i].poll = poll;
|
||||||
|
|
|
@ -150,14 +150,14 @@ RCL_AddRefclock(RefclockParameters *params)
|
||||||
if (n_sources == MAX_RCL_SOURCES)
|
if (n_sources == MAX_RCL_SOURCES)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (strncmp(params->driver_name, "SHM", 4) == 0) {
|
if (strcmp(params->driver_name, "SHM") == 0) {
|
||||||
inst->driver = &RCL_SHM_driver;
|
inst->driver = &RCL_SHM_driver;
|
||||||
inst->precision = 1e-6;
|
inst->precision = 1e-6;
|
||||||
} else if (strncmp(params->driver_name, "SOCK", 4) == 0) {
|
} else if (strcmp(params->driver_name, "SOCK") == 0) {
|
||||||
inst->driver = &RCL_SOCK_driver;
|
inst->driver = &RCL_SOCK_driver;
|
||||||
inst->precision = 1e-9;
|
inst->precision = 1e-9;
|
||||||
pps_source = 1;
|
pps_source = 1;
|
||||||
} else if (strncmp(params->driver_name, "PPS", 4) == 0) {
|
} else if (strcmp(params->driver_name, "PPS") == 0) {
|
||||||
inst->driver = &RCL_PPS_driver;
|
inst->driver = &RCL_PPS_driver;
|
||||||
inst->precision = 1e-9;
|
inst->precision = 1e-9;
|
||||||
pps_source = 1;
|
pps_source = 1;
|
||||||
|
@ -244,6 +244,8 @@ RCL_AddRefclock(RefclockParameters *params)
|
||||||
#endif
|
#endif
|
||||||
n_sources++;
|
n_sources++;
|
||||||
|
|
||||||
|
Free(params->driver_name);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#include "sources.h"
|
#include "sources.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char driver_name[4];
|
char *driver_name;
|
||||||
char *driver_parameter;
|
char *driver_parameter;
|
||||||
int driver_poll;
|
int driver_poll;
|
||||||
int poll;
|
int poll;
|
||||||
|
|
Loading…
Reference in a new issue