]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
client: report invalid values in doffset and dfreq commands
authorMiroslav Lichvar <mlichvar@redhat.com>
Wed, 3 Mar 2021 17:06:50 +0000 (18:06 +0100)
committerMiroslav Lichvar <mlichvar@redhat.com>
Thu, 4 Mar 2021 16:26:00 +0000 (17:26 +0100)
client.c

index 45239c65878394bc40911ba111b3d1d62b7fc3fb..400ec1b9c0c7d38a35b55b263c094955275d690b 100644 (file)
--- a/client.c
+++ b/client.c
@@ -987,35 +987,41 @@ process_cmd_cmdaccheck(CMD_Request *msg, char *line)
 
 /* ================================================== */
 
-static void
+static int
 process_cmd_dfreq(CMD_Request *msg, char *line)
 {
   double dfreq;
+
   msg->command = htons(REQ_DFREQ);
-  if (sscanf(line, "%lf", &dfreq) == 1) {
-    msg->data.dfreq.dfreq = UTI_FloatHostToNetwork(dfreq);
-  } else {
-    msg->data.dfreq.dfreq = UTI_FloatHostToNetwork(0.0);
+
+  if (sscanf(line, "%lf", &dfreq) != 1) {
+    LOG(LOGS_ERR, "Invalid value");
+    return 0;
   }
+
+  msg->data.dfreq.dfreq = UTI_FloatHostToNetwork(dfreq);
+  return 1;
 }
 
 /* ================================================== */
 
-static void
+static int
 process_cmd_doffset(CMD_Request *msg, char *line)
 {
   struct timeval tv;
   double doffset;
 
   msg->command = htons(REQ_DOFFSET);
-  if (sscanf(line, "%lf", &doffset) == 1) {
-    UTI_DoubleToTimeval(doffset, &tv);
-    msg->data.doffset.sec = htonl(tv.tv_sec);
-    msg->data.doffset.usec = htonl(tv.tv_usec);
-  } else {
-    msg->data.doffset.sec = htonl(0);
-    msg->data.doffset.usec = htonl(0);
+
+  if (sscanf(line, "%lf", &doffset) != 1) {
+    LOG(LOGS_ERR, "Invalid value");
+    return 0;
   }
+
+  UTI_DoubleToTimeval(doffset, &tv);
+  msg->data.doffset.sec = htonl(tv.tv_sec);
+  msg->data.doffset.usec = htonl(tv.tv_usec);
+  return 1;
 }
 
 /* ================================================== */
@@ -3267,12 +3273,12 @@ process_line(char *line)
       do_normal_submit = process_cmd_deny(&tx_message, line);
     }
   } else if (!strcmp(command, "dfreq")) {
-    process_cmd_dfreq(&tx_message, line);
+    do_normal_submit = process_cmd_dfreq(&tx_message, line);
   } else if (!strcmp(command, "dns")) {
     ret = process_cmd_dns(line);
     do_normal_submit = 0;
   } else if (!strcmp(command, "doffset")) {
-    process_cmd_doffset(&tx_message, line);
+    do_normal_submit = process_cmd_doffset(&tx_message, line);
   } else if (!strcmp(command, "dump")) {
     process_cmd_dump(&tx_message, line);
   } else if (!strcmp(command, "exit")) {