winedump: Increase buffer size and potential string length inoutput_spec_symbol.
Gerald Pfeifer
gerald at pfeifer.com
Sat Jan 21 10:26:42 CST 2017
This is another case where GCC 7 is going to warn:
output.c: In function ‘output_spec_symbol’:
output.c:71:28: warning: ‘%d’ directive output may be truncated writing between 1 and 11 bytes into a region of size 8 [-Wformat-truncation=]
snprintf(ord_spec, 8, "%d", sym->ordinal);
^~
output.c:71:27: note: using the range [1, -2147483648] for directive argument
snprintf(ord_spec, 8, "%d", sym->ordinal);
^~~~
output.c:71:5: note: format output between 2 and 12 bytes into a destination of size 8
snprintf(ord_spec, 8, "%d", sym->ordinal);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Addressed easy enough by increasing the size of the buffer and
the length parameter to snprintf as per the patch below.
By the way, why is parsed_symbol.ordinal a signed integer, and
not unsigned? (And related, "%d" and not "%u"?)
Gerald
Signed-off-by: Gerald Pfeifer <gerald at pfeifer.com>
---
tools/winedump/output.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/winedump/output.c b/tools/winedump/output.c
index 6c2bfae5b3..bbbb1ac039 100644
--- a/tools/winedump/output.c
+++ b/tools/winedump/output.c
@@ -62,13 +62,13 @@ void output_spec_preamble (void)
*/
void output_spec_symbol (const parsed_symbol *sym)
{
- char ord_spec[16];
+ char ord_spec[20];
assert (specfile);
assert (sym && sym->symbol);
if (sym->ordinal >= 0)
- snprintf(ord_spec, 8, "%d", sym->ordinal);
+ snprintf(ord_spec, 12, "%d", sym->ordinal);
else
{
ord_spec[0] = '@';
--
2.11.0
More information about the wine-patches
mailing list