Merge pull request #4916 from YosysHQ/krys/fix_fst_warning

libs/fst: Fix stringop_overread warning under GCC
This commit is contained in:
Martin Povišer 2025-02-25 21:21:31 +01:00 committed by GitHub
commit 0354bd7a90
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 16 additions and 2 deletions

View File

@ -0,0 +1,10 @@
--- fstapi.cc
+++ fstapi.cc
@@ -6072,6 +6072,7 @@ for(;;)
}
wx_len = snprintf(wx_buf, 32, "r%.16g", d);
+ if (wx_len > 32 || wx_len < 0) wx_len = 32;
fstWritex(xc, wx_buf, wx_len);
}
}

View File

@ -18,3 +18,4 @@ sed -i -e 's,"fastlz.c","fastlz.cc",' *.cc *.h
patch -p0 < 00_PATCH_win_zlib.patch
patch -p0 < 00_PATCH_win_io.patch
patch -p1 < 00_PATCH_strict_alignment.patch
patch -p0 < 00_PATCH_wx_len_overread.patch

View File

@ -3907,16 +3907,18 @@ while (value)
static int fstVcdIDForFwrite(char *buf, unsigned int value)
{
char *pnt = buf;
int len = 0;
/* zero is illegal for a value...it is assumed they start at one */
while (value)
while (value && len < 14)
{
value--;
++len;
*(pnt++) = (char)('!' + value % 94);
value = value / 94;
}
return(pnt - buf);
return len;
}
@ -6070,6 +6072,7 @@ for(;;)
}
wx_len = snprintf(wx_buf, 32, "r%.16g", d);
if (wx_len > 32 || wx_len < 0) wx_len = 32;
fstWritex(xc, wx_buf, wx_len);
}
}