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
<barry.waldb...@gmail.com> 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 protobuf+unsubscr...@googlegroups.com.
> 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 protobuf+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/CAKb7Uvj1OkLK%3D%2BRf%3D5A9%3Dhkj4OBw03QvHd7aR%3DsaL%3Dv9jS1Kgw%40mail.gmail.com.

Reply via email to