Do not limit strings to 255 characters

This commit is contained in:
ISSOtm
2024-03-21 21:31:10 -04:00
committed by Sylvie
parent 9f239f6dcc
commit e255af9e10
25 changed files with 52 additions and 130 deletions

View File

@@ -9,7 +9,6 @@
#include <string.h>
#include "asm/fixpoint.hpp"
#include "asm/lexer.hpp" // MAXSTRLEN
#include "asm/warning.hpp"
void FormatSpec::useCharacter(int c) {
@@ -133,11 +132,6 @@ void FormatSpec::appendString(std::string &str, std::string const &value) const
str.append(padLen, ' ');
str.append(value);
}
if (str.length() > MAXSTRLEN) {
error("Formatted string value too long\n");
str.resize(MAXSTRLEN);
}
}
void FormatSpec::appendNumber(std::string &str, uint32_t value) const {
@@ -245,9 +239,4 @@ void FormatSpec::appendNumber(std::string &str, uint32_t value) const {
}
str.append(valueBuf);
}
if (str.length() > MAXSTRLEN) {
error("Formatted numeric value too long\n");
str.resize(MAXSTRLEN);
}
}

View File

@@ -1347,11 +1347,6 @@ static std::string readString(bool raw) {
}
finish:
if (yylval.length() > MAXSTRLEN) {
warning(WARNING_LONG_STR, "String constant too long\n");
yylval.resize(MAXSTRLEN);
}
lexerState->disableMacroArgs = false;
lexerState->disableInterpolation = false;
@@ -1495,11 +1490,6 @@ static void appendStringLiteral(std::string &yylval, bool raw) {
}
finish:
if (yylval.length() > MAXSTRLEN) {
warning(WARNING_LONG_STR, "String constant too long\n");
yylval.resize(MAXSTRLEN);
}
lexerState->disableMacroArgs = false;
lexerState->disableInterpolation = false;
}
@@ -1933,10 +1923,6 @@ append:
}
finish:
if (yylval.length() > MAXSTRLEN) {
warning(WARNING_LONG_STR, "Macro argument too long\n");
yylval.resize(MAXSTRLEN);
}
// Trim right whitespace
auto rightPos = std::find_if_not(yylval.rbegin(), yylval.rend(), isWhitespace);
yylval.resize(rightPos.base() - yylval.begin());

View File

@@ -1615,10 +1615,6 @@ strcat_args:
| strcat_args COMMA string {
$$ = std::move($1);
$$.append($3);
if ($$.length() > MAXSTRLEN) {
warning(WARNING_LONG_STR, "STRCAT: String too long '%s'\n", $$.c_str());
$$.resize(MAXSTRLEN);
}
}
;
@@ -2556,7 +2552,7 @@ static std::string strsubUTF8(std::string const &str, uint32_t pos, uint32_t len
uint32_t curLen = 0;
// Compute the result length in bytes.
while (ptr[index] && index - startIndex < MAXSTRLEN && curLen < len) {
while (ptr[index] && curLen < len) {
switch (decode(&state, &codep, ptr[index])) {
case 1:
errorInvalidUTF8Byte(ptr[index], "STRSUB");
@@ -2569,7 +2565,6 @@ static std::string strsubUTF8(std::string const &str, uint32_t pos, uint32_t len
index++;
}
// Check if `index - startIndex == MAXSTRLEN` before `curLen == len`.
if (curLen < len)
warning(WARNING_BUILTIN_ARG, "STRSUB: Length too big: %" PRIu32 "\n", len);
@@ -2641,11 +2636,6 @@ static std::string strrpl(std::string_view str, std::string const &old, std::str
str.remove_prefix(pos + old.size());
}
if (rpl.length() > MAXSTRLEN) {
warning(WARNING_LONG_STR, "STRRPL: String too long, got truncated\n");
rpl.resize(MAXSTRLEN);
}
return rpl;
}
@@ -2656,7 +2646,7 @@ static std::string strfmt(
std::string str;
size_t argIndex = 0;
for (size_t i = 0; spec[i] != '\0' && str.length() <= MAXSTRLEN; ++i) {
for (size_t i = 0; spec[i] != '\0'; ++i) {
int c = spec[i];
if (c != '%') {
@@ -2712,10 +2702,6 @@ static std::string strfmt(
argIndex
);
if (str.length() > MAXSTRLEN) {
warning(WARNING_LONG_STR, "STRFMT: String too long, got truncated\n");
str.resize(MAXSTRLEN);
}
return str;
}

View File

@@ -29,7 +29,6 @@ static const WarningState defaultWarnings[ARRAY_SIZE(warningStates)] = {
WARNING_DISABLED, // WARNING_EMPTY_MACRO_ARG
WARNING_DISABLED, // WARNING_EMPTY_STRRPL
WARNING_DISABLED, // WARNING_LARGE_CONSTANT
WARNING_DISABLED, // WARNING_LONG_STR
WARNING_DISABLED, // WARNING_MACRO_SHIFT
WARNING_ENABLED, // WARNING_NESTED_COMMENT
WARNING_ENABLED, // WARNING_OBSOLETE
@@ -77,7 +76,6 @@ static char const * const warningFlags[NB_WARNINGS] = {
"empty-macro-arg",
"empty-strrpl",
"large-constant",
"long-string",
"macro-shift",
"nested-comment",
"obsolete",
@@ -157,7 +155,6 @@ static uint8_t const _wallCommands[] = {
WARNING_EMPTY_DATA_DIRECTIVE,
WARNING_EMPTY_STRRPL,
WARNING_LARGE_CONSTANT,
WARNING_LONG_STR,
WARNING_NESTED_COMMENT,
WARNING_OBSOLETE,
WARNING_NUMERIC_STRING_1,
@@ -188,7 +185,6 @@ static uint8_t const _weverythingCommands[] = {
WARNING_EMPTY_MACRO_ARG,
WARNING_EMPTY_STRRPL,
WARNING_LARGE_CONSTANT,
WARNING_LONG_STR,
WARNING_MACRO_SHIFT,
WARNING_NESTED_COMMENT,
WARNING_OBSOLETE,