protobuf-go/internal
Joe Tsai c51e2e0293 all: support enforce_utf8 override
In 2014, when proto3 was being developed, there were a number of early
adopters of the new syntax. Before the finalization of proto3 when
it was released in open-source in July 2016, a decision was made to
strictly validate strings in proto3. However, some of the early adopters
were already using invalid UTF-8 with string fields.
The google.protobuf.FieldOptions.enforce_utf8 option only exists to support
those grandfathered users where they can opt-out of the validation logic.
Practical use of that option in open source is impossible even if a user
specifies the proto1_legacy build tag since it requires a hacked
variant of descriptor.proto that is not externally available.

This CL supports enforce_utf8 by modifiyng internal/filedesc to
expose the flag if it detects it in the raw descriptor.
We add an strs.EnforceUTF8 function as a centralized place to determine
whether to perform validation. Validation opt-out is supported
only in builds with legacy support.

We implement support for validating UTF-8 in all proto3 string fields,
even if they are backed by a Go []byte.

Change-Id: I9c0628b84909bc7181125f09db730c80d490e485
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/186002
Reviewed-by: Damien Neil <dneil@google.com>
2019-07-15 19:53:05 +00:00
..
cmd all: support enforce_utf8 override 2019-07-15 19:53:05 +00:00
descfmt reflect/protoreflect: add FileDescriptor.SourceLocations 2019-07-13 00:15:59 +00:00
descopts internal/filedesc, internal/filetype: initial commit 2019-06-20 02:06:11 +00:00
detrand
encoding proto: support message_set_wire_format 2019-07-15 19:32:30 +00:00
errors all: remove non-fatal UTF-8 validation errors (and non-fatal in general) 2019-06-20 20:55:13 +00:00
fieldnum
filedesc all: support enforce_utf8 override 2019-07-15 19:53:05 +00:00
filetype reflect/protoregistry: remove Files.Find{Enum,Message,Extension,Service}ByName 2019-06-24 23:47:12 +00:00
flags
impl all: support enforce_utf8 override 2019-07-15 19:53:05 +00:00
mapsort all: change module to google.golang.org/protobuf 2019-05-14 17:28:29 +00:00
pragma
set internal/set: remove Int32s, Int64s, and Strings 2019-04-03 22:53:35 +00:00
strs all: support enforce_utf8 override 2019-07-15 19:53:05 +00:00
testprotos proto: support message_set_wire_format 2019-07-15 19:32:30 +00:00
value reflect/protoreflect: add alternative message reflection API 2019-06-17 17:33:24 +00:00