Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2016-09-19 | Change internal storage of PLIST_DATE values from struct timeval to double | Nikias Bassen | 4 | -36/+16 | |
This removes the timeval union member from the plist_data_t structure. Since struct timeval is 2x64bit on 64bit platforms this member unnecessarily grew the union size to 16 bytes while a size of 8 bytes is sufficient. Also, on 32bit platforms struct timeval is only 2x32bit of size, limiting the range of possible time values. In addition the binary property list format also stores PLIST_DATE nodes as double. | |||||
2016-09-08 | Make sure plist_cleanup() symbol is actually public | Martin Szulecki | 1 | -1/+1 | |
2016-06-29 | xplist: Plug memory leak when converting PLIST_UID nodes to XML | Nikias Bassen | 3 | -1/+3 | |
In node_to_xml nodes of type PLIST_UID are temporarily converted to a PLIST_DICT for an appropriate XML output. Therefore a PLIST_KEY and a PLIST_UINT node is created and inserted into the PLIST_DICT node. Upon completion, the child nodes of the PLIST_DICT node are detached from the original node and freed, however the data of the child nodes - the key string and the uint value - are not. This commit fixes it. | |||||
2016-06-29 | test: Add another test case for signed/unsigned (multiple) integers | Nikias Bassen | 4 | -0/+35 | |
Apart from testing the actual integer signed vs. unsigned value storage and conversion, this test will check that the binary plist optimization is not re-using existing values. Basically it will test the fix that was introduced with commit acd226d1f71a78dd23b47a9a5c4ca8cf8068d509. | |||||
2016-06-29 | plist_data_compare: Make sure to compare the node sizes for integer nodes | Nikias Bassen | 1 | -0/+2 | |
Without this check, e.g. the values -1 and 18446744073709551615 would yield in a match, since the comparison will just compare the uint64_t values. However, any value >= 9223372036854775808 and <= 18446744073709551615 is stored as a 128 bit value in binary plist format to make sure it is recognized as an unsigned value. We store it internally as a uint64_t value, but we set the size to 16 vs. 8 accordingly; so this commit will make sure the binary plist optimization will not re-use matching uint64_t values of actually mismatching signed/unsigned values. | |||||
2016-05-12 | Implement plist_from_memory() | Christophe Fergeau | 2 | -0/+26 | |
Rather than having everyone reimplement binary/XML plist detection by looking at the first bytes of the plist content, it's better to do this detection in libplist and hide that internal detail from library users. | |||||
2016-05-12 | Add plist_is_binary() | Christophe Fergeau | 2 | -0/+22 | |
It can be useful if one needs to know what type of plist a memory buffer contains. | |||||
2016-05-12 | Allow to run autogen.sh outside $top_srcdir | Christophe Fergeau | 1 | -11/+18 | |
This makes it more convenient to do builds out of the source dir. | |||||
2016-05-12 | bplist: Speed up plist_to_bin conversion for large plists | Nikias Bassen | 3 | -9/+12 | |
Using a better hashing algorithm and a larger hash table the conversion is A LOT faster when processing large plists. Thanks to Xiao Deng for reporting this issue and suggesting a fix. | |||||
2016-04-20 | Move libxml cleanup code to a plist_cleanup method | Frederik Carlier | 3 | -17/+31 | |
2016-04-20 | cython: Fix module build with libplist already installed | Elan Ruusamäe | 1 | -1/+1 | |
see https://github.com/pld-linux/libplist/commit/a4a4e4b04caef3f9875b598d64ffb1fb388e699e | |||||
2015-12-07 | Node.cpp: let plist_t operations free _node when in a container. | Aaron Burghardt | 1 | -1/+6 | |
Fixes libimobiledevice/libplist#50. | |||||
2015-11-13 | xplist: Get rid of setlocale() and use custom function to print floating ↵ | Nikias Bassen | 1 | -14/+32 | |
point values | |||||
2015-02-05 | test: Add missing .test files | Nikias Bassen | 3 | -0/+35 | |
2015-02-05 | test: Add more test cases covering binary plist issues | Nikias Bassen | 5 | -2/+32 | |
2015-02-05 | bplist: Refactor binary plist parsing in a recursive way | Nikias Bassen | 1 | -209/+167 | |
2015-01-31 | bplist: Plug memory leaks caused by unused (and unfreed) buffer | Nikias Bassen | 1 | -5/+0 | |
When parsing binary plists with BPLIST_DICT or BPLIST_ARRAY nodes that are referenced multiple times in a particular file, a buffer was allocated that was not used, and also not freed, thus causing memory leaks. | |||||
2015-01-31 | bplist: Fix possible crash in plist_from_bin() caused by access to already ↵ | Nikias Bassen | 1 | -3/+5 | |
freed memory Given a specifically ordered binary plist the function plist_from_bin() would free BPLIST_DICT or BPLIST_ARRAY raw node data that is still required for parsing of following nodes. This commit addresses this issues by moving the memory free to the end of the parsing process. | |||||
2015-01-29 | m4: Acutally report include path check before doing the check | Martin Szulecki | 1 | -1/+1 | |
2015-01-29 | m4: Use python-config if available to fix Python 3 support on newer distros | Martin Szulecki | 1 | -0/+6 | |
2015-01-29 | plistutil: Plug some memory leaks | Nikias Bassen | 1 | -2/+6 | |
2015-01-29 | plistutil: Use static buffer for stat() | Nikias Bassen | 1 | -6/+4 | |
2015-01-29 | Move pkg-config file into src directory | Martin Szulecki | 5 | -5/+5 | |
2015-01-29 | Improve maintainability and Requires of pkg-config files slightly | Martin Szulecki | 2 | -9/+7 | |
2015-01-28 | Require autoconf 2.64+ to use package bugreport and project URL in AC_INIT | Martin Szulecki | 1 | -2/+2 | |
2015-01-28 | Update README with new git URL, IRC and twitter profile | Martin Szulecki | 1 | -2/+5 | |
2015-01-23 | xplist: Plug memory leak by cleaning up libxml2's parser after use | Martin Szulecki | 1 | -0/+16 | |
This is actually considered bad practice. However, it appears this memory leak is otherwise not possible to fix due to a design flaw in how libxml2 handles the lifecycle of it's XML parser. We'll let the community test this in production now and decide. In our tests this change had no drawbacks except fixing the last known memory leak in libplist. | |||||
2015-01-23 | plistutil: Improve error message for a human if input file reading failed | Martin Szulecki | 1 | -1/+1 | |
2015-01-23 | plistutil: Cleanup code style a bit and remove obsolete extra header | Martin Szulecki | 3 | -102/+79 | |
2015-01-23 | Update and correct some copyright header comments | Martin Szulecki | 3 | -3/+8 | |
2015-01-23 | xplist: Fix limited but possible XXE security vulnerability with XML plists | Martin Szulecki | 1 | -4/+16 | |
By using a specifically crafted XML file an attacker could use plistutil to issue a GET request to an arbitrary URL or disclose a local file. The crafted XML file would be using a custom DTD with an external entity reference pointing to the file. Practical abuse is limited but let's still fix it nevertheless. Related to CVE-2013-0339 for libxml2 and CWE-827. Reported by Loïc Bénis from calypt.com. Thanks! | |||||
2015-01-23 | Add generation of documentation using "make docs" | Martin Szulecki | 2 | -2/+10 | |
2015-01-11 | Pass flag '-avoid-version' to libtool for libplist++ in addition to libplist ↵ | Aaron Burghardt | 1 | -0/+1 | |
for WIN32. | |||||
2014-10-22 | Workaround autoconf bug and ensure a C++ compiler is mandatory | Martin Szulecki | 1 | -0/+10 | |
If AC_PROG_CXX is used after AC_PROG_CC, it will return "g++" even if no C++ compiler is installed. However, as we need one, testing compiling a program will make configure fail if indeed no C++ compiler is installed. | |||||
2014-10-14 | Post-release version bump to 1.13 | Martin Szulecki | 1 | -1/+1 | |
2014-10-14 | Add "check-news" automake option to ensure correct NEWS file on releases1.12 | Martin Szulecki | 1 | -1/+1 | |
2014-10-14 | cython: Enforce default symbol visibility to make bindings loadable | Martin Szulecki | 1 | -1/+1 | |
2014-10-14 | cython: Use output variables instead of relative paths in Makefile | Martin Szulecki | 1 | -2/+2 | |
2014-10-14 | Update NEWS with latest changes | Martin Szulecki | 1 | -0/+24 | |
2014-10-14 | Bump so name correctly as some ABI symbols were removed | Martin Szulecki | 1 | -1/+1 | |
2014-10-09 | bplist: Fix plist_from_bin() changing value nodes to key nodes in dictionaries | Martin Szulecki | 1 | -11/+33 | |
The parsing logic for binary dictionaries wrongly enforced the key type even on nodes that were already parsed as value nodes. This caused the resulting plist_t node tree to have key nodes instead of value nodes within dictionaries for some valid binary plists. This commit should also generally fixes parsing of binary plist files which use an efficient dictionary reference table. | |||||
2014-10-03 | Bump so revision due to ABI changes | Nikias Bassen | 1 | -1/+1 | |
2014-10-03 | Drop src/common.h and use byte order macros from config.h directly | Nikias Bassen | 3 | -33/+15 | |
2014-10-03 | Avoid exporting non-public symbols | Nikias Bassen | 12 | -143/+141 | |
2014-09-26 | plist.h: Move deprecation marker before function declaration to make ↵ | Nikias Bassen | 1 | -1/+2 | |
non-gcc/clang compilers happy | |||||
2014-09-26 | C++: Add missing cstddef include to Node.h | Nikias Bassen | 1 | -0/+1 | |
2014-09-23 | bplist: Prevent crash in plist_from_bin() when parsing unusually structured ↵ | Nikias Bassen | 1 | -1/+1 | |
binary plist | |||||
2014-09-20 | C++: Make sure String::GetValue() and Key::GetValue() don't crash with NULL ↵ | Nikias Bassen | 2 | -4/+14 | |
strings | |||||
2014-09-20 | Added const to Array.GetSize(), and to 3 Node methods. | Aaron Burghardt | 4 | -9/+9 | |
2014-09-20 | Change Clone() to be const, which required constructors with const ↵ | Aaron Burghardt | 22 | -65/+71 | |
references and a const GetValue(). |