String - The int32 is the number bytes in the (byte*) + 1 (for the trailing '\x00'). The (byte*) is zero or more UTF-8 encoded characters.
since it explicitly says the string is nonnegative length the size must be too. :-)
it could be less cryptic, and there is also the minor question of why is it wasting a bit thats always zero.
i hope for some of this to be cleaned up in a future revision of the spec (which would have a new version number even if changes are minimal). there has been an attempt to not modify the existing document much as in theory a specification for a certain spec version should never change.