Import of the watch repository from Pebble

This commit is contained in:
Matthieu Jeanson 2024-12-12 16:43:03 -08:00 committed by Katharine Berry
commit 3b92768480
10334 changed files with 2564465 additions and 0 deletions

View file

@ -0,0 +1,21 @@
# Regression test for issue #547:
# Buffer overflow when encoding bytes with size set to 65535
Import("env")
env.NanopbProto("test.proto")
# Define the compilation options
opts = env.Clone()
opts.Append(CPPDEFINES = {'PB_FIELD_32BIT': 1})
# Build new version of core
strict = opts.Clone()
strict.Append(CFLAGS = strict['CORECFLAGS'])
strict.Object("pb_encode_fields32.o", "$NANOPB/pb_encode.c")
strict.Object("pb_common_fields32.o", "$NANOPB/pb_common.c")
# Build and run test
test = opts.Program(["test.c", "test.pb.c", "pb_encode_fields32.o", "pb_common_fields32.o"])
env.RunTest(test)

View file

@ -0,0 +1,28 @@
#include <string.h>
#include <pb_encode.h>
#include <unittests.h>
#include "test.pb.h"
int main()
{
pb_byte_t buf[512];
MyMessage msg = MyMessage_init_zero;
pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf));
msg.mybytes.size = 0xFFFFFFFF;
if (pb_encode(&stream, MyMessage_fields, &msg))
{
fprintf(stderr, "Failure: expected pb_encode() to fail.\n");
return 1;
}
else if (strcmp(PB_GET_ERROR(&stream), "bytes size exceeded") != 0)
{
fprintf(stderr, "Unexpected encoding error: %s\n", PB_GET_ERROR(&stream));
return 2;
}
else
{
return 0;
}
}

View file

@ -0,0 +1,7 @@
syntax = "proto2";
import "nanopb.proto";
message MyMessage {
required bytes mybytes = 1 [(nanopb).max_size = 512];
}