622 Commits

Author SHA1 Message Date
Robert Edmonds
38af0d26ab
Merge pull request #453 from wolframroesler/no-unused-parameter
Avoid "unused function parameter" compiler warning
2021-02-18 21:36:05 -05:00
Wolfram Rösler
a60f2680d2
Avoid "unused function parameter" compiler warning 2021-02-18 18:33:24 -08:00
Robert Edmonds
1afa3f67b0
Merge pull request #455 from ihsinme/patch-1
fix invalid unsigned arithmetic.
2021-02-18 21:30:57 -05:00
Robert Edmonds
32f0a781c7
Merge pull request #456 from ppietrasa/master
Install debug symbols alongside the protobuf-c.lib
2021-02-18 21:21:46 -05:00
ihsinme
abca6f6cb6 fix invalid unsigned arithmetic. 2021-02-10 11:41:38 +03:00
Piotr Pietraszkiewicz
f53a8c98ad Install debug symbols alongside the protobuf-c.lib
A user of the protobuf-c library is confronted with MSVC warnings about missing
PDB if the library happens to be built/configured using the CMAKE_BUILD_TYPE
"Debug" or "RelWithDebInfo". This commit deals away with the warning by
installing the "protobuf-c.pdb" alongside the lib. The .pdb is installed only
if it exists. Configuring "Release" or building under Linux won't produce and
won't install the PDB.
2021-02-08 13:58:52 +01:00
Robert Edmonds
94532c7a63
Merge pull request #443 from acozzette/std-string
Updated the generator to fully qualify std::string
2020-10-16 20:03:05 -04:00
Adam Cozzette
3d2ed0d410 Updated the generator to fully qualify std::string
The protobuf common.h header currently has a "using std::string;"
statement that pulls std::string into the google::protobuf namespace:
ce66f6047d/src/google/protobuf/stubs/common.h (L195)

I plan to delete that line soon. To keep protobuf-c working, this commit
updates the generator to fully qualify std::string.
2020-10-16 16:45:21 -07:00
Robert Edmonds
5f2484642b
Merge pull request #438 from daxtens/next
Travis CI: Test on other platforms
2020-09-06 17:29:43 -04:00
Daniel Axtens
50cec74c8b travis: Test across a range of platforms
Travis CI now supports testing on arm64, ppc64le and s390x. It would
be nice to test on them.

Signed-off-by: Daniel Axtens <dja@axtens.net>
2020-07-23 11:18:14 +10:00
Daniel Axtens
ae76c6590f travis: Bump distro version to Bionic
Bionic contains more recent compilers, which are required to have
the sanitisers work under s390x.

While we're at it, the 'sudo' key is deprecated, so remove it:

https://blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration

(It used to be used to mark VM vs docker container infrastructure,
but currently all amd64 builds run on VMs and all other archs run
inside LXD containers.)

Signed-off-by: Daniel Axtens <dja@axtens.net>
2020-07-23 11:11:44 +10:00
Robert Edmonds
19abc46140
Merge pull request #431 from SeRoSystems/dev/inline
Pack nested messages inline
2020-06-20 16:01:47 -04:00
Robert Edmonds
d18a21d5ba
Merge pull request #430 from protobuf-c/ilya-underscore
protoc-c: Remove leading underscores from structs
2020-06-20 15:56:46 -04:00
Robert Edmonds
cf04fa717e
Merge pull request #429 from protobuf-c/ilya-357
protobuf-c.c: Cast %lu args to unsigned long int
2020-06-20 15:51:49 -04:00
Robert Edmonds
bca6ced64d
Merge pull request #425 from protobuf-c/ilya-cmake
Standardize pkg-config for use by autotools and cmake, fix cmake tests
2020-06-20 15:49:27 -04:00
Robert Edmonds
6d08d99dec
Merge pull request #428 from protobuf-c/ilya-331
protobuf-c.h: Fix Windows DLL export (Fixes #331)
2020-06-20 15:29:03 -04:00
Robert Edmonds
cc79026e82
Merge pull request #427 from protobuf-c/ilya-oneof
c_message.cc: Resolve name conflict (Fixes #389)
2020-06-20 15:26:19 -04:00
Markus Engel
2804820230 Pack nested messages inline
Signed-off-by: Markus Engel <engel@sero-systems.de>
2020-05-14 12:30:51 +02:00
Ilya Lipnitskiy
cd671dbc3d protobuf-c.c, protoc-c: Remove leading underscores
Fixes #188.

Implements suggested fix from the issue:
The struct tag namespace is different from the type namespace. Use the
same symbol names (i.e. without leading underscores) in every namespace.
2020-05-13 15:30:20 -07:00
dota17
5af12e4581 Added instructions for testing in README 2020-05-13 14:37:51 -07:00
Ilya Lipnitskiy
2102d3a2c5 CMakeLists.txt: Don't include Dart if no tests
Also use BUILD_TESTS instead of CMAKE_BUILD_TYPE in other places in the
file.
2020-05-13 13:38:34 -07:00
Ilya Lipnitskiy
4c86c6b333 Add test for #389 2020-05-13 13:20:48 -07:00
Ilya Lipnitskiy
e43ed4f01d protobuf-c.c: Cast %lu args to unsigned long int
Resolves an ambiguity that %zu was meant to address, since %zu is not
present on all platforms.

Fixes #357.
2020-05-13 10:52:15 -07:00
Ilya Lipnitskiy
4c8043d026 protobuf-c.h: Fix Windows DLL export (Fixes #331)
protobuf_c_empty_string is used in generated .pb-c.{c,h} files so it
should be exported properly.
2020-05-12 17:54:15 -07:00
Ilya Lipnitskiy
93afe2d52d c_message.cc: Resolve name conflict (Fixes #389) 2020-05-12 12:21:48 -07:00
James Benton
e01b30d4fe Add BUILD_TESTS option to CMake build. 2020-05-12 10:21:30 -07:00
Ilya Lipnitskiy
56b8d915be Move Doxygen back to GitHub domain
lib.protobuf-c.io is no longer reachable.
2020-05-09 15:23:27 -07:00
Ilya Lipnitskiy
12973e7f3f CMakeLists.txt: Add option to disable protoc-gen-c 2020-05-09 15:08:28 -07:00
Ilya Lipnitskiy
3d3b5fe220 CMakeLists.txt: Enforce C++11 for old compilers 2020-05-09 14:29:06 -07:00
Ilya Lipnitskiy
ce75229b6a CMakeLists.txt: Fix protoc-c crashes on Linux
-lpthread was missing from the linker command line. See
https://github.com/protocolbuffers/protobuf/issues/5107 for more
details.

.travis.yml: Run CMake debug build for verification
2020-05-09 13:27:33 -07:00
Ilya Lipnitskiy
db6c49cc43 CMakeLists.txt: Add pkg-config logic (Fixes #339) 2020-05-09 13:27:23 -07:00
Ilya Lipnitskiy
d6eaa410b6 libprotobuf-c.pc.in: Add URL, use standard macros
PACKAGE_DESCRIPTION is defined in configure.ac. PACKAGE_NAME,
PACKAGE_VERSION, and PACKAGE_URL come from AC_INIT.

This change will ensure that libprotobuf-c.pc.in could also be used by
CMake.
2020-05-08 18:52:42 -07:00
Robert Edmonds
39cd58f5ff
Merge pull request #399 from protobuf-c/edmonds/version/1.3.3
Bump version to 1.3.3
2020-02-13 18:43:35 -05:00
Robert Edmonds
f20a3fa131 ChangeLog: 1.3.3 v1.3.3 2020-02-13 18:42:42 -05:00
Robert Edmonds
d0531beaad Bump version to 1.3.3 2019-12-04 16:08:05 -05:00
Robert Edmonds
e7c18ecda7
Merge pull request #350 from msshapira/patch-2
fix suport for MSVC static build
2019-12-04 13:35:36 -05:00
Markus Engel
687f27726c Fixed endianness check for cmake
Signed-off-by: Markus Engel <engel@sero-systems.de>
2019-10-18 21:23:55 -04:00
Robert Edmonds
ef868b712f
Merge pull request #400 from protobuf-c/ilya-zigzag
protobuf-c.c: Make zigzag encoding more compact
2019-10-18 21:21:27 -04:00
Robert Edmonds
ff04761e39
Merge pull request #392 from acozzette/fix-test-asserts
Fixed some test assertions in test-generated-code2.c
2019-10-18 21:15:21 -04:00
Robert Edmonds
1f3d4e2e94
Merge pull request #378 from protobuf-c/ilya/coverage
.travis.yml: Reenable code coverage
2019-10-18 21:14:22 -04:00
Ilya Lipnitskiy
66e8aa5ed3 protobuf-c.c: Make zigzag encoding more compact
Also match upstream code in src/google/protobuf/wire_format_lite.h
2019-10-18 10:40:24 -07:00
Robert Edmonds
9f89e64083
Merge pull request #398 from protobuf-c/edmonds/issue330-requires-proto3
Makefile.am: Only enable the Issue #330 test case when building against protobuf 3.x
2019-10-17 20:19:43 -04:00
Robert Edmonds
dc3057c840 Makefile.am: Only enable the Issue #330 test case when building against protobuf 3.x
Issue #330 is a bug in proto3 behavior and the test case handling it
needs a 'syntax = "proto3";' line in its .proto file, which is not
supported by the protobuf 2 implementation.

Since we still support building against protobuf 2, this commit
conditionalizes the Issue #330 test case so that it is only built when
protobuf-c is being built against protobuf 3.
2019-10-17 19:01:35 -04:00
Adam Cozzette
5ee9afdc15 Fixed some test assertions in test-generated-code2.c
I fixed a couple test assertions here that seemed to be accidentally
using assignment (=) instead of equality (==).
2019-08-27 11:07:26 -07:00
Robert Edmonds
1390409f4e
Merge pull request #384 from protobuf-c/edmonds/version/1.3.2
Bump version to 1.3.2
v1.3.2
2019-06-24 01:07:52 -04:00
Robert Edmonds
1f68c67e15 ChangeLog: 1.3.2 2019-06-24 00:52:57 -04:00
Robert Edmonds
62ecf2b467 Bump version to 1.3.2 2019-06-24 00:37:47 -04:00
Ilya Lipnitskiy
8f92882d4b .travis.yml: Reenable code coverage
Code coverage option was removed in the xenial update change (fe36c1677)
2019-05-20 10:49:27 -07:00
Robert Edmonds
d712e0c52d
Merge pull request #299 from guerital/tag-zero-fix
Check if tag is equal to 0
2019-05-18 18:06:19 -04:00
Robert Edmonds
4a7fde66fc Fix whitespace error in previous commit 2019-05-18 17:52:58 -04:00
Robert Edmonds
a6556fb372
Merge pull request #358 from ugurkoltuk-adyen/ugurkoltuk-adyen/message_check_fix
Fix a SEGV on on protobuf_c_message_check on messages with 'oneof's inside
2019-05-18 17:52:13 -04:00
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
Hayri Ugur Koltuk
ad6952d9f2 Add test case for protobuf_c_check SEGV on unpopulated oneof member
Signed-off-by: Hayri Ugur Koltuk <ugur.koltuk@adyen.com>
2019-04-16 09:30:08 +02: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
Hayri Ugur Koltuk
5d043e544f Fix a SEGV on on protobuf_c_check on messages with oneofs inside
Signed-off-by: Hayri Ugur Koltuk <ugur.koltuk@adyen.com>
2019-02-05 13:57:07 +01:00
msshapira
4d9d0614d4
fix suport for MSVC static build 2018-11-12 17:43:59 +02: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
Italo Guerrieri
565118bf26 Check if tag is equal to 0
This is needed because in the syntax of Google protobuf the zero
value is not valid tag value. The specification
(https://developers.google.com/protocol-buffers/docs/proto3) says
that "The smallest tag number you can specify is 1, and the largest
is 2^29-1, or 536,870,911."
2017-11-29 18:36:08 +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