Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Unified Diff: third_party/mojo/src/mojo/public/go/bindings/decoder.go

Issue 1101303002: Update mojo sdk to rev e7270700d671fa8e458b4d8c9e47f7bcfb65da0b (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Actualy provide a default TaskTracker impl Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/mojo/src/mojo/public/go/bindings/decoder.go
diff --git a/third_party/mojo/src/mojo/public/go/bindings/decoder.go b/third_party/mojo/src/mojo/public/go/bindings/decoder.go
index 67ebe9e64ee651662415982d628f6ed61c4228e1..2b12ff367fccb4a854db70a4a2979e78b19437cc 100644
--- a/third_party/mojo/src/mojo/public/go/bindings/decoder.go
+++ b/third_party/mojo/src/mojo/public/go/bindings/decoder.go
@@ -40,7 +40,7 @@ func NewDecoder(bytes []byte, handles []system.UntypedHandle) *Decoder {
// claimData claims a block of |size| bytes for a one-level value.
func (d *Decoder) claimData(size int) error {
if d.end+size > len(d.buf) {
- return fmt.Errorf("data buffer is too small")
+ return &ValidationError{IllegalMemoryRange, "data buffer is too small"}
}
d.end += size
return nil
@@ -48,10 +48,10 @@ func (d *Decoder) claimData(size int) error {
func (d *Decoder) claimHandle(index int) (system.UntypedHandle, error) {
if index >= len(d.handles) {
- return nil, fmt.Errorf("trying to access non present handle")
+ return nil, &ValidationError{IllegalHandle, "trying to access non present handle"}
}
if index < d.nextHandle {
- return nil, fmt.Errorf("trying to access handle out of order")
+ return nil, &ValidationError{IllegalHandle, "trying to access handle out of order"}
}
d.nextHandle = index + 1
return d.handles[index], nil
@@ -100,7 +100,9 @@ func (d *Decoder) StartArray(elementBitSize uint32) (uint32, error) {
}
minSize := bytesForBits(uint64(header.ElementsOrVersion) * uint64(elementBitSize))
if got, want := int(header.Size), dataHeaderSize+minSize; got < want {
- return 0, fmt.Errorf("data header size is too small: is %d, but should be at least %d", got, want)
+ return 0, &ValidationError{UnexpectedArrayHeader,
+ fmt.Sprintf("data header size(%d) should be at least %d", got, want),
+ }
}
if err := d.pushState(header, elementBitSize); err != nil {
return 0, err
@@ -117,7 +119,9 @@ func (d *Decoder) StartMap() error {
return err
}
if header != mapHeader {
- return fmt.Errorf("invalid map header: %v", header)
+ return &ValidationError{UnexpectedStructHeader,
+ fmt.Sprintf("invalid map header: %v", header),
+ }
}
if err := d.pushState(header, pointerBitSize); err != nil {
return err
@@ -135,7 +139,9 @@ func (d *Decoder) StartStruct() (DataHeader, error) {
return DataHeader{}, err
}
if header.Size < dataHeaderSize {
- return DataHeader{}, fmt.Errorf("data header size(%d) should be at least %d", header.Size, dataHeaderSize)
+ return DataHeader{}, &ValidationError{UnexpectedStructHeader,
+ fmt.Sprintf("data header size(%d) should be at least %d", header.Size, dataHeaderSize),
+ }
}
if err := d.pushState(header, 0); err != nil {
return DataHeader{}, err
@@ -299,14 +305,16 @@ func (d *Decoder) ReadPointer() (uint64, error) {
}
newEnd := uint64(d.state().offset-8) + pointer
- if newEnd >= uint64(len(d.buf)) {
- return 0, fmt.Errorf("trying to access out of range memory")
+ if pointer >= uint64(len(d.buf)) || newEnd >= uint64(len(d.buf)) {
+ return 0, &ValidationError{IllegalPointer, "trying to access out of range memory"}
}
if newEnd < uint64(d.end) {
- return 0, fmt.Errorf("trying to access memory out of order")
+ return 0, &ValidationError{IllegalMemoryRange, "trying to access memory out of order"}
}
if newEnd%8 != 0 {
- return 0, fmt.Errorf("incorrect pointer data alignment: %d", newEnd)
+ return 0, &ValidationError{MisalignedObject,
+ fmt.Sprintf("incorrect pointer data alignment: %d", newEnd),
+ }
}
d.claimData(int(newEnd) - d.end)
return pointer, nil
« no previous file with comments | « third_party/mojo/src/mojo/public/dart/application.dart ('k') | third_party/mojo/src/mojo/public/go/bindings/message.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698