From 5a69b8a184393e94c781addc423bf0273b573e52 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Sun, 9 Jun 2024 08:09:01 +0200 Subject: [PATCH] Return false on invalid input in Font::fromString() Fixes crash with invalid font-update lfun (cherry picked from commit 2a9648fc4c58a007f7ddb4012d608666f8cc2ec8) --- src/Font.cpp | 12 ++++++++++++ src/Text.cpp | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Font.cpp b/src/Font.cpp index 7e0798d8ac..92308fd1d8 100644 --- a/src/Font.cpp +++ b/src/Font.cpp @@ -695,18 +695,26 @@ bool Font::fromString(string const & data, bool & toggle) if (token == "family") { int const next = lex.getInteger(); + if (next == -1) + return false; bits_.setFamily(FontFamily(next)); } else if (token == "series") { int const next = lex.getInteger(); + if (next == -1) + return false; bits_.setSeries(FontSeries(next)); } else if (token == "shape") { int const next = lex.getInteger(); + if (next == -1) + return false; bits_.setShape(FontShape(next)); } else if (token == "size") { int const next = lex.getInteger(); + if (next == -1) + return false; bits_.setSize(FontSize(next)); // FIXME: shall style be handled there? Probably not. } else if (token == "emph" || token == "underbar" @@ -716,6 +724,8 @@ bool Font::fromString(string const & data, bool & toggle) || token == "nospellcheck") { int const next = lex.getInteger(); + if (next == -1) + return false; FontState const misc = FontState(next); if (token == "emph") @@ -739,6 +749,8 @@ bool Font::fromString(string const & data, bool & toggle) } else if (token == "color") { int const next = lex.getInteger(); + if (next == -1) + return false; bits_.setColor(ColorCode(next)); /** diff --git a/src/Text.cpp b/src/Text.cpp index 8e9b7a8313..e94cedbd81 100644 --- a/src/Text.cpp +++ b/src/Text.cpp @@ -5988,7 +5988,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd) toggleAndShow(cur, this, font, toggleall); cur.message(bformat(_("Text properties applied: %1$s"), props)); } else - LYXERR0("Invalid argument of textstyle-update"); + cur.message(_("Invalid argument of textstyle-update")); break; }