Merge pull request #1322 from Roasbeef/sync-feature-lazy-check

lnwire: only check payload for proper size if encoding type is sorted…
This commit is contained in:
Olaoluwa Osuntokun 2018-06-04 18:42:38 -07:00 committed by GitHub
commit b915da427b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -109,14 +109,6 @@ func decodeShortChanIDs(r io.Reader) (ShortChanIDEncoding, []ShortChannelID, err
// as that was just the encoding type. // as that was just the encoding type.
queryBody = queryBody[1:] queryBody = queryBody[1:]
// If after extracting the encoding type, then number of remaining
// bytes instead a whole multiple of the size of an encoded short
// channel ID (8 bytes), then we'll return a parsing error.
if len(queryBody)%8 != 0 {
return 0, nil, fmt.Errorf("whole number of short chan ID's "+
"cannot be encoded in len=%v", len(queryBody))
}
// Otherwise, depending on the encoding type, we'll decode the encode // Otherwise, depending on the encoding type, we'll decode the encode
// short channel ID's in a different manner. // short channel ID's in a different manner.
switch encodingType { switch encodingType {
@ -124,6 +116,16 @@ func decodeShortChanIDs(r io.Reader) (ShortChanIDEncoding, []ShortChannelID, err
// In this encoding, we'll simply read a sort array of encoded short // In this encoding, we'll simply read a sort array of encoded short
// channel ID's from the buffer. // channel ID's from the buffer.
case EncodingSortedPlain: case EncodingSortedPlain:
// If after extracting the encoding type, then number of
// remaining bytes instead a whole multiple of the size of an
// encoded short channel ID (8 bytes), then we'll return a
// parsing error.
if len(queryBody)%8 != 0 {
return 0, nil, fmt.Errorf("whole number of short "+
"chan ID's cannot be encoded in len=%v",
len(queryBody))
}
// As each short channel ID is encoded as 8 bytes, we can // As each short channel ID is encoded as 8 bytes, we can
// compute the number of bytes encoded based on the size of the // compute the number of bytes encoded based on the size of the
// query body. // query body.