Wire types 3 and 4 are for "groups", which were only a thing in
proto1, and deprecated ever since. These were a lot like messages, but
could not stand on their own, and could only be embedded at the
appropriate points as I recall.

Some more info here:
https://developers.google.com/protocol-buffers/docs/encoding

Cheers,

  -ilia

On Wed, May 19, 2021 at 11:25 AM Barry waldbaum
<[email protected]> wrote:
>
> Hi! Thanks for your response!
>
> Wouldn't wire type 3 be the embedded logic? wire type 2 length delimited data 
> shouldn't be parsed and just printed out.
>
> thanks
> -Barry
>
>
>
>
> On Wednesday, May 19, 2021 at 11:12:01 AM UTC-4 Ilia Mirkin wrote:
>>
>> I haven't looked at the decode_raw logic either, but wire type 2 is
>> used for all length-delimited values. That's strings, bytes, and
>> embedded messages (and packed repeated fields). decode_raw doesn't
>> know when it's an embedded message and when it's a string/bytes. So it
>> has to guess somehow, based on some heuristics (like how well the
>> values decode, presumably). And here it guesses wrong.
>>
>> Cheers,
>>
>> -ilia
>>
>> On Wed, May 19, 2021 at 10:40 AM Barry waldbaum
>> <[email protected]> wrote:
>> >
>> > I've been building tools to generate generic protobuf data from json (yes, 
>> > I'm aware I lose context, this is for testing)
>> >
>> > I've found a message I can parse properly, but protoc --decode_raw can't:
>> >
>> > \n \a 3 4 5 0 0 0 0
>> >
>> > protoc
>> > 1 {
>> > 6 {
>> > }
>> > 6: 0x30303030
>> > }
>> >
>> > to reproduce it:
>> >
>> > echo -n $'\x0a' > binary.dat; echo -n $'\x07' >> binary.dat; echo -n 
>> > $'3450000' >> binary.dat ; protoc --decode_raw < binary.dat
>> >
>> > I'm able to parse this properly using protowire as:
>> > 1: "3450000"
>> >
>> > also if I change the first character in the bytes to a '1' I get a valid 
>> > output:
>> >
>> > $ echo -n $'\x0a' > binary.dat; echo -n $'\x07' >> binary.dat; echo -n 
>> > $'1450000' >> binary.dat ; protoc --decode_raw < binary.dat
>> > 1: "1450000"
>> >
>> > $ protoc --version
>> > libprotoc 3.15.8
>> >
>> > I've worked really hard to keep the reproduction as simple as possible, I 
>> > haven't dug into the code for decode_raw yet, that's my next step..
>> >
>> > thanks
>> > -Barry
>> >
>> > --
>> > You received this message because you are subscribed to the Google Groups 
>> > "Protocol Buffers" group.
>> > To unsubscribe from this group and stop receiving emails from it, send an 
>> > email to [email protected].
>> > To view this discussion on the web visit 
>> > https://groups.google.com/d/msgid/protobuf/2ccfbf93-6b0e-49d5-ae8e-3b3dc1b55218n%40googlegroups.com.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Protocol Buffers" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/protobuf/a44d0cc7-ac54-4ad5-830c-d0cc8ab42573n%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/CAKb7UvgBaO3HUGS%2ByM45pP2o3h2ttA6zqUxB2GJPUZO5PA%3DRQg%40mail.gmail.com.

Reply via email to