If tm->msec is negative or more than 999, stack buffer overflow happens.
Possible solution is keep msec in range [0..999].
Testing performed via Libfuzzer.
Signed-off-by: Vitaly Listratenko <[email protected]>
 
---
diff --git a/lib/timeval.c b/lib/timeval.c
index 10c1b9ca1..d29105053 100644
--- a/lib/timeval.c
+++ b/lib/timeval.c
@@ -865,7 +865,8 @@ strftime_msec(char *s, size_t max, const char *format,
        char decimals[4];
        char *p;

-        sprintf(decimals, "%03d", tm->msec);
+        int msec = tm->msec > 999 ? 999 : (tm->msec < 0 ? 0 : tm->msec);
+        sprintf(decimals, "%03d", msec);
        for (p = strchr(s, '#'); p; p = strchr(p, '#')) {
            char *d = decimals;
            while (*p == '#')  { 
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to