File tree Expand file tree Collapse file tree
crates/wit-bindgen-go/src Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -477,6 +477,9 @@ impl InterfaceGenerator<'_> {
477477 }}
478478 if b < 0x80 {{
479479 x = x | uint32(b)<<s
480+ if x == 0 {{
481+ return "", nil
482+ }}
480483 buf := make([]byte, x)
481484 {slog}.Debug("reading string bytes", "len", x)
482485 _, err = r.Read(buf)
@@ -515,11 +518,14 @@ impl InterfaceGenerator<'_> {
515518 }}
516519 return nil, {fmt}.Errorf("failed to read byte list length byte: %w", err)
517520 }}
521+ if s == 28 && b > 0x0f {{
522+ return nil, {errors}.New("byte list length overflows a 32-bit integer")
523+ }}
518524 if b < 0x80 {{
519- if i == 4 && b > 1 {{
520- return nil, {errors}.New("byte list length overflows a 32-bit integer")
521- }}
522525 x = x | uint32(b)<<s
526+ if x == 0 {{
527+ return nil, nil
528+ }}
523529 buf := make([]byte, x)
524530 {slog}.Debug("reading byte list contents", "len", x)
525531 _, err = {io}.ReadFull(r, buf)
@@ -562,11 +568,14 @@ impl InterfaceGenerator<'_> {
562568 }}
563569 return nil, {fmt}.Errorf("failed to read list length byte: %w", err)
564570 }}
571+ if s == 28 && b > 0x0f {{
572+ return nil, {errors}.New("list length overflows a 32-bit integer")
573+ }}
565574 if b < 0x80 {{
566- if i == 4 && b > 1 {{
567- return nil, {errors}.New("list length overflows a 32-bit integer")
568- }}
569575 x = x | uint32(b)<<s
576+ if x == 0 {{
577+ return nil, nil
578+ }}
570579 vs := make("# ,
571580 ) ;
572581 self . print_list ( ty) ;
You can’t perform that action at this time.
0 commit comments