forked from amazingfate/loongoffice
It was caused by an unsigned integer underflow i.e. 0 - 1 on size_t. Change-Id: I579aefa8ffc9e320fadf7180f51711e535fdb778 Reviewed-on: https://gerrit.libreoffice.org/63057 Tested-by: Jenkins Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
28 lines
823 B
Diff
28 lines
823 B
Diff
From 1967be013804f4f578b53659d7ef459b4c35de9f Mon Sep 17 00:00:00 2001
|
|
From: Kohei Yoshida <kohei.yoshida@gmail.com>
|
|
Date: Wed, 7 Nov 2018 21:08:40 -0500
|
|
Subject: [PATCH] Prevent unsigned integer underflow.
|
|
|
|
(cherry picked from commit 40bbce85048b77c545103af124f3d9831dd4a458)
|
|
---
|
|
src/parser/parser_base.cpp | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/parser/parser_base.cpp b/src/parser/parser_base.cpp
|
|
index 586d495f..9d426efb 100644
|
|
--- a/src/parser/parser_base.cpp
|
|
+++ b/src/parser/parser_base.cpp
|
|
@@ -120,7 +120,8 @@ double parser_base::parse_double()
|
|
|
|
size_t parser_base::remaining_size() const
|
|
{
|
|
- return std::distance(mp_char, mp_end) - 1;
|
|
+ size_t n = std::distance(mp_char, mp_end);
|
|
+ return n ? (n - 1) : 0;
|
|
}
|
|
|
|
std::ptrdiff_t parser_base::offset() const
|
|
--
|
|
2.17.1
|
|
|