Bläddra i källkod

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 år sedan
förälder
incheckning
814b646d17
1 ändrade filer med 2 tillägg och 2 borttagningar
  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;
 
     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.)
 
@@ -194,7 +194,7 @@ static void date(uint8_t argc, char **argv)
         time_t now;
         /* output current time */
         now = time(RT_NULL);
-        rt_kprintf("%s", ctime(&now));
+        rt_kprintf("%.*s", 25, ctime(&now));
     }
     else if (argc >= 7)
     {