Commit Graph

212 Commits

Author SHA1 Message Date
Torleiv Sundre a6bf728a5c Correctly check return value of snprintf
In MSGPACK_CHECKED_CALL, the return value of snprintf is incorrectly
assumed to mean success if it is less than or equal to the buffer size.
The call should only be considered a success if the return value is less
than the buffer size.

This commit adds two unit tests that illustrates the issue and fixes the
issue, making the unit tests pass.
2019-12-04 14:20:12 +01:00
Takatoshi Kondo 7cdc5b88e3 Merge pull request #780 from redboltz/fix_774
Fixed #774.
2019-05-27 17:05:55 +09:00
David LeBlanc 7a70d74971 Use a #define to only check for integer overflow when it is actually
possible
2019-05-08 18:49:55 -07:00
David LeBlanc fcf89fe901 Fix tabs, also attempt work-around for compile time constant conditional
warning
2019-05-08 17:59:10 -07:00
Takatoshi Kondo ec8c0bc1c1 Fixed #774.
Added checking code for snprintf return value.
2019-05-07 14:00:35 +09:00
David LeBlanc a2f3689865 Older compilers don't allow declaring variables other than at the top of
the block if it is a C file.
2019-05-06 19:28:25 -07:00
David LeBlanc 2d54c0e918 Change integer overflow check to conform with spec 2019-05-06 17:29:40 -07:00
David LeBlanc fadc615f4e Fix typo 2019-04-19 14:08:09 -07:00
David LeBlanc eff6f5a2fd Two more tabs 2019-04-11 15:58:49 -07:00
David LeBlanc ed30252bdc Spaces not tabs 2019-04-11 15:57:25 -07:00
David LeBlanc 2deed25da0 Fix for issue 775
Fix possibly incorrect integer overflow check with an efficient correct check. Not fixing the issue where size == 0, unsure if this is by design, or what error to return if not.
2019-04-11 15:54:12 -07:00
Petr Benes 09e06a8cb7 Add support for Windows Drivers 2019-01-17 17:44:57 +01:00
Takatoshi Kondo b893f7750c Fixed #746.
Eliminated redundant zone allocation in unpacking process.
ARRAY and MAP is construced on the zone.
STR, BIN, and EXT refer to unpack buffer, and the buffer is reference
counted via zone (finalizer).

So zone is only needed if those types are appeared during unpacking
process.

I set zone to NULL by default. And the context has the pointer to
pointer to the zone. If the context meets ARRAY, MAP, STR, BIN, or EXT,
and zone (via pointer) is NULL, then allocate new zone.

It is lazy zone allocation strategy.
2018-11-23 11:08:08 +09:00
tbeu d72765870a Move overflow check up 2018-09-06 15:09:52 +02:00
tbeu c056026dad Fix memory leaks 2018-09-04 22:24:40 +02:00
jwang b3dfe28be4 adding int overflow checks to vrefbuffer 2018-09-03 22:23:52 +02:00
jwang e703d8a2f7 adding int overflow checks to vrefbuffer 2018-09-03 22:23:52 +02:00
tbeu c99fd62ae6 Fix VS2010 build errors on return types 2018-09-02 19:55:33 +02:00
Takatoshi Kondo 5ece2ef2c7 Fixed #637.
<<< Breaking change >>>
In the functions unpack() and parse(),
Old behavior: If any parse error is happend, offset is NOT updated.
New behavior: If any parse error is happend, offset is updated to the
position the error happened.

It helps MessagePack format error analysis.

If you want to old behavior, copy the original value of offset and then call unpack()
and/or parse().
2017-10-22 18:22:41 +09:00
Stefan Herbrechtsmeier 004939e732 Pass wildcard precision of snprintf as int
Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
2017-03-22 13:05:47 +01:00
Takatoshi Kondo a933fa5892 Merge pull request #557 from obache/neatsrc/fix-char-subscripts-warnings
Make sure to pass `unsigned char` to `isprint()`
2017-01-13 14:15:15 +09:00
OBATA Akio c955727d8c Make sure to pass unsigned char to isprint()
This change make safe for `char = signed char`.

As the spec, argment of `isprintf()` must be representabe as an
`unsigned char` (or equal to EOF, not expected here).
Additionally, some implementation define it as a macro using array,
then it cause warning "array subscript has type `char` [-Wchar-subscripts]"
with `char` argments.
2017-01-12 15:01:04 +09:00
OBATA Akio 094b70213a Strip unwanted CR before EOL 2017-01-12 14:35:51 +09:00
Takatoshi Kondo 364fc0daf6 Fixed redundant caluclation. 2016-12-14 10:02:49 +09:00
Takatoshi Kondo 9a113bb0ca Fixed C unpack return code. 2016-12-14 00:07:43 +09:00
Takatoshi Kondo c5c3de8f61 Fixed integer overflow and EXT size problem. 2016-12-13 15:47:20 +09:00
Takatoshi Kondo ccc9ac5538 Fixed #521.
Introduced new object type `FLOAT32` and `FLOAT64`.
`FLOAT64` is equivalent to `FLOAT`.
The both internal expressions are f64(double).
2016-10-11 23:23:06 +09:00
Eduardo Silva b90bcf3c11 unpack: unpacker_next_with_size() update parsed bytes on success or continue
This patch makes unpacker_next_with_size(...), update p_bytes when
unpacker_next() returns MSGPACK_UNPACK_SUCCESS or MSGPACK_UNPACK_CONTINUE.

Signed-off-by: Eduardo Silva <eduardo@treasure-data.com>
2016-09-06 10:46:30 -06:00
Eduardo Silva d9a77e220a unpack: new msgpack_unpacker_next_with_size() function
This new function is an extension of the original msgpack_unpacker_next()
where it now adds third argument to store the number of parsed bytes for
the returned buffer upon a MSGPACK_UNPACK_SUCCESS case.

This is useful for cases where the caller needs to optimize memory usage
in the original buffer,s so upon success retrieval of the object, it can
later deprecate the already 'parsed' bytes.

For more details about the origins of this function please refer to the
following issue on github:

  https://github.com/msgpack/msgpack-c/issues/514

Signed-off-by: Eduardo Silva <eduardo@treasure-data.com>
2016-08-31 16:49:14 -06:00
Stefan Mititelu c73d9a9dab Print unprintable characters in memory buffer 2016-07-19 12:17:38 +00:00
Takatoshi Kondo 48abfe7aa1 Adusted coding style. 2016-07-16 10:25:38 +09:00
Takatoshi Kondo 8105c33f9d Merge branch 'bin-printer' of https://github.com/iphydf/msgpack-c into iphydf-bin-printer 2016-07-16 10:19:40 +09:00
Takatoshi Kondo b9bc9d4195 Replaced uint32_t with size_t.
User buffer size is not limited by msgpack-c so size_t is the
appropriate type.
2016-07-16 09:32:19 +09:00
iphydf 1da0539a00 Improve bin/ext printer for unprintable characters.
msgpack_object_print used fwrite to write binary data to a stream. The intention
of the function is to produce a human-readable representation of the object for
debugging purposes. Having arbitrary data dumped as is can cause issues with
terminals that interpret it as control sequences.

This change prints printable characters as is and unprintable characters as
hex-escapes ("\xNN"). Note that UTF-8 encoded characters will now be printed as
escaped sequence of UTF-8 bytes. This is an acceptable compromise, as doing
otherwise would require a light form of UTF-8 decoding and BIN-typed objects
should not be used to transport UTF-8 strings anyway (STR should be used
instead).
2016-07-12 13:31:05 +02:00
Stefan Mititelu 4fa661a63d Add msgpack_object_print_buffer() function
In order to print the msgpack object in a memory buffer.
2016-07-07 22:43:48 +03:00
Takatoshi Kondo 4ee616bbde Removed autotools and msvc files.
Please use cmake.
2016-06-05 21:54:59 +09:00
Takatoshi Kondo 89faf6ee9f Updated boost predef and preprocessor from 1.58.0 to 1.61.0 2016-05-30 13:20:58 +09:00
Takatoshi Kondo b68c073d1b Moved gcc_atomic.hpp location. 2016-05-30 09:55:16 +09:00
Takatoshi Kondo 7094e0872e Added msgpack-c library file generation.
When you add or remove .h .hpp .c files in the msgpack-c library, run
make_file_list.sh. It generates (overwrites) Files.cmake for cmake and
src/files.mk for autotools. They are a part of repository managed
files. Files.cmake is included by CMakeLists.txt and src/files.mk is
included by src/Makefile.am.
2016-05-29 21:09:03 +09:00
Takatoshi Kondo cc02da0ccf Fixed #465
Added C-Style array support.

Existing mapping:
  convert:
  pack:
    char[N]       => STR
    const char[N] => STR
  object:
    char[N]       => STR (v1 only)
    const char[N] => STR (v1 only)
  object_with_zone:
    char[N]       => STR
    const char[N] => STR

Additional mapping:

  convert:
    STR        => char[N]
    ARRAY      => T[N]
  pack:
    T[N]       => ARRAY
    const T[N] => ARRAY
  object:
  object_with_zone:
    T[N]       => ARRAY
    const T[N] => ARRAY
2016-05-16 23:00:30 +09:00
Takatoshi Kondo db90ee4283 Removed obsolete unpack() API. 2016-03-26 11:46:45 +09:00
Takatoshi Kondo 31a06a0682 Removed obsolete APIs form v2.
Removed MSGPACK_DISABLE_LEGACY_CONVERT from v2. Those APIs are removed
from v2.
2016-03-25 09:16:27 +09:00
Takatoshi Kondo f88e621dca Fixed zone expansion algorithm.
See:
https://github.com/msgpack/msgpack-c/pull/160#commitcomment-16087596
2016-02-16 12:18:38 +09:00
Takatoshi Kondo 54cb4350b3 Re-organized tree to prepare for version 2.0.0.
See https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_versioning
2016-01-31 19:28:31 +09:00
Takatoshi Kondo c06d4d70ef Fixed #395
libmsgpack.[a|so] is the library file for C++.
libmsgpackc.[a|so] is the library file for C.
Since version 1.0.0, the C++ parts of msgpack-c is a header only
library. So libmsgpack.* shouldn't be generated.

On the autotools building environment, removed libmsgpack.*
generation. On the cmake building environment, replaced libmsgpack.*
with libmsgpackc.* and set so-version to 2.0.0.
2016-01-14 07:59:37 +09:00
Takatoshi Kondo ba15089d86 Version 1.3.0.
Updated the license from the license from the Apache License Version 2.0
to the Boost Software License, Version 1.0.
Removed unused files.
2015-11-21 12:41:46 +09:00
Takatoshi Kondo 428780db53 Added std::reference_wrapper packing and making object and object_with_zone support.
Fixed #370.
2015-10-09 15:45:29 +09:00
Nobuyuki Kubota 2b38389f68 Add missing files to Makefile.am 2015-09-04 19:18:23 +09:00
Nobuyuki Kubota 93142323f0 Merge pull request #349 from redboltz/variant
Variant
2015-09-04 18:42:47 +09:00
Nobuyuki Kubota 3352b2f029 Merge pull request #359 from redboltz/fix_243
Fixed #243.
2015-09-04 18:34:19 +09:00