Browse Source

Specify date string length in FINSH date command.

libc ctime returns a fixed 25 character string without a NULL terminator. Print it without specifying length in FINSH date command prints extra contents and could potentially be dangerous.
zhiweih 4 years ago
parent
commit
814b646d17
1 changed files with 2 additions and 2 deletions
  1. 2 2
      components/drivers/rtc/rtc.c

+ 2 - 2
components/drivers/rtc/rtc.c

@@ -179,7 +179,7 @@ void list_date(void)
     time_t now;
     time_t now;
 
 
     now = time(RT_NULL);
     now = time(RT_NULL);
-    rt_kprintf("%s\n", ctime(&now));
+    rt_kprintf("%.*s\n", 25, ctime(&now));
 }
 }
 FINSH_FUNCTION_EXPORT(list_date, show date and time.)
 FINSH_FUNCTION_EXPORT(list_date, show date and time.)
 
 
@@ -194,7 +194,7 @@ static void date(uint8_t argc, char **argv)
         time_t now;
         time_t now;
         /* output current time */
         /* output current time */
         now = time(RT_NULL);
         now = time(RT_NULL);
-        rt_kprintf("%s", ctime(&now));
+        rt_kprintf("%.*s", 25, ctime(&now));
     }
     }
     else if (argc >= 7)
     else if (argc >= 7)
     {
     {