protobuf icon indicating copy to clipboard operation
protobuf copied to clipboard

gogo protobuf not check value in slice is nil

Open zhangbiao2009 opened this issue 5 years ago • 0 comments

func (m *MultiUpdateMarchReply) MarshalToSizedBuffer(dAtA []byte) (int, error) {
	i := len(dAtA)
	_ = i
	var l int
	_ = l
	if len(m.SessionToken) > 0 {
		i -= len(m.SessionToken)
		copy(dAtA[i:], m.SessionToken)
		i = encodeVarintMarch(dAtA, i, uint64(len(m.SessionToken)))
		i--
		dAtA[i] = 0x12
	}
	if len(m.Changes) > 0 {
		for iNdEx := len(m.Changes) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.Changes[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintMarch(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0xa
		}
	}
	return len(dAtA) - i, nil
}


Why the code which gogo protobuf generated doesn't check m.Changes[iNdEx] is nil?  sometimes this causes program to crash

zhangbiao2009 avatar Apr 20 '20 08:04 zhangbiao2009