Go to the documentation of this file.
31 #include <google/protobuf/parse_context.h>
33 #include <google/protobuf/stubs/stringprintf.h>
34 #include <google/protobuf/io/coded_stream.h>
35 #include <google/protobuf/io/zero_copy_stream.h>
36 #include <google/protobuf/arenastring.h>
37 #include <google/protobuf/message_lite.h>
38 #include <google/protobuf/repeated_field.h>
39 #include <google/protobuf/wire_format_lite.h>
40 #include <google/protobuf/stubs/strutil.h>
42 #include <google/protobuf/port_def.inc>
51 bool ParseEndsInSlopRegion(
const char*
begin,
int overrun,
int depth) {
60 if (
ptr ==
nullptr ||
ptr >
end)
return false;
63 if (
tag == 0)
return true;
68 if (
ptr ==
nullptr)
return false;
86 if (--
depth < 0)
return true;
130 }
else if (
size_ > 0) {
174 if (PROTOBUF_PREDICT_FALSE(overrun >
limit_))
return {
nullptr,
true};
192 if (PROTOBUF_PREDICT_FALSE(overrun != 0))
return {
nullptr,
true};
202 }
while (overrun >= 0);
221 [
str](
const char* p,
int s) {
str->append(p, s); });
233 [
str](
const char* p,
int s) {
str->append(p, s); });
258 auto ptr =
static_cast<const char*
>(
data);
282 if (PROTOBUF_PREDICT_FALSE(!
ptr)) {
287 if (--
depth_ < 0)
return nullptr;
317 s->append(val.data(), val.size());
324 res += (
byte - 1) << (7 * i);
325 if (PROTOBUF_PREDICT_TRUE(
byte < 128)) {
326 return {
p +
i + 1, res};
332 if (PROTOBUF_PREDICT_TRUE(
byte < 128)) {
333 return {
p +
i + 1, res};
344 res += (
byte - 1) << (7 * i);
345 if (PROTOBUF_PREDICT_TRUE(
byte < 128)) {
346 return {
p +
i + 1, res};
355 res += (
byte - 1) << (7 * i);
356 if (PROTOBUF_PREDICT_TRUE(
byte < 128)) {
357 return {
p +
i + 1, res};
366 res += (
byte - 1) << (7 * i);
367 if (PROTOBUF_PREDICT_TRUE(
byte < 128)) {
368 return {
p +
i + 1, res};
372 if (PROTOBUF_PREDICT_FALSE(
byte >= 8))
return {
nullptr, 0};
373 res += (
byte - 1) << 28;
392 bool emit_stacktrace);
405 if (!
ptr)
return nullptr;
410 template <
typename T,
bool sign>
415 if (
sizeof(
T) == 8) {
429 return VarintParser<int32_t, false>(
object,
ptr,
ctx);
433 return VarintParser<uint32_t, false>(
object,
ptr,
ctx);
437 return VarintParser<int64_t, false>(
object,
ptr,
ctx);
441 return VarintParser<uint64_t, false>(
object,
ptr,
ctx);
445 return VarintParser<int32_t, true>(
object,
ptr,
ctx);
449 return VarintParser<int64_t, true>(
object,
ptr,
ctx);
453 return VarintParser<int, false>(
object,
ptr,
ctx);
457 return VarintParser<bool, false>(
object,
ptr,
ctx);
460 template <
typename T>
469 return FixedParser<uint32_t>(
object,
ptr,
ctx);
473 return FixedParser<int32_t>(
object,
ptr,
ctx);
477 return FixedParser<uint64_t>(
object,
ptr,
ctx);
481 return FixedParser<int64_t>(
object,
ptr,
ctx);
485 return FixedParser<float>(
object,
ptr,
ctx);
489 return FixedParser<double>(
object,
ptr,
ctx);
492 class UnknownFieldLiteParserHelper {
545 UnknownFieldLiteParserHelper field_parser(unknown);
550 const char*
ptr, ParseContext*
ctx) {
551 UnknownFieldLiteParserHelper field_parser(unknown);
559 #include <google/protobuf/port_undef.inc>
const char * ReadTag(const char *p, uint32 *out, uint32 max_tag=0)
const PROTOBUF_NODISCARD char * ReadSizeAndPushLimitAndDepth(const char *ptr, int *old_limit)
std::pair< const char *, uint32 > VarintParseSlow32(const char *p, uint32 res)
const Descriptor::ReservedRange value
uint32 ReadSize(const char **pp)
std::pair< const char *, uint64 > VarintParseSlow64(const char *p, uint32 res32)
const char * _InternalParse(const char *ptr, ParseContext *ctx)
const PROTOBUF_MUST_USE_RESULT char * ParseMessage(T *msg, const char *ptr)
GRPC_CUSTOM_ZEROCOPYINPUTSTREAM ZeroCopyInputStream
void byteswap< 4 >(void *p)
const char * UnknownGroupLiteParse(std::string *unknown, const char *ptr, ParseContext *ctx)
UnknownFieldLiteParserHelper(std::string *unknown)
const char * UnknownFieldParse(uint32 tag, std::string *unknown, const char *ptr, ParseContext *ctx)
const char * PackedBoolParser(void *object, const char *ptr, ParseContext *ctx)
static uint8 * WriteLittleEndian64ToArray(uint64 value, uint8 *target)
static PyObject * Add(PyObject *self, PyObject *file_descriptor_proto)
const char * FixedParser(void *object, const char *ptr, ParseContext *ctx)
#define T(upbtypeconst, upbtype, ctype, default_value)
void AddFixed32(uint32_t num, uint32_t value)
void AddVarint(uint32_t num, uint64_t value)
const char * PackedFixed64Parser(void *object, const char *ptr, ParseContext *ctx)
const char * ParseLengthDelimited(uint32_t num, const char *ptr, ParseContext *ctx)
void byteswap< 1 >(void *p)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
const char * PackedEnumParser(void *object, const char *ptr, ParseContext *ctx)
static void * tag(intptr_t t)
#define GOOGLE_PROTOBUF_PARSER_ASSERT(predicate)
const PROTOBUF_MUST_USE_RESULT char * VarintParse(const char *p, T *out)
void WriteLengthDelimited(uint32 num, StringPiece val, std::string *s)
unsigned __int64 uint64_t
const char * PackedUInt64Parser(void *object, const char *ptr, ParseContext *ctx)
const char * PackedSFixed32Parser(void *object, const char *ptr, ParseContext *ctx)
_W64 unsigned int uintptr_t
const char * InlineGreedyStringParser(std::string *s, const char *ptr, ParseContext *ctx)
bool VerifyUTF8(StringPiece str, const char *field_name)
const PROTOBUF_MUST_USE_RESULT char * FieldParser(uint64 tag, T &field_parser, const char *ptr, ParseContext *ctx)
const char * PackedInt64Parser(void *object, const char *ptr, ParseContext *ctx)
void PrintUTF8ErrorLog(const char *field_name, const char *operation_str, bool emit_stacktrace)
const char * PackedSFixed64Parser(void *object, const char *ptr, ParseContext *ctx)
const char * PackedFloatParser(void *object, const char *ptr, ParseContext *ctx)
const char * PackedInt32Parser(void *object, const char *ptr, ParseContext *ctx)
const char * ParseGroup(uint32_t num, const char *ptr, ParseContext *ctx)
std::pair< const char *, uint32 > ReadTagFallback(const char *p, uint32 res)
PROTOBUF_EXPORT bool IsStructurallyValidUTF8(const char *buf, int len)
static uint32 bswap_32(uint32 x)
void byteswap< 8 >(void *p)
std::pair< const char *, int32 > ReadSizeFallback(const char *p, uint32 res)
const char * PackedUInt32Parser(void *object, const char *ptr, ParseContext *ctx)
const char * PackedSInt64Parser(void *object, const char *ptr, ParseContext *ctx)
const char * PackedSInt32Parser(void *object, const char *ptr, ParseContext *ctx)
const char * VarintParser(void *object, const char *ptr, ParseContext *ctx)
const char * PackedFixed32Parser(void *object, const char *ptr, ParseContext *ctx)
const char * StringParser(const char *begin, const char *end, void *object, ParseContext *)
void WriteVarint(uint64 val, std::string *s)
void AddFixed64(uint32_t num, uint64_t value)
static uint64 bswap_64(uint64 x)
const PROTOBUF_MUST_USE_RESULT char * WireFormatParser(T &field_parser, const char *ptr, ParseContext *ctx)
const char * PackedDoubleParser(void *object, const char *ptr, ParseContext *ctx)
static uint8 * WriteLittleEndian32ToArray(uint32 value, uint8 *target)
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:39