• Thomas Van Lenten's avatar
    Validate the tag numbers when parsing. (#1725) · c18aa779
    Thomas Van Lenten authored
    There was a twist code path (that some times showed up due to what happened to
    be in memory in failure cases), that would cast a bogus wire type into the
    enum, and then fall through switch statements.
    
    Resolve this by validating all wire types when parsing tags and throwing the
    error at that point so it can't enter the system.
    
    As added safety, stick in a few asserts for apis that get passed tags to ensure
    they also are only seeing valid data.
    
    Bonus: Tweak the parsing loop to skip some work when we get the end marker
    (zero tag) instead of still looping through all the fields.
    c18aa779
Name
Last commit
Last update
benchmarks Loading commit data...
cmake Loading commit data...
conformance Loading commit data...
csharp Loading commit data...
docs Loading commit data...
editors Loading commit data...
examples Loading commit data...
java Loading commit data...
javanano Loading commit data...
jenkins Loading commit data...
js Loading commit data...
m4 Loading commit data...
more_tests Loading commit data...
objectivec Loading commit data...
php Loading commit data...
protoc-artifacts Loading commit data...
python Loading commit data...
ruby Loading commit data...
src Loading commit data...
util/python Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
BUILD Loading commit data...
CHANGES.txt Loading commit data...
CONTRIBUTORS.txt Loading commit data...
LICENSE Loading commit data...
Makefile.am Loading commit data...
Protobuf.podspec Loading commit data...
README.md Loading commit data...
WORKSPACE Loading commit data...
appveyor.bat Loading commit data...
appveyor.yml Loading commit data...
autogen.sh Loading commit data...
configure.ac Loading commit data...
generate_descriptor_proto.sh Loading commit data...
gmock.BUILD Loading commit data...
post_process_dist.sh Loading commit data...
protobuf-lite.pc.in Loading commit data...
protobuf.bzl Loading commit data...
protobuf.pc.in Loading commit data...
six.BUILD Loading commit data...
tests.sh Loading commit data...
update_file_lists.sh Loading commit data...