sdext/source/pdfimport/filterdet.cxx |   19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

New commits:
commit f0b6299a8e8e6c6e683b057387402598146c2c64
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Wed Aug 27 15:57:32 2025 +0200
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Wed Aug 27 19:43:08 2025 +0200

    Simplify PDF signature search using std::search
    
    Change-Id: I143b195e23d0e4969744ec7eca6e7d365dab9e0d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190290
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/sdext/source/pdfimport/filterdet.cxx 
b/sdext/source/pdfimport/filterdet.cxx
index 95face19665d..a1b521933fe0 100644
--- a/sdext/source/pdfimport/filterdet.cxx
+++ b/sdext/source/pdfimport/filterdet.cxx
@@ -229,21 +229,12 @@ bool detectPDF(uno::Reference<io::XInputStream> const& 
xInput, uno::Sequence<sal
             xSeek->seek(0);
 
         nHeaderReadSize = xInput->readBytes(aHeader, constHeaderSize);
-        if (nHeaderReadSize <= 5)
-            return false;
 
-        const sal_Int8* pBytes = aHeader.getConstArray();
-        for (sal_uInt64 i = 0; i < nHeaderReadSize - 5; i++)
-        {
-            if (pBytes[i+0] == '%' &&
-                pBytes[i+1] == 'P' &&
-                pBytes[i+2] == 'D' &&
-                pBytes[i+3] == 'F' &&
-                pBytes[i+4] == '-')
-            {
-                return true;
-            }
-        }
+        static constexpr std::string_view sig = "%PDF-";
+        // in case aHeader.getLength() != nHeaderReadSize
+        auto header_end = aHeader.begin() + nHeaderReadSize;
+        if (std::search(aHeader.begin(), header_end, sig.begin(), sig.end()) 
!= header_end)
+            return true;
     }
     catch (const css::io::IOException &)
     {

Reply via email to