aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-support/cpprest/cpprest-2.10.2/787.patch
blob: 359a3ba5267e464b78bd66d788341d5c8cd35ea9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
From 212536f9d66400bef4400c55efd05dd01303c035 Mon Sep 17 00:00:00 2001
From: Andreas Stieger <astieger@suse.com>
Date: Sun, 17 Jun 2018 13:00:05 +0200
Subject: [PATCH] Fix gcc8 error/warning -Werror=format-truncation=

utilities::datetime::to_string(): datetime_str and buf were oversized
for fitting into output without possible trunctation
---
 Release/src/utilities/asyncrt_utils.cpp | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/Release/src/utilities/asyncrt_utils.cpp b/Release/src/utilities/asyncrt_utils.cpp
index 0e62bdee..be38907c 100644
--- a/Release/src/utilities/asyncrt_utils.cpp
+++ b/Release/src/utilities/asyncrt_utils.cpp
@@ -691,12 +691,13 @@ utility::string_t datetime::to_string(date_format format) const
     {
         // Append fractional second, which is a 7-digit value with no trailing zeros
         // This way, '1200' becomes '00012'
-        char buf[9] = { 0 };
+        const int max_frac_length = 8;
+        char buf[max_frac_length+1] = { 0 };
         snprintf(buf, sizeof(buf), ".%07ld", (long int)frac_sec);
         // trim trailing zeros
-        for (int i = 7; buf[i] == '0'; i--) buf[i] = '\0';
+        for (int i = max_frac_length-1; buf[i] == '0'; i--) buf[i] = '\0';
         // format the datetime into a separate buffer
-        char datetime_str[max_dt_length+1] = {0};
+        char datetime_str[max_dt_length-max_frac_length-1+1] = {0};
         strftime(datetime_str, sizeof(datetime_str), "%Y-%m-%dT%H:%M:%S", &datetime);
         // now print this buffer into the output buffer
         snprintf(output, sizeof(output), "%s%sZ", datetime_str, buf);