From 96f97eb05fc32654db4ba836c794b74d502b166d Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Tue, 26 Oct 2021 21:57:24 +0200 Subject: Heuristic filename extension should be <= 4 characters Still unclear what exact scenario in lcl_ScAddress_Parse_OOo() it would positively detect, but loading broken references may be caught by this and just a '.' dot somewhere leading to an (unresolved) external and then the InfoBar triggering. At least restrict that to the maximum length of 4 characters for common filename extensions. Hit by loading a range name pointing to $'zens. politik hj 1'.$#ref!#REF! or $'zens. politik hj 1'.$a$#ref!:#REF! in https://ask.libreoffice.org/uploads/short-url/6jOXRPprzGPOc5y0eHkUT6y6MfB.ods of https://ask.libreoffice.org/t/69315/15 Change-Id: I2191f4511cc492679259e74edd242bfced03b0fc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124240 Reviewed-by: Eike Rathke Tested-by: Jenkins --- sc/source/core/tool/address.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'sc') diff --git a/sc/source/core/tool/address.cxx b/sc/source/core/tool/address.cxx index b43c9bdfe6f0..ae4d48787fe3 100644 --- a/sc/source/core/tool/address.cxx +++ b/sc/source/core/tool/address.cxx @@ -1234,7 +1234,8 @@ static ScRefFlags lcl_ScAddress_Parse_OOo( const sal_Unicode* p, const ScDocumen // Specified table name is not found in this document. Assume this is an external document. aDocName = aTab; sal_Int32 n = aDocName.lastIndexOf('.'); - if (n > 0) + // Assume that common filename extensions are not more than 4 characters. + if (n > 0 && aTab.getLength() - n <= 4) { // Extension found. Strip it. aTab = aTab.copy(0, n); -- cgit