summaryrefslogtreecommitdiffstats
path: root/CAN-binder/libs/nanopb/tests/regression/issue_205
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-05-02 17:51:53 +0200
committerRomain Forlot <romain.forlot@iot.bzh>2017-05-02 17:51:53 +0200
commit3102ec9ce009d0f28355c5b7df9c5bd5013e6e75 (patch)
tree80a1ea19ff06cc9308b236a0d8d6358d21dd0381 /CAN-binder/libs/nanopb/tests/regression/issue_205
parent12e680a3c97a2750c657a8c561a79706f3689149 (diff)
parent278ffb890e3d8722e4c7d824baaf221a1e375fc4 (diff)
Add 'CAN-binder/libs/nanopb/' from commit '278ffb890e3d8722e4c7d824baaf221a1e375fc4'
git-subtree-dir: CAN-binder/libs/nanopb git-subtree-mainline: 12e680a3c97a2750c657a8c561a79706f3689149 git-subtree-split: 278ffb890e3d8722e4c7d824baaf221a1e375fc4
Diffstat (limited to 'CAN-binder/libs/nanopb/tests/regression/issue_205')
-rw-r--r--CAN-binder/libs/nanopb/tests/regression/issue_205/SConscript14
-rw-r--r--CAN-binder/libs/nanopb/tests/regression/issue_205/size_corruption.c12
-rw-r--r--CAN-binder/libs/nanopb/tests/regression/issue_205/size_corruption.proto11
3 files changed, 37 insertions, 0 deletions
diff --git a/CAN-binder/libs/nanopb/tests/regression/issue_205/SConscript b/CAN-binder/libs/nanopb/tests/regression/issue_205/SConscript
new file mode 100644
index 0000000..ed8899d
--- /dev/null
+++ b/CAN-binder/libs/nanopb/tests/regression/issue_205/SConscript
@@ -0,0 +1,14 @@
+# Check that pb_release() correctly handles corrupted size fields of
+# static arrays.
+
+Import('env', 'malloc_env')
+
+env.NanopbProto('size_corruption')
+
+p = malloc_env.Program(["size_corruption.c",
+ "size_corruption.pb.c",
+ "$COMMON/pb_decode_with_malloc.o",
+ "$COMMON/pb_common_with_malloc.o",
+ "$COMMON/malloc_wrappers.o"])
+env.RunTest(p)
+
diff --git a/CAN-binder/libs/nanopb/tests/regression/issue_205/size_corruption.c b/CAN-binder/libs/nanopb/tests/regression/issue_205/size_corruption.c
new file mode 100644
index 0000000..08cef45
--- /dev/null
+++ b/CAN-binder/libs/nanopb/tests/regression/issue_205/size_corruption.c
@@ -0,0 +1,12 @@
+#include "size_corruption.pb.h"
+#include <pb_decode.h>
+
+int main()
+{
+ MainMessage msg = MainMessage_init_zero;
+ msg.bar_count = (pb_size_t)-1;
+ pb_release(MainMessage_fields, &msg);
+
+ return 0;
+}
+
diff --git a/CAN-binder/libs/nanopb/tests/regression/issue_205/size_corruption.proto b/CAN-binder/libs/nanopb/tests/regression/issue_205/size_corruption.proto
new file mode 100644
index 0000000..6c9c245
--- /dev/null
+++ b/CAN-binder/libs/nanopb/tests/regression/issue_205/size_corruption.proto
@@ -0,0 +1,11 @@
+syntax = "proto2";
+import 'nanopb.proto';
+
+message SubMessage {
+ repeated int32 foo = 1 [(nanopb).type = FT_POINTER];
+}
+
+message MainMessage {
+ repeated SubMessage bar = 1 [(nanopb).max_count = 5];
+}
+