diff options
Diffstat (limited to 'src/quick/util/qquickstyledtext.cpp')
| -rw-r--r-- | src/quick/util/qquickstyledtext.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/quick/util/qquickstyledtext.cpp b/src/quick/util/qquickstyledtext.cpp index bb003c19a6..7d21c8999f 100644 --- a/src/quick/util/qquickstyledtext.cpp +++ b/src/quick/util/qquickstyledtext.cpp @@ -11,6 +11,11 @@ #include "qquickstyledtext_p.h" #include <QQmlContext> #include <QtGui/private/qtexthtmlparser_p.h> +#include <QtGui/private/qoutlinemapper_p.h> + +#ifndef QQUICKSTYLEDPARSER_COORD_LIMIT +# define QQUICKSTYLEDPARSER_COORD_LIMIT QT_RASTER_COORD_LIMIT +#endif Q_STATIC_LOGGING_CATEGORY(lcStyledText, "qt.quick.styledtext") @@ -660,9 +665,19 @@ void QQuickStyledTextPrivate::parseImageAttributes(const QChar *&ch, const QStri if (is_equal_ignoring_case(attr.first, QLatin1String("src"))) { image->url = QUrl(attr.second.toString()); } else if (is_equal_ignoring_case(attr.first, QLatin1String("width"))) { - image->size.setWidth(attr.second.toString().toInt()); + bool ok; + int v = attr.second.toString().toInt(&ok); + if (ok && v <= QQUICKSTYLEDPARSER_COORD_LIMIT) + image->size.setWidth(v); + else + qCWarning(lcStyledText) << "Invalid width provided for <img>"; } else if (is_equal_ignoring_case(attr.first, QLatin1String("height"))) { - image->size.setHeight(attr.second.toString().toInt()); + bool ok; + int v = attr.second.toString().toInt(&ok); + if (ok && v <= QQUICKSTYLEDPARSER_COORD_LIMIT) + image->size.setHeight(v); + else + qCWarning(lcStyledText) << "Invalid height provided for <img>"; } else if (is_equal_ignoring_case(attr.first, QLatin1String("align"))) { if (is_equal_ignoring_case(attr.second, QLatin1String("top"))) { image->align = QQuickStyledTextImgTag::Top; |
