1
0
mirror of https://github.com/leethomason/tinyxml2.git synced 2026-07-21 19:23:00 +04:00
Commit Graph

1245 Commits

Author SHA1 Message Date
Christoph Grüninger 86fe31c836 GitHub Actions: Update actions-setup-cmake to v2
Fixes warnings regarding deprecated node12
2024-11-24 17:21:49 +01:00
Lee Thomason 374292e9ba Merge pull request #998 from Sigmarik/master
Fix: typo in the `XMLNode::DeepClone` description
2024-09-02 09:33:10 -07:00
Lee Thomason 2ac336a253 Merge pull request #992 from ssmolov/namespace.comment.fix
fix tinyxml2 namespaces' ending comment
2024-09-02 09:32:55 -07:00
Lee Thomason 38894bfa7f Merge pull request #993 from jengelh/master
Make DocPrinter support DynArrays larger than 2G
2024-09-02 09:29:54 -07:00
sigmarik 780b16b5ae chore: fix typo in the XMLNode::DeepClone description 2024-08-31 19:34:27 +03:00
Jan Engelhardt 04bbc06cd0 Make DocPrinter support DynArrays larger than 2G
If the DynArray within an XMLPrinter object carries 2 gigabytes of
data or more, XMLPrinter::CStrSize returns a truncated result. If a
program casts this back to size_t without thought, sign extension
leads to bad things(tm).

```c++
int main()
{
	tinyxml2::XMLDocument doc;
	doc.InsertEndChild(doc.NewDeclaration());
	auto root = doc.NewElement("root");
	size_t sz = 0x80000002;
	auto blank = new char[sz];
	memset(blank, ' ', sz);
	blank[sz-1]='\0';
	root->SetText(blank);
	doc.InsertEndChild(root);
	tinyxml2::XMLPrinter printer(nullptr);
	doc.Print(&printer);
	std::string_view sv{printer.CStr(), static_cast<size_t>(printer.CStrSize())};
	// sv.size() is way too big, causing overflows on access
	std::string dup(sv); // boom
}
```

Fixes: 2.0.2-873-geb3ab0d
2024-08-14 15:28:42 +02:00
Sergey Smolov 62f6b14e91 fixup
Signed-off-by: Sergey Smolov <smolov@ispras.ru>
2024-08-12 19:22:22 +03:00
Sergey Smolov b25c39aaad fix tinyxml2 namespaces' ending comment
Signed-off-by: Sergey Smolov <smolov@ispras.ru>
2024-08-12 19:16:14 +03:00
Lee Thomason 8a519a556a Merge pull request #990 from jengelh/master
Avoid crashing when SetText is called with a 2GB large string
2024-07-06 12:41:55 -07:00
Lee Thomason c93b6f78d4 Revert "Merge pull request #983 from DiplomInformatikerFranzHoepfinger/feature/fix_32_bit_types"
This reverts commit 8e4bfebad5, reversing
changes made to a0f66fdf71.
2024-07-06 12:28:04 -07:00
Lee Thomason 8e4bfebad5 Merge pull request #983 from DiplomInformatikerFranzHoepfinger/feature/fix_32_bit_types
Update QueryIntValue and QueryUnsignedValue to use int32_t and uint32_t types for better consistency.
2024-07-06 12:00:24 -07:00
Jan Engelhardt eb3ab0df5d Make DynArray support objects larger than 1 gigabyte
The expression ``const int newAllocated = cap * 2;`` easily causes
overflow, as soon as the input is 1.0 GiB. This goes unnoticed because
release builds of tinyxml2 do not have active assertions.

The change in commit 9.0.0-20-g8fd6cc6 did not do anything useful;
the signed multiplication overflow (and thus undefined behavior)
still occurs.

Using ``int`` in this class is really archaic, because it limits the
class to a gigabyte even on 64-bit platforms.

The multiplication overflow check also needs to include sizeof(T),
otherwise you can run into unsigned multiplication overflow (defined,
but undesirable) in the memcpy() call.

testcase:

int main()
{
        tinyxml2::XMLDocument doc;
        doc.InsertEndChild(doc.NewDeclaration());
        auto root = doc.NewElement("root");
        size_t sz = 0x80000001;
        auto blank = new char[sz];
        memset(blank, ' ', sz);
        blank[sz-1]='\0';
        root->SetText(blank);
        doc.InsertEndChild(root);
        tinyxml2::XMLPrinter printer(nullptr);
        doc.Print(&printer);
}
2024-07-01 22:07:51 +02:00
Jan Engelhardt 3a893e5757 Remove extraneous +x bit from source files 2024-07-01 14:14:33 +02:00
Lee Thomason a0f66fdf71 Merge pull request #984 from Blake-Madden/master
Fix typo in comment
2024-06-13 08:29:51 -07:00
Lee Thomason a965e28c4f Merge pull request #978 from AlbertHungGarmin/fix-format-specifier
Fix format specifier mismatch in XMLUtil::ToStr
2024-06-13 08:17:16 -07:00
Blake-Madden 5b04868fee Fix typo in comment 2024-06-01 15:41:57 -04:00
Franz Höpfinger 8df9b25bb9 Update attribute handling to use int32_t and uint32_t types.
The commit changes the attribute handling in the code to utilize int32_t and uint32_t types for better consistency and compatibility.
2024-05-30 20:31:00 +02:00
Franz Höpfinger 53d8ec5573 Update attribute setting functions to use specific integer types
The commit updates attribute setting functions to use int32_t and uint32_t types for better clarity and consistency.
2024-05-30 20:28:46 +02:00
Franz Höpfinger 5e27269c04 Update attribute setting functions to use specific integer types
The commit changes the attribute setting functions in both the .cpp and .h files to use int32_t and uint32_t instead of int and unsigned for better type specificity.
2024-05-30 20:27:26 +02:00
Franz Höpfinger 693052afe4 Update integer types to int32_t and uint32_t for better clarity and consistency. 2024-05-30 20:19:13 +02:00
Franz Höpfinger 42875a9f60 Update data type in ToBool function for better clarity and consistency.
- Change int to int32_t in the ToBool function for improved data type clarity.
2024-05-30 20:16:20 +02:00
Franz Höpfinger afb8fabf58 Update integer parsing to use long type and unsigned parsing to use unsigned long type for better compatibility with different platforms.
Update integer parsing to use long type and unsigned parsing to use unsigned long type for better compatibility with different platforms. Alternatively, use the PRI Macros there.

alternatively use the PRI Macros there.
2024-05-30 20:13:48 +02:00
Franz Höpfinger a151353f3a Update integer to string conversion functions for different data types.
- Changed formatting from %d to %ld for int32_t.
- Changed formatting from %u to %lu for uint32_t.

alternatively use the PRI Macros there.
2024-05-30 20:08:50 +02:00
Franz Höpfinger ef185a8f85 Update PushText functions to use specific integer types
The commit changes the PushText functions in both the .cpp and .h files to utilize int32_t and uint32_t instead of int and unsigned for better type specificity.
2024-05-30 20:05:52 +02:00
Franz Höpfinger 8fed517e5d Update SetText method parameters to use int32_t and uint32_t.
This change updates the SetText method in both the .cpp and .h files to use int32_t and uint32_t types for better consistency and clarity.
2024-05-30 19:53:50 +02:00
Franz Höpfinger e269b2e91f Update QueryIntText and QueryUnsignedText functions to use int32_t and uint32_t types instead of int and unsigned in tinyxml2.cpp and tinyxml2.h. 2024-05-30 19:53:44 +02:00
Franz Höpfinger cd8c1a6322 Update ToStr functions to use int32_t and uint32_t types, and change corresponding function signatures in the header file. Update ToInt and ToUnsigned functions to use int32_t and uint32_t types respectively. 2024-05-30 19:34:59 +02:00
Franz Höpfinger 668fd81256 Update attribute types to int32_t and uint32_t for better consistency and clarity.
Update attribute types to int32_t and uint32_t for better consistency and clarity.

Changed attribute types to int32_t and uint32_t for IntAttribute and UnsignedAttribute methods in both .cpp and .h files.
2024-05-30 19:31:58 +02:00
Franz Höpfinger 095a8ffa42 Update IntValue and UnsignedValue to use int32_t and uint32_t types.
This change ensures consistent integer handling throughout the codebase.
2024-05-30 19:24:09 +02:00
Franz Höpfinger 574c760b7f Update attribute query functions to use int32_t and uint32_t types.
- Changed QueryAttribute parameter type from int* to int32_t*
- Changed QueryAttribute parameter type from unsigned int* to uint32_t*
2024-05-30 19:22:25 +02:00
Franz Höpfinger 5d219c893b Update attribute query functions to use int32_t and uint32_t types.
- Changed QueryIntAttribute parameter type from int* to int32_t*
- Changed QueryUnsignedAttribute parameter type from unsigned int* to uint32_t*
2024-05-30 19:21:27 +02:00
Franz Höpfinger fd26a5ee1f Update QueryIntValue and QueryUnsignedValue to use int32_t and uint32_t types for better consistency. 2024-05-30 19:15:52 +02:00
Albert Hung dded8bb2e9 Fix format specifier mismatch in XMLUtil::ToStr
In the XMLUtil::ToStr( uint64_t v, char* buffer, int bufferSize ) function, the format specifier %llu was used with a signed long long argument. This caused a type mismatch warning. The argument has been changed to unsigned long long to match the format specifier, resolving the warning.
2024-05-15 19:43:55 +08:00
Lee Thomason 312a809224 Merge pull request #976 from leethomason/AlbertHungGarmin-format_error
Albert hung garmin format error
2024-04-20 19:46:41 -07:00
Lee Thomason c33aae04d9 kick the system 2024-04-20 19:44:22 -07:00
Lee Thomason 0f9c021a44 Merge pull request #973 from davidoakley/fix-android-before-api24
Use fseek/ftell on Android when api level < 24
2024-04-20 19:34:58 -07:00
David Oakley dfc20c5f8f Android SDK<24 doesn’t support fseeko/ftello
Fall back to using fseek/ftell;
This was broken by https://github.com/leethomason/tinyxml2/pull/903/commits/d9fb8d34439be452c18b63713e2e0ae0e6028072
2024-04-08 12:58:12 +01:00
Albert Hung 1d658f0d95 Fix format error of TIXML_SNPRINTF
The format "%x" is treated as an unsigned int by the GCC compiler. Use static_cast to cast the error to an unsigned int to match the "%x" type. Additionally, replace int(error) with static_cast<int>(error) to avoid the old-style cast warning.
2024-03-19 14:22:17 +08:00
Lee Thomason 321ea883b7 Merge pull request #965 from leethomason/v10.0.0
V10.0.0
10.0.0
2023-12-30 18:08:30 -08:00
Lee Thomason 26985b5785 new docs 2023-12-30 18:03:36 -08:00
Lee Thomason 35099af4f3 updating version 2023-12-30 17:56:34 -08:00
Lee Thomason c2d30872e2 Merge pull request #963 from leethomason/dfaure-kdab-work/dfaure/Wundef
Add missing "defined"
2023-11-21 12:39:33 -08:00
Lee Thomason 6b6d1214a7 Merge branch 'work/dfaure/Wundef' of https://github.com/dfaure-kdab/tinyxml2 into dfaure-kdab-work/dfaure/Wundef 2023-11-21 12:35:56 -08:00
Lee Thomason 800431aa68 Merge pull request #962 from leethomason/leethomason/vs
Remove non-cmake build systems
2023-11-21 12:35:20 -08:00
Lee Thomason b69be03db2 update the readme 2023-11-21 12:28:05 -08:00
Lee Thomason 016ef7798d remove vs; easier to use cmake 2023-11-21 12:26:45 -08:00
Lee Thomason 7c99119fd2 Merge pull request #961 from leethomason/vimproved-master
Testing build fixes
2023-11-21 12:25:57 -08:00
Lee Thomason 2d59aaf0da Merge branch 'master' of https://github.com/vimproved/tinyxml2 into vimproved-master 2023-11-21 12:16:06 -08:00
Lee Thomason e0302bfd44 merged 2023-11-21 12:15:37 -08:00
Lee Thomason bfc4ac4f58 Merge pull request #960 from leethomason/kcsaul-pedantic-whitespace
Integrate branch with Pedantic whitespace
2023-11-21 12:12:41 -08:00