567 Commits

Author SHA1 Message Date
Jurriaan Bremer
b8cd15a84f protobuf-c: Fix -Wdeclaration-after-statement warning in parse_oneof_member()
* allow compilation with -pedantic (thanks @Bun)

Can be reproduced with the following command:

$ make CFLAGS=-pedantic protobuf-c/protobuf-c.o

* put el-size on a separate line
2019-05-18 17:47:23 -04:00
Robert Edmonds
c404ce3eb0
Merge pull request #377 from protobuf-c/ilya/issue330
Fix proto3 repeated scalar field default packing behavior (#330)
2019-05-18 17:16:37 -04:00
Robert Edmonds
ffe38d4df5
Merge branch 'next' into ilya/issue330 2019-05-18 17:02:29 -04:00
Robert Edmonds
2f98c76676
Merge pull request #376 from acozzette/fix-375
Fixed out-of-bounds read (#375)
2019-05-18 16:43:15 -04:00
Ilya Lipnitskiy
69c39824cf protoc-c/c_field.cc: Fix proto3 field packing #330
Fixes #330 and makes scalar repeated fields packed by default in proto3.

https://developers.google.com/protocol-buffers/docs/encoding#packed:
In proto3, repeated fields of scalar numeric types are packed by
default.
2019-05-17 13:29:06 -07:00
Ilya Lipnitskiy
6aa7dc7a10 Add test case for #330 2019-05-17 13:29:06 -07:00
Adam Cozzette
d58d7ca271 Fixed out-of-bounds read
The scan_length_prefixed_data() function returns the number of bytes
taken up by a varint length delimiter, plus the actual value of that
delimiter. Since it returns a uint32_t, a delimiter of 2^32 - 1 (or
close to that) could cause the return value to overflow and result in an
incorrect value.

At first I tried to fix it by making scan_length_prefixed_data() use a
size_t for its result, but I realized this would have no effect on
32-bit systems. To fix the problem for 32-bit, I changed the function to
return early if the length is 2 GiB or more (protobuf messages are not
allowed to be that large). I kept the size_t change anyway, since the
result will ultimately be stored in a size_t (ScannedMember.len) and we
might as well stay consistent with that.

Signed-off-by: Adam Cozzette <acozzette@google.com>
2019-05-16 12:30:08 -07:00
Robert Edmonds
9412830d06
Merge pull request #369 from protobuf-c/edmonds/protobuf-reflection-typedef-test-fix
t/generated-code2/cxx-generate-packed-data.cc: Fix build failure on newer protobuf
2019-04-10 21:43:03 -04:00
Robert Edmonds
7456d16212 t/generated-code2/cxx-generate-packed-data.cc: Fix build failure on newer protobuf
google::protobuf::Message::Reflection has been removed in newer versions
of protobuf. The replacement is google::protobuf::Reflection.

protobuf in commit 779f61c6a3ce02a119e28e802f229e61b69b9046 ("Integrate
recent changes from google3.", from August 2008) changed the following
in message.h:

    @@ -336,7 +337,8 @@ class LIBPROTOBUF_EXPORT Message {

       // Introspection ---------------------------------------------------

    -  class Reflection;  // Defined below.
    +  // Typedef for backwards-compatibility.
    +  typedef google::protobuf::Reflection Reflection;

The "typedef for backwards-compatibility" apparently lasted ten years
until protobuf commit 6bbe197e9c1b6fc38cbdc45e3bf83fa7ced792a3
("Down-integrate from google3.", from August 2018) which finally removed
the typedef:

    @@ -327,8 +344,6 @@ class LIBPROTOBUF_EXPORT Message : public MessageLite {

       // Introspection ---------------------------------------------------

    -  // Typedef for backwards-compatibility.
    -  typedef google::protobuf::Reflection Reflection;

This commit updates the only use of this typedef (in the test suite) to
directly refer to the replacement, google::protobuf::Reflection. This
fixes the build failure in the test suite.
2019-04-10 20:47:48 -04:00
Robert Edmonds
8a362db917
Merge pull request #368 from protobuf-c/edmonds/travis/protobuf-3.7.1
.travis.yml: Bump protobuf version to 3.7.1, use new URL
2019-04-10 20:46:27 -04:00
Robert Edmonds
8067d454b7 .travis.yml: Bump protobuf version to 3.7.1, use new URL 2019-04-10 20:28:52 -04:00
Robert Edmonds
269771b4b4
Merge pull request #335 from protobuf-c/edmonds/version/1.3.1
Bump version to 1.3.1
v1.3.1
2018-08-14 00:00:07 -04:00
Robert Edmonds
91486fdd11 ChangeLog: 1.3.1 2018-08-13 23:42:41 -04:00
Robert Edmonds
53bf6c0b7c Bump version to 1.3.1 2018-08-13 23:18:25 -04:00
Robert Edmonds
4176920e6b
Merge pull request #334 from protobuf-c/edmonds/ax_cxx_compile_stdcxx
Use AX_CXX_COMPILE_STDCXX macro to enable C++11 support in old compilers
2018-08-13 23:11:57 -04:00
Robert Edmonds
defc6f044b Revert ".travis.yml: Force C++ standard language version"
This reverts commit 0585e053a8723fbdea4deefe17b6a6512274cde5.

Now that we autodetect any needed flags to enable C++11 support with the
AX_CXX_COMPILE_STDCXX macro, we no longer need to force this in
.travis.yml.
2018-08-13 22:39:31 -04:00
Robert Edmonds
9becc1b66f configure.ac: Use AX_CXX_COMPILE_STDCXX to enable C++11 support in old compilers
This commit enables use of the AX_CXX_COMPILE_STDCXX macro from the
autoconf-archive (added in the previous commit), which automatically
adds needed flags to the CXX variable to enable C++11 support. This only
works and is only required on compilers that are both new enough to have
C++11 support and old enough to not enable it by default.

We call it with "noext" as the second argument (so that we get the "std"
C++11 variant on GCC) and "mandatory" as the third argument, since we
now rely on C++11 features as of 83c59e705f461cc08e5844d62514dff27c33a74f.

Note that this macro is only called when we are building the compiler
(i.e., without --disable-protoc) so that the library can still be built
on ancient C compilers.
2018-08-13 22:38:19 -04:00
Robert Edmonds
42612b4ba4 m4/ax_cxx_compile_stdcxx.m4: Import from autoconf-archive (serial 10) 2018-08-13 22:23:25 -04:00
Robert Edmonds
f3102ed227
Merge pull request #290 from matthid/master
fix mingw compilation
2018-08-13 22:10:38 -04:00
Sam Collinson
9b899c9d3b Check the return value of int_range_lookup before using as an array index; it can return -1 2018-08-13 22:07:17 -04:00
Robert Edmonds
8073f6ee23
Merge pull request #333 from protobuf-c/edmonds/protobuf-scoped_ptr-removal
Convert uses of protobuf's scoped_ptr.h to C++11 std::unique_ptr
2018-08-13 22:06:26 -04:00
Robert Edmonds
83c59e705f Convert uses of protobuf's scoped_ptr.h to C++11 std::unique_ptr
Upstream protobuf removed scoped_ptr.h, which provided the scoped_ptr
that we depended on, in commit 67952fab2c766ac5eacc15bb78e5af4039a3d398
(67952fab2c).

This commit converts uses of scoped_ptr type to idiomatic C++11
std::unique_ptr, similar to the changes in the protobuf commit.

This has been tested on protobuf 3.0.0 (the version currently in Debian)
as well as the latest protobuf 3.6.1 release.
2018-08-13 21:26:00 -04:00
Robert Edmonds
26a836423c
Merge pull request #309 from iveqy/add_std
Add std:: to some types
2018-08-13 20:57:46 -04:00
Robert Edmonds
3bcca236c9
Merge pull request #332 from protobuf-c/edmonds/travis-updates
Update Travis to use xenial, protobuf 3.6.1
2018-08-13 20:46:31 -04:00
Robert Edmonds
0585e053a8 .travis.yml: Force C++ standard language version
The xenial Travis-CI environment uses a g++ version that is old enough
that it doesn't use C++11 or newer by default, so we have to force it by
setting CXX to "g++ -std=c++11".
2018-08-13 20:24:05 -04:00
Robert Edmonds
3b7ba77c4d .travis.yml: Bump protobuf version to 3.6.1 2018-08-13 19:40:30 -04:00
Robert Edmonds
fe36c1677a .travis.yml: Update to xenial
This commit updates the base Travis-CI image from trusty to xenial,
which ships with a slightly more modern compiler.
2018-08-13 19:40:04 -04:00
Fredrik Gustafsson
034e603d2a Add std:: to some types
This is required for compilation to succeed on debian jessie with g++
6.3.0.
2018-03-11 08:57:46 +01:00
Matthias Dittrich
71273f3919 fix mingw compilation 2017-09-25 18:38:24 +02:00
Robert Edmonds
4912c5a574 Merge pull request #285 from protobuf-c/edmonds/protobuf-2.x-compatibility
Restore protobuf-2.x compatibility
2017-08-14 15:36:00 -04:00
Robert Edmonds
4302266b45 Restore protobuf-2.x compatibility
The change in commit 712154b912de824741381c0bb26c2fbed54515a3 ("Bump
minimum required header version for proto3 syntax") uses functionality
only exposed by protobuf-3.x, breaking the build when compiling against
protobuf-2.x.

Since we still want to support building against protobuf-2.x, this
commit makes the proto3 syntax check in the file generator dependent on
building against protobuf-3.x.
2017-08-07 12:31:55 -04:00
Robert Edmonds
dac1a65fea Merge pull request #283 from protobuf-c/edmonds/changelog/1.3.0
ChangeLog: 1.3.0
v1.3.0
2017-08-05 17:41:36 -04:00
Robert Edmonds
cd573da538 ChangeLog: 1.3.0 2017-08-05 16:46:57 -04:00
Robert Edmonds
ab599cfae8 Merge pull request #282 from protobuf-c/edmonds/proto3-bump-min_header_version
Bump minimum required header version for proto3 syntax
2017-07-30 22:51:25 -04:00
Robert Edmonds
712154b912 Bump minimum required header version for proto3 syntax
The changes in #274 (proto3: make strings default to "" instead of NULL)
add a new symbol to the library and add an 'extern' declaration to the
protobuf-c header file.

Since the compiler may generate files that depend on that new
'protobuf_c_empty_string' declaration in protobuf-c.h, we need to bump
the min_header_version value that is written into generated header
files. But since the 'protobuf_c_empty_string' symbol can only be
referenced when generating proto3 syntax files, we only need to use the
stricter min_header_version value when processing a proto3 file.
2017-07-29 20:16:22 -04:00
Robert Edmonds
631dbd0db7 .gitignore: t/generated-code3/test-generated-code3 2017-07-29 19:44:07 -04:00
Robert Edmonds
aee115c92b Merge pull request #281 from protobuf-c/edmonds/version/1.3.0
Bump version to 1.3.0
2017-07-29 19:43:41 -04:00
Robert Edmonds
25cb6e2bdf Bump version to 1.3.0 2017-07-29 19:30:36 -04:00
Robert Edmonds
d7189b6940 Merge pull request #280 from protobuf-c/edmonds/fix-namespace-errors
Fix namespace errors when compiled with latest protobuf
2017-07-29 19:10:00 -04:00
Robert Edmonds
582cad8bff Fix namespace errors when compiled with latest protobuf
The protobuf project removed "using namespace std" namespace pollution
from their stubs/common.h header file. This caused build failures for us
since we relied on their namespace pollution.

This commit updates protobuf-c to convert:

 'map' → 'std::map'
 'set' → 'std::set'
 'back_insert_iterator' → 'std::back_insert_iterator'
2017-07-29 18:52:28 -04:00
Robert Edmonds
858ce990e8 Merge pull request #274 from pbor/wip/empty-string
proto3: make strings default to "" instead of NULL
2017-07-29 18:17:15 -04:00
Paolo Borelli
2a46af4278 proto3: make strings default to "" instead of NULL
The spec talks about "empty string" and other languages like C#
return a zero length string and not null.
This is useful because when moving from proto2's "required string"
to a proto3's plain string we will be guaranteed that we
never get a null pointer.
The tradeoff is adding a special case to the library but avoiding
a lot of null checks in the calling code.
The current code is already special casing "" in pack_string.
2017-06-12 09:32:39 +02:00
Robert Edmonds
a8921fe7dc Merge pull request #267 from pbor/wip/zeroish
Rework is_zeroish one more time
2017-04-10 08:40:51 -07:00
Robert Edmonds
5464067168 Merge pull request #266 from alex85k/next
Update CMakeLists.txt
2017-04-10 08:27:05 -07:00
Paolo Borelli
4ca344ed9f Rework is_zeroish one more time
The "member" param cannot be NULL, so last patch was not correct.
However to be valgrind clean we need to cast to the right size.
2017-04-10 17:21:25 +02:00
alex85k
58a4514164 fixing tests building in CMake 2017-04-10 18:42:59 +05:00
Robert Edmonds
0014b7c046 Merge pull request #265 from pbor/wip/cleanup
Small cleanup in oneof handling
2017-04-09 09:44:46 -07:00
Robert Edmonds
448dba28d9 Merge pull request #264 from pbor/wip/zeroish
Fix proto3 "is zeroish" evaluation
2017-04-09 09:44:35 -07:00
Paolo Borelli
6bbcc433d5 Cleanup oneof handling
Small cleanups: pass the oneof case param by value instead of by
reference and use an early return if the case does not match.
2017-04-09 14:36:49 +02:00
Paolo Borelli
13b6e1fd00 Improve proto3 unit test
Make sure we actually include the proto3 generated header and
test nested submessages
2017-04-09 10:54:58 +02:00