]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
conf: free refclock strings on exit
authorMiroslav Lichvar <mlichvar@redhat.com>
Wed, 7 Oct 2020 11:18:34 +0000 (13:18 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Wed, 7 Oct 2020 15:27:34 +0000 (17:27 +0200)
Free driver name and parameter of configured refclocks in helpers on
exit.

conf.c
refclock.c

diff --git a/conf.c b/conf.c
index 14f0efdced69a850c539a53739f38692777a1336..3f278702a2c4976594a00ca2e3c5309f961db85d 100644 (file)
--- a/conf.c
+++ b/conf.c
@@ -422,6 +422,10 @@ CNF_Finalise(void)
     Free(((NTP_Source *)ARR_GetElement(ntp_sources, i))->params.name);
   for (i = 0; i < ARR_GetSize(ntp_source_dirs); i++)
     Free(*(char **)ARR_GetElement(ntp_source_dirs, i));
+  for (i = 0; i < ARR_GetSize(refclock_sources); i++) {
+    Free(((RefclockParameters *)ARR_GetElement(refclock_sources, i))->driver_name);
+    Free(((RefclockParameters *)ARR_GetElement(refclock_sources, i))->driver_parameter);
+  }
 
   ARR_DestroyInstance(init_sources);
   ARR_DestroyInstance(ntp_sources);
@@ -1839,10 +1843,14 @@ CNF_AddSources(void)
 void
 CNF_AddRefclocks(void)
 {
+  RefclockParameters *refclock;
   unsigned int i;
 
   for (i = 0; i < ARR_GetSize(refclock_sources); i++) {
-    RCL_AddRefclock((RefclockParameters *)ARR_GetElement(refclock_sources, i));
+    refclock = ARR_GetElement(refclock_sources, i);
+    RCL_AddRefclock(refclock);
+    Free(refclock->driver_name);
+    Free(refclock->driver_parameter);
   }
 
   ARR_SetSize(refclock_sources, 0);
index 44df2c6992c57aaf0a469cb48d8912b0af4125cd..70d46ee4fb55d1136a719216eae670e898f2af0d 100644 (file)
@@ -181,7 +181,7 @@ RCL_AddRefclock(RefclockParameters *params)
     LOG_FATAL("refclock tai option requires leapsectz");
 
   inst->data = NULL;
-  inst->driver_parameter = params->driver_parameter;
+  inst->driver_parameter = Strdup(params->driver_parameter);
   inst->driver_parameter_length = 0;
   inst->driver_poll = params->driver_poll;
   inst->poll = params->poll;
@@ -261,8 +261,6 @@ RCL_AddRefclock(RefclockParameters *params)
       params->driver_name, UTI_RefidToString(inst->ref_id),
       inst->poll, inst->driver_poll, params->filter_length);
 
-  Free(params->driver_name);
-
   return 1;
 }