Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
P
protobuf
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
protobuf
Commits
9bbc4b1f
Unverified
Commit
9bbc4b1f
authored
Aug 08, 2018
by
Yilun Chong
Committed by
GitHub
Aug 08, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4981 from BSBandme/fix_js_skipgroup
Fix js reader.js's skipGroup
parents
0483feb6
600e4e5f
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
21 additions
and
9 deletions
+21
-9
reader.js
js/binary/reader.js
+5
-8
reader_test.js
js/binary/reader_test.js
+15
-0
package.json
js/package.json
+1
-1
No files found.
js/binary/reader.js
View file @
9bbc4b1f
...
...
@@ -388,8 +388,7 @@ jspb.BinaryReader.prototype.skipFixed64Field = function() {
* Skips over the next group field in the binary stream.
*/
jspb
.
BinaryReader
.
prototype
.
skipGroup
=
function
()
{
// Keep a stack of start-group tags that must be matched by end-group tags.
var
nestedGroups
=
[
this
.
nextField_
];
var
previousField
=
this
.
nextField_
;
do
{
if
(
!
this
.
nextField
())
{
goog
.
asserts
.
fail
(
'Unmatched start-group tag: stream EOF'
);
...
...
@@ -397,19 +396,17 @@ jspb.BinaryReader.prototype.skipGroup = function() {
return
;
}
if
(
this
.
nextWireType_
==
jspb
.
BinaryConstants
.
WireType
.
START_GROUP
)
{
// Nested group start.
nestedGroups
.
push
(
this
.
nextField_
);
}
else
if
(
this
.
nextWireType_
==
jspb
.
BinaryConstants
.
WireType
.
END_GROUP
)
{
// Group end: check that it matches top-of-stack.
if
(
this
.
nextField_
!=
nestedGroups
.
pop
()
)
{
if
(
this
.
nextField_
!=
previousField
)
{
goog
.
asserts
.
fail
(
'Unmatched end-group tag'
);
this
.
error_
=
true
;
return
;
}
return
;
}
}
while
(
nestedGroups
.
length
>
0
);
this
.
skipField
();
}
while
(
true
);
};
...
...
js/binary/reader_test.js
View file @
9bbc4b1f
...
...
@@ -679,9 +679,24 @@ describe('binaryReaderTest', function() {
writer
.
writeInt32
(
5
,
sentinel
);
var
dummyMessage
=
/** @type {!jspb.BinaryMessage} */
({});
writer
.
writeGroup
(
5
,
dummyMessage
,
function
()
{
// Previously the skipGroup implementation was wrong, which only consume
// the decoder by nextField. This case is for making the previous
// implementation failed in skipGroup by an early end group tag.
// The reason is 44 = 5 * 8 + 4, this will be translated in to a field
// with number 5 and with type 4 (end group)
writer
.
writeInt64
(
44
,
44
);
// This will make previous implementation failed by invalid tag (7).
writer
.
writeInt64
(
42
,
47
);
writer
.
writeInt64
(
42
,
42
);
// This is for making the previous implementation failed by an invalid
// varint. The bytes have at least 9 consecutive minus byte, which will
// fail in this.nextField for previous implementation.
writer
.
writeBytes
(
43
,
[
255
,
255
,
255
,
255
,
255
,
255
,
255
,
255
,
255
,
255
]);
writer
.
writeGroup
(
6
,
dummyMessage
,
function
()
{
writer
.
writeInt64
(
84
,
42
);
writer
.
writeInt64
(
84
,
44
);
writer
.
writeBytes
(
43
,
[
255
,
255
,
255
,
255
,
255
,
255
,
255
,
255
,
255
,
255
]);
});
});
...
...
js/package.json
View file @
9bbc4b1f
...
...
@@ -22,5 +22,5 @@
"url"
:
"https://github.com/google/protobuf/tree/master/js"
},
"author"
:
"Google Protocol Buffers Team"
,
"license"
:
"BSD-3-Clause"
"license"
:
"BSD-3-Clause"
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment