diff --git a/.gitignore b/.gitignore index a007b45..dda132d 100644 --- a/.gitignore +++ b/.gitignore @@ -68,4 +68,3 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.13.1.src.tar.gz /doxygen-1.13.2.src.tar.gz /doxygen-1.14.0.src.tar.gz -/doxygen-1.15.0.src.tar.gz diff --git a/doxygen-input-buffer-overflow.patch b/doxygen-input-buffer-overflow.patch new file mode 100644 index 0000000..207f71c --- /dev/null +++ b/doxygen-input-buffer-overflow.patch @@ -0,0 +1,88 @@ +commit f519f8f92d3925f2b58a93e555da3720c09af56c +Author: albert-github +Date: Sun Jun 22 12:35:03 2025 +0200 + + Input buffer overflow + + When having a, very, long string as an argument in e.g. PHP or C++ we get am error like: + ``` + input buffer overflow, can't enlarge buffer because scanner uses REJECT + ``` + which can be overcome by enlarging the lex buffers (CMake option `enlarge_lex_buffers`) but is also possible to limit the search pattern from a `+` pattern to a number of elements `{1,n}` pattern. + + For PHP the string argument should, analogous to C++ not be a copy rule but a skip rule (`scanner.l`) + +diff --git a/src/code.l b/src/code.l +index a2020eb14..4fb0c0fd5 100644 +--- a/src/code.l ++++ b/src/code.l +@@ -1279,10 +1279,10 @@ ENDQopt ("const"|"volatile"|"sealed"|"override")({BN}+("const"|"volatile"|"seale + yyextra->inForEachExpression = FALSE; + BEGIN( SkipStringS ); + } +-[^\"\\\r\n]* { ++[^\"\\\r\n]{1,100} { + yyextra->code->codify(yytext); + } +-[^\'\\\r\n]* { ++[^\'\\\r\n]{1,100} { + yyextra->code->codify(yytext); + } + {CPPC}|{CCS} { +diff --git a/src/pre.l b/src/pre.l +index dc155aa6f..9edf21727 100644 +--- a/src/pre.l ++++ b/src/pre.l +@@ -607,10 +607,10 @@ WSopt [ \t\r]* + outputChar(yyscanner,*yytext); + BEGIN( CopyStringFtn ); + } +-[^\"\\\r\n]+ { ++[^\"\\\r\n]{1,1000} { + outputArray(yyscanner,yytext,yyleng); + } +-[^\"\r\n]+ { ++[^\"\r\n]{1,1000} { + outputArray(yyscanner,yytext,yyleng); + } + \"\" { +@@ -623,7 +623,7 @@ WSopt [ \t\r]* + outputChar(yyscanner,*yytext); + BEGIN( CopyLine ); + } +-[^\"\\\r\n]+ { ++[^\"\\\r\n]{1,1000} { + outputArray(yyscanner,yytext,yyleng); + } + \\. { +@@ -633,7 +633,7 @@ WSopt [ \t\r]* + outputChar(yyscanner,*yytext); + BEGIN( CopyLine ); + } +-[^\'\\\r\n]+ { ++[^\'\\\r\n]{1,1000} { + outputArray(yyscanner,yytext,yyleng); + } + \\. { +@@ -652,7 +652,7 @@ WSopt [ \t\r]* + BEGIN( CopyLine ); + } + } +-[^)]+ { ++[^)]{1,1000} { + outputArray(yyscanner,yytext,yyleng); + } + . { +diff --git a/src/scanner.l b/src/scanner.l +index a6a70d25c..3c8b887d4 100644 +--- a/src/scanner.l ++++ b/src/scanner.l +@@ -5141,7 +5141,7 @@ NONLopt [^\n]* + if (yyextra->insidePHP) + { + yyextra->lastCopyArgStringContext=YY_START; +- BEGIN(CopyArgPHPString); ++ BEGIN(SkipPHPString); + } + } + "<="|">="|"<=>" { diff --git a/doxygen.spec b/doxygen.spec index 7818615..ec551d2 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,8 +16,8 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 2 -Version: 1.15.0 -Release: 1%{?dist} +Version: 1.14.0 +Release: 5%{?dist} # No version is specified. License: GPL-2.0-or-later Url: https://github.com/doxygen @@ -30,6 +30,8 @@ Source3: README.rpm-packaging Source4: doxygen-unbundler # upstream fixes +# fix input buffer overflow +Patch1: doxygen-input-buffer-overflow.patch BuildRequires: %{_bindir}/python3 BuildRequires: perl-interpreter, perl-open @@ -156,8 +158,7 @@ Javascript files for use by locally installed Doxygen documentation. %package doxywizard Summary: A GUI for creating and editing configuration files Requires: %{name} = %{epoch}:%{version}-%{release} -BuildRequires: qt6-qtbase-devel -BuildRequires: qt6-qtsvg-devel +BuildRequires: qt5-qtbase-devel %description doxywizard Doxywizard is a GUI for creating and editing configuration files that @@ -243,6 +244,11 @@ Requires: texlive-epstopdf %prep %autosetup -p1 -a2 +# convert into utf-8 +iconv --from=ISO-8859-1 --to=UTF-8 LANGUAGE.HOWTO > LANGUAGE.HOWTO.new +touch -r LANGUAGE.HOWTO LANGUAGE.HOWTO.new +mv LANGUAGE.HOWTO.new LANGUAGE.HOWTO + cp %{SOURCE3} . %build @@ -290,8 +296,8 @@ rm -f %{buildroot}/%{_mandir}/man1/doxyindexer.1* %{buildroot}/%{_mandir}/man1/d rm -rf %{buildroot}/%{_docdir}/packages # Install the asset files. -install -m644 -D --target-directory=%{buildroot}%{_jsdir}/doxygen templates/html/*.js - +install -m644 -D --target-directory=%{buildroot}%{_jsdir}/doxygen \ + templates/html/*.js # Generate the macros file. Expand version/release/%%_jsdir. mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d cat > %{buildroot}%{_rpmconfigdir}/macros.d/macros.doxygen <<'EOF' @@ -299,8 +305,7 @@ cat > %{buildroot}%{_rpmconfigdir}/macros.d/macros.doxygen <<'EOF' %%doxygen_unbundle_buildroot() %%{_rpmconfigdir}/redhat/doxygen-unbundler "%{_jsdir}" "%%{buildroot}" %%[ %%# == 0 ? "%%{_docdir}" : "%%1"] %%doxygen_unbundle() %{_rpmconfigdir}/redhat/doxygen-unbundler "%{_jsdir}" "" %%* EOF - - # Install the unbundler script. +# Install the unbundler script. install -m755 -D --target-directory=%{buildroot}%{_rpmconfigdir}/redhat %{SOURCE4} %check @@ -340,8 +345,8 @@ install -m755 -D --target-directory=%{buildroot}%{_rpmconfigdir}/redhat %{SOURCE %endif %changelog -* Thu Nov 13 2025 Than Ngo - 2:1.15.0-1 -- Update to 1.15.0 +* Fri Nov 28 2025 Than Ngo - 2:1.14.0-5 +- Fix rhbz#2416173, Rebuilt against llvm-21 * Wed Jul 23 2025 Fedora Release Engineering - 2:1.14.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild diff --git a/sources b/sources index 7883325..2757144 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad -SHA512 (doxygen-1.15.0.src.tar.gz) = e53cc8da6cf1fe3ca3b3637647ed6afa28365351eac81d010f6691d939df5e449b3d898a6f695dd850d12659dfd7018fc864071b30fbca5dd196dc094ec4371e +SHA512 (doxygen-1.14.0.src.tar.gz) = b042f7f731cd17bea55f7393dd90433f49fa296a61054950c2e1457ff1d57e218706cbc4f5248f42c2242bf1acccd91e88cf545ca394a31a4d2d8b7f5954baa9