From a335ac556a8dbcd5f3de1d301afef9859ba26132 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Thu, 19 Apr 2018 16:35:11 +0200 Subject: [PATCH] phc2sys: fix PPS mode with no source clock. When using a PPS source with no source clock specified with the -s option, avoid referencing a NULL pointer and using CLOCK_INVALID in system calls. Signed-off-by: Miroslav Lichvar --- phc2sys.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/phc2sys.c b/phc2sys.c index 00090cc..0742393 100644 --- a/phc2sys.c +++ b/phc2sys.c @@ -221,7 +221,7 @@ static struct clock *clock_add(struct node *node, char *device) c->clkid = clkid; c->phc_index = phc_index; c->servo_state = SERVO_UNLOCKED; - c->device = strdup(device); + c->device = device ? strdup(device) : NULL; if (c->clkid == CLOCK_REALTIME) { c->source_label = "sys"; @@ -249,9 +249,10 @@ static struct clock *clock_add(struct node *node, char *device) } } - c->servo = servo_add(node, c); + if (clkid != CLOCK_INVALID) + c->servo = servo_add(node, c); - if (clkid != CLOCK_REALTIME) + if (clkid != CLOCK_INVALID && clkid != CLOCK_REALTIME) c->sysoff_supported = (SYSOFF_SUPPORTED == sysoff_probe(CLOCKID_TO_FD(clkid), node->phc_readings));