Commit graph

4509 commits

Author SHA1 Message Date
Sebastian Pipping
1aa1b1d32a Changes: Document #982 2025-03-27 16:13:44 +01:00
Sebastian Pipping
b9f9170d69 Make GitHub Actions run Perl XML::Parser integration tests 2025-03-27 16:13:06 +01:00
Sebastian Pipping
c8d69c6e0b
Merge pull request #989 from berkayurun/fix-m_eventPtr
Stop updating event pointer on exit for reentry (fixes #980)
2025-03-27 16:11:47 +01:00
Sebastian Pipping
09cbf95925
Merge pull request #991 from libexpat/clang-tidy-reenable-valist-uninitialized
Some checks are pending
Ensure that GNU Autotools and CMake build systems agree / Ensure that GNU Autotools and CMake build systems agree (push) Waiting to run
Enforce clang-format clean code / Enforce clang-format clean code (push) Waiting to run
Enforce Clang Static Analyzer (scan-build) clean code / Enforce Clang Static Analyzer (scan-build) clean code (push) Waiting to run
Enforce clang-tidy clean code / Enforce clang-tidy clean code (push) Waiting to run
Ensure realistic minimum CMake version requirement / Ensure realistic minimum CMake version requirement (push) Waiting to run
Enforce codespell-clean spelling / Enforce codespell-clean spelling (push) Waiting to run
Collect test coverage / Collect test coverage (push) Waiting to run
Upload build to Coverity Scan / Upload build to Coverity Scan (push) Waiting to run
Run Cppcheck (from macOS Homebrew) / Run Cppcheck (push) Waiting to run
Build with Emscripten / Build with Emscripten (push) Waiting to run
Check expat_config.h.{in,cmake} for regressions / Check expat_config.h.{in,cmake} for regressions (push) Waiting to run
Run fuzzing regression tests / Run fuzzing regression tests (push) Waiting to run
Run Linux CI tasks / Perform checks (push) Waiting to run
Run macOS CI tasks / Perform checks (push) Waiting to run
Build with musl / Build with musl (push) Waiting to run
Ensure well-formed and valid XML / Ensure well-formed and valid XML (push) Waiting to run
Build Windows binaries / Build win32 binaries (push) Waiting to run
Build Windows binaries / Build win64 binaries (push) Waiting to run
Build on Windows / Build on Windows (windows-2019, Win32, char) (push) Waiting to run
Build on Windows / Build on Windows (windows-2022, x64, wchar_t) (push) Waiting to run
Re-enable clang-tidy warning `clang-analyzer-valist.Uninitialized`
2025-03-27 04:32:03 +01:00
Sebastian Pipping
fd02936f25
Merge pull request #992 from libexpat/readme-openssf-best-practices-badge
`README.md`: Add badge for OpenSSF Best Practices
2025-03-27 04:27:03 +01:00
Sebastian Pipping
bedbf381b3 Changes: Document #992 2025-03-27 03:31:44 +01:00
Sebastian Pipping
2dc146751a README.md: Add badge for OpenSSF Best Practices 2025-03-27 03:27:04 +01:00
Sebastian Pipping
9c51ecefcd Changes: Document #991 2025-03-27 03:12:39 +01:00
Sebastian Pipping
89026a3c6b apply-clang-tidy.sh: Re-enable warning clang-analyzer-valist.Uninitialized 2025-03-27 03:12:33 +01:00
Sebastian Pipping
308c31ed64 Changes: Document #980 #989 2025-03-25 18:31:41 +01:00
Sebastian Pipping
c096f96980 tests: Cover m_eventPtr value with entities and reentering
m_eventPtr is a key provider to these functions:
- XML_GetCurrentByteCount
- XML_GetCurrentByteIndex
- XML_GetCurrentColumnNumber
- XML_GetCurrentLineNumber
- XML_GetInputContext
2025-03-25 18:31:41 +01:00
Sebastian Pipping
f3feb0d09c tests: Make strndup(3) available to C99 2025-03-25 18:31:41 +01:00
Berkay Eren Ürün
bcf353990c Make parser->m_eventPtr handling clearer 2025-03-25 18:30:47 +01:00
Berkay Eren Ürün
89a9c6807c Stop updating m_eventPtr on exit for reentry
The fix for recursive entity processing introduced a reenter flag that
returns the execution from the current function and switches to entity
processing.

The same fix also updates the m_eventPtr during this switch. However
this update changes the behaviour in certain cases as the older version
does not update the m_eventPtr while recursing into entity processing.

This commit removes the pointer update and restores the old behaviour.
2025-03-25 18:30:47 +01:00
Sebastian Pipping
91ca72e913
Merge pull request #988 from libexpat/dependabot/github_actions/actions/upload-artifact-4.6.2
Some checks failed
Ensure that GNU Autotools and CMake build systems agree / Ensure that GNU Autotools and CMake build systems agree (push) Has been cancelled
Collect test coverage / Collect test coverage (push) Has been cancelled
Upload build to Coverity Scan / Upload build to Coverity Scan (push) Has been cancelled
Run Cppcheck (from macOS Homebrew) / Run Cppcheck (push) Has been cancelled
Run macOS CI tasks / Perform checks (push) Has been cancelled
Enforce clang-format clean code / Enforce clang-format clean code (push) Has been cancelled
Enforce Clang Static Analyzer (scan-build) clean code / Enforce Clang Static Analyzer (scan-build) clean code (push) Has been cancelled
Enforce clang-tidy clean code / Enforce clang-tidy clean code (push) Has been cancelled
Ensure realistic minimum CMake version requirement / Ensure realistic minimum CMake version requirement (push) Has been cancelled
Enforce codespell-clean spelling / Enforce codespell-clean spelling (push) Has been cancelled
Build with Emscripten / Build with Emscripten (push) Has been cancelled
Check expat_config.h.{in,cmake} for regressions / Check expat_config.h.{in,cmake} for regressions (push) Has been cancelled
Run fuzzing regression tests / Run fuzzing regression tests (push) Has been cancelled
Run Linux CI tasks / Perform checks (push) Has been cancelled
Build with musl / Build with musl (push) Has been cancelled
Ensure well-formed and valid XML / Ensure well-formed and valid XML (push) Has been cancelled
Build Windows binaries / Build win32 binaries (push) Has been cancelled
Build Windows binaries / Build win64 binaries (push) Has been cancelled
Build on Windows / Build on Windows (windows-2019, Win32, char) (push) Has been cancelled
Build on Windows / Build on Windows (windows-2022, x64, wchar_t) (push) Has been cancelled
Actions(deps): Bump actions/upload-artifact from 4.6.1 to 4.6.2
2025-03-24 18:02:52 +01:00
dependabot[bot]
9c7609a007
Actions(deps): Bump actions/upload-artifact from 4.6.1 to 4.6.2
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](4cec3d8aa0...ea165f8d65)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 12:45:06 +00:00
Sebastian Pipping
453c150541
Merge pull request #987 from libexpat/clang-static-analyzer
Make GitHub Actions apply Clang Static Analyzer
2025-03-22 02:30:01 +01:00
Sebastian Pipping
6a56fd6f9e Changes: Document #987 2025-03-22 01:30:36 +01:00
Sebastian Pipping
ad45b4f4e2 Make GitHub Actions apply Clang Static Analyzer 2025-03-22 01:21:50 +01:00
Sebastian Pipping
ec81c552a1
Merge pull request #986 from libexpat/address-frama-c-warning
Address Frama-C warning
2025-03-21 23:49:12 +01:00
Sebastian Pipping
d53df45fd8 Changes: Document #986 2025-03-21 23:07:17 +01:00
Sebastian Pipping
ea3b852acf lib/xmlparse.c: Address warning from frama-c 30.0
The symptom was:
> [variadic:typing] lib/xmlparse.c:8242: Warning:
>   Incorrect type for argument 7. The argument will be cast from unsigned int to int.
2025-03-21 23:02:05 +01:00
Sebastian Pipping
6fd58ad630
Merge pull request #984 from libexpat/issue-983-emscripten-support
Fix `printf` format specifiers for 32bit Emscripten (fixes #983) + cover compilation with 32bit Emscripten in CI
2025-03-17 04:32:05 +01:00
Sebastian Pipping
5c1385f94e Changes: Document #983 #984 2025-03-17 03:49:10 +01:00
Sebastian Pipping
2f6611391e Make GitHub Actions cover compilation with 32bit Emscripten 2025-03-17 03:49:10 +01:00
Sebastian Pipping
41fcb44549 lib/internal.h: Fix printf format specifiers for 32bit mode Emscripten
When compiling with Emscripten 3.1.6, the symptom was:
> [..]
> /usr/bin/emcc  @CMakeFiles/expat.dir/includes_C.rsp -fno-strict-aliasing -fvisibility=hidden -std=c99 -MD -MT CMakeFiles/expat.dir/lib/xmlparse.c.o -MF CMakeFiles/expat.dir/lib/xmlparse.c.o.d -o CMakeFiles/expat.dir/lib/xmlparse.c.o -c /libexpat/expat/lib/xmlparse.c
> /libexpat/expat/lib/xmlparse.c:8132:11: warning: format specifies type 'int' but the argument has type 'ptrdiff_t' (aka 'long') [-Wformat]
>           bytesMore, (account == XML_ACCOUNT_DIRECT) ? "DIR" : "EXP",
>           ^~~~~~~~~
> 1 warning generated.
> [..]
> /usr/bin/emcc -DXML_TESTING @CMakeFiles/runtests.dir/includes_C.rsp -fno-strict-aliasing -fvisibility=hidden -std=c99 -MD -MT CMakeFiles/runtests.dir/tests/acc_tests.c.o -MF CMakeFiles/runtests.dir/tests/acc_tests.c.o.d -o CMakeFiles/runtests.dir/tests/acc_tests.c.o -c /libexpat/expat/tests/acc_tests.c
> /libexpat/expat/tests/acc_tests.c:279:11: warning: format specifies type 'unsigned int' but the argument has type 'unsigned long' [-Wformat]
>           u + 1, countCases, expectedCountBytesDirect, actualCountBytesDirect);
>           ^~~~~
> /libexpat/expat/tests/acc_tests.c:279:18: warning: format specifies type 'unsigned int' but the argument has type 'size_t' (aka 'unsigned long') [-Wformat]
>           u + 1, countCases, expectedCountBytesDirect, actualCountBytesDirect);
>                  ^~~~~~~~~~
> /libexpat/expat/tests/acc_tests.c:288:11: warning: format specifies type 'unsigned int' but the argument has type 'unsigned long' [-Wformat]
>           u + 1, countCases, expectedCountBytesIndirect,
>           ^~~~~
> /libexpat/expat/tests/acc_tests.c:288:18: warning: format specifies type 'unsigned int' but the argument has type 'size_t' (aka 'unsigned long') [-Wformat]
>           u + 1, countCases, expectedCountBytesIndirect,
>                  ^~~~~~~~~~
> 4 warnings generated.
> [..]
> /usr/bin/emcc -DXML_TESTING @CMakeFiles/runtests.dir/includes_C.rsp -fno-strict-aliasing -fvisibility=hidden -std=c99 -MD -MT CMakeFiles/runtests.dir/lib/xmlparse.c.o -MF CMakeFiles/runtests.dir/lib/xmlparse.c.o.d -o CMakeFiles/runtests.dir/lib/xmlparse.c.o -c /libexpat/expat/lib/xmlparse.c
> /libexpat/expat/lib/xmlparse.c:8132:11: warning: format specifies type 'int' but the argument has type 'ptrdiff_t' (aka 'long') [-Wformat]
>           bytesMore, (account == XML_ACCOUNT_DIRECT) ? "DIR" : "EXP",
>           ^~~~~~~~~
> 1 warning generated.
> [..]
> /usr/bin/em++ -DXML_TESTING @CMakeFiles/runtests_cxx.dir/includes_CXX.rsp -fno-strict-aliasing -fvisibility=hidden -std=c++11 -MD -MT CMakeFiles/runtests_cxx.dir/tests/acc_tests_cxx.cpp.o -MF CMakeFiles/runtests_cxx.dir/tests/acc_tests_cxx.cpp.o.d -o CMakeFiles/runtests_cxx.dir/tests/acc_tests_cxx.cpp.o -c /libexpat/expat/tests/acc_tests_cxx.cpp
> In file included from /libexpat/expat/tests/acc_tests_cxx.cpp:32:
> /libexpat/expat/tests/acc_tests.c:279:11: warning: format specifies type 'unsigned int' but the argument has type 'unsigned long' [-Wformat]
>           u + 1, countCases, expectedCountBytesDirect, actualCountBytesDirect);
>           ^~~~~
> /libexpat/expat/tests/acc_tests.c:279:18: warning: format specifies type 'unsigned int' but the argument has type 'size_t' (aka 'unsigned long') [-Wformat]
>           u + 1, countCases, expectedCountBytesDirect, actualCountBytesDirect);
>                  ^~~~~~~~~~
> /libexpat/expat/tests/acc_tests.c:288:11: warning: format specifies type 'unsigned int' but the argument has type 'unsigned long' [-Wformat]
>           u + 1, countCases, expectedCountBytesIndirect,
>           ^~~~~
> /libexpat/expat/tests/acc_tests.c:288:18: warning: format specifies type 'unsigned int' but the argument has type 'size_t' (aka 'unsigned long') [-Wformat]
>           u + 1, countCases, expectedCountBytesIndirect,
>                  ^~~~~~~~~~
> 4 warnings generated.
> [..]
> /usr/bin/emcc -DXML_TESTING @CMakeFiles/runtests_cxx.dir/includes_C.rsp -fno-strict-aliasing -fvisibility=hidden -std=c99 -MD -MT CMakeFiles/runtests_cxx.dir/lib/xmlparse.c.o -MF CMakeFiles/runtests_cxx.dir/lib/xmlparse.c.o.d -o CMakeFiles/runtests_cxx.dir/lib/xmlparse.c.o -c /libexpat/expat/lib/xmlparse.c
> /libexpat/expat/lib/xmlparse.c:8132:11: warning: format specifies type 'int' but the argument has type 'ptrdiff_t' (aka 'long') [-Wformat]
>           bytesMore, (account == XML_ACCOUNT_DIRECT) ? "DIR" : "EXP",
>           ^~~~~~~~~
> 1 warning generated.
2025-03-17 03:49:10 +01:00
Sebastian Pipping
9f52e11c2c
Merge pull request #981 from libexpat/musl-ci
Make GitHub Actions cover compilation with musl
2025-03-16 02:08:12 +01:00
Sebastian Pipping
26de2e1daa Changes: Document #981 2025-03-16 00:48:01 +01:00
Sebastian Pipping
f0394e734a Make GitHub Actions cover compilation with musl 2025-03-16 00:48:01 +01:00
Sebastian Pipping
6579a00ec3
Merge pull request #978 from libexpat/tests-benchmark-resolve-double-close
`tests/benchmark`: Resolve mistaken double close
2025-03-15 16:03:13 +01:00
Sebastian Pipping
ac8a0e8f04 tests/benchmark: Resolve mistaken double close
From "man fdopen":
> The file descriptor is not dup'ed, and will be closed
> when the stream created by fdopen() is closed.
2025-03-15 01:38:13 +01:00
Sebastian Pipping
fb4faf6573
Merge pull request #977 from libexpat/issue-976-automake-add-missing-files
Integrate missing fuzzer files with Automake (fixes #976)
2025-03-15 01:01:53 +01:00
Sebastian Pipping
fec0d8cdab Changes: Document #977 2025-03-14 23:22:31 +01:00
Sebastian Pipping
991a5de397 fuzzing.yml: Re-group artifact naming
This grouping better suits a human interested in one particular fuzzer.
2025-03-14 23:22:31 +01:00
Sebastian Pipping
1c24499c1b fuzzing.yml: Ensure that "make dist" includes all files for fuzzing 2025-03-14 23:15:24 +01:00
Sebastian Pipping
7959225d05 Makefile.am: Add missing files for xml_lpm_fuzzer 2025-03-14 23:15:24 +01:00
Sebastian Pipping
6d4ffe856d
Merge pull request #975 from libexpat/issue-974-prepare-release
Prepare release 2.7.0 (part of #974, ETA 2024-13-13)
2025-03-13 21:59:00 +01:00
Sebastian Pipping
2ae4c8afd3 Sync file headers 2025-03-13 20:41:33 +01:00
Sebastian Pipping
fd640c0915 Set release date for 2.7.0 2025-03-13 20:41:33 +01:00
Sebastian Pipping
0a6cbff62c Bump version to 2.7.0 2025-03-13 20:41:33 +01:00
Sebastian Pipping
70b24434c7 Bump version info from 11:0:10 to 11:1:10
See https://verbump.de/ for what these numbers do
2025-03-13 20:41:33 +01:00
Sebastian Pipping
f7611735f9 Changes: Document changes in release Expat 2.7.0 2025-03-13 20:41:33 +01:00
Sebastian Pipping
99529768b4
Merge pull request #973 from berkayurun/issue-893-fix-cve-2024-8176
[CVE-2024-8176] Resolve the recursion during entity processing to prevent stack overflow (fixes #893)
2025-03-13 17:21:23 +01:00
Sebastian Pipping
5e8abaf557 Changes: Document CVE-2024-8176 2025-03-13 14:01:31 +01:00
Sebastian Pipping
bbd413a808 Sync file headers 2025-03-13 14:01:31 +01:00
Berkay Eren Ürün
eb53088cd5 tests: Cover missing elements after internal entity reference 2025-03-13 14:01:31 +01:00
Berkay Eren Ürün
f2edeaaece Delete the check that prevents reentry
The early return in case of zero open internal entities and matching
end/nextPtr pointers cause the parser to miss XML_ERROR_NO_ELEMENTS
error.

The reason is that the internalEntityProcessor does not set the
m_reenter flag in such a case, which results in skipping the
prologProcessor or contentProcessor depending on wheter is_param is set
or not. However, this last skipped call to mentioned processors can
detect the non-existence of elements when some are expected.
2025-03-13 14:01:31 +01:00
Berkay Eren Ürün
7b9758517b Remove unnecessary triggerReenter calls
callStoreEntityValue and storeAttributeValue call triggerReenter just
before continuing with their main loop. This call does not have any
use for the these functions as the continuity of their loop is already
achieved by the continue key word.

Only side effect these triggerReenter calls bring is that they cause a
return to the the callProcessor, only to reenter to the same point again,
wasting some time.

This commit removes these unnecessary calls.
2025-03-13 14:01:31 +01:00
Berkay Eren Ürün
c25f0cef93 Handle unreachable return locations
At some points we check m_reenter flag for return. However this flag can
never be true at these points. Therefore body of the check is never
executed. This commit excludes the body from test coverage, removes the
nextPtr update (since we faced an error, no need to update it) and
lastly makes them return XML_ERROR_UNEXPECTED_STATE as a safety net.
2025-03-13 14:01:31 +01:00
Berkay Eren Ürün
e41a398e3f Remove unnecessary checks before entity removal
After the commit "Fix entity debug order", the interaction with the open
entity lists has been changed.

Before the commit, during processing of an entity, if an inner entity was
found, it was pushed to the head of the list. This made the entity we were
processing the second in the list. So, in order the remove this entity,
we either remove the head or the second element, depending on if an inner
entity is found during processing.

After the commit, since we delay the removal of entities until their
inner entity references are resolved, the entity we want to remove will
always be on the head of the list. Thus the removal of the check.
2025-03-13 14:01:31 +01:00