summaryrefslogtreecommitdiffstats
path: root/src/corelib/text/qstring.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2022-07-20 22:21:12 +0200
committerMarc Mutz <marc.mutz@qt.io>2022-07-26 01:29:15 +0200
commit15a80cf8a9d59203f8e2b436a5c804197c044807 (patch)
treed3c4ed344e85762efb2c4fcee7b21ef3da21d32c /src/corelib/text/qstring.cpp
parentf9d002ea20e7d5075313e9dcc769ed5348d2b829 (diff)
Fix QString::arg() for format strings with a huge amount of placeholders
QString::arg()s placeholders are limited to triple-digits, so 1000 different ones. By the same token, the length of any one of them is bounded to five (%L?\d{,3}). But the total possible length of escape sequences is _not_ 5000B, because there's no limit on the number of _equal_ placeholders, so a format string where the total escape sequence length exceeded 2Gi characters, e.g. QString("%L100").repeated(INT_MAX/5 + 1).arg(42); would produce corrupt data. Pick-to: 6.4 6.3 Task-number: QTBUG-103531 Change-Id: Id27ee02579387efcbb5928de1eb9acbeb9f954c9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/text/qstring.cpp')
-rw-r--r--src/corelib/text/qstring.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp
index 2507802b6b..c6b822bdae 100644
--- a/src/corelib/text/qstring.cpp
+++ b/src/corelib/text/qstring.cpp
@@ -7937,7 +7937,7 @@ struct ArgEscapeData
int occurrences; // number of occurrences of the lowest escape sequence number
int locale_occurrences; // number of occurrences of the lowest escape sequence number that
// contain 'L'
- int escape_len; // total length of escape sequences which will be replaced
+ qsizetype escape_len; // total length of escape sequences which will be replaced
};
static ArgEscapeData findArgEscapes(QStringView s)