mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:47:44 +00:00
LibPDF: Make string literal parsing fallible
...and make running out of data after a \ an error instead of silently returning an empty string.
This commit is contained in:
parent
4318bcf447
commit
c0f3f1674c
2 changed files with 9 additions and 9 deletions
|
@ -241,7 +241,7 @@ PDFErrorOr<NonnullRefPtr<NameObject>> Parser::parse_name()
|
|||
return make_object<NameObject>(builder.to_deprecated_string());
|
||||
}
|
||||
|
||||
NonnullRefPtr<StringObject> Parser::parse_string()
|
||||
PDFErrorOr<NonnullRefPtr<StringObject>> Parser::parse_string()
|
||||
{
|
||||
ScopeGuard guard([&] { m_reader.consume_whitespace(); });
|
||||
|
||||
|
@ -249,10 +249,10 @@ NonnullRefPtr<StringObject> Parser::parse_string()
|
|||
bool is_binary_string;
|
||||
|
||||
if (m_reader.matches('(')) {
|
||||
string = parse_literal_string();
|
||||
string = TRY(parse_literal_string());
|
||||
is_binary_string = false;
|
||||
} else {
|
||||
string = parse_hex_string();
|
||||
string = TRY(parse_hex_string());
|
||||
is_binary_string = true;
|
||||
}
|
||||
|
||||
|
@ -275,7 +275,7 @@ NonnullRefPtr<StringObject> Parser::parse_string()
|
|||
return string_object;
|
||||
}
|
||||
|
||||
DeprecatedString Parser::parse_literal_string()
|
||||
PDFErrorOr<DeprecatedString> Parser::parse_literal_string()
|
||||
{
|
||||
VERIFY(m_reader.consume('('));
|
||||
StringBuilder builder;
|
||||
|
@ -299,7 +299,7 @@ DeprecatedString Parser::parse_literal_string()
|
|||
}
|
||||
|
||||
if (m_reader.done())
|
||||
return {};
|
||||
return error("out of data in string literal after \\");
|
||||
|
||||
auto ch = m_reader.consume();
|
||||
switch (ch) {
|
||||
|
@ -353,7 +353,7 @@ DeprecatedString Parser::parse_literal_string()
|
|||
return builder.to_deprecated_string();
|
||||
}
|
||||
|
||||
DeprecatedString Parser::parse_hex_string()
|
||||
PDFErrorOr<DeprecatedString> Parser::parse_hex_string()
|
||||
{
|
||||
VERIFY(m_reader.consume('<'));
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue