Browse Source

crypto/bn256/cloudflare: checks for nil pointers in Marshal functions (#19609)

* Added checks for nil pointers in Marshal functions

* Set nil pointer to identity in GT before marshaling
Antoine Rondelet 6 years ago
parent
commit
9efc1a847e
1 changed files with 9 additions and 0 deletions
  1. 9 0
      crypto/bn256/cloudflare/bn256.go

+ 9 - 0
crypto/bn256/cloudflare/bn256.go

@@ -100,6 +100,10 @@ func (e *G1) Marshal() []byte {
 	// Each value is a 256-bit number.
 	const numBytes = 256 / 8
 
+	if e.p == nil {
+		e.p = &curvePoint{}
+	}
+
 	e.p.MakeAffine()
 	ret := make([]byte, numBytes*2)
 	if e.p.IsInfinity() {
@@ -382,6 +386,11 @@ func (e *GT) Marshal() []byte {
 	// Each value is a 256-bit number.
 	const numBytes = 256 / 8
 
+	if e.p == nil {
+		e.p = &gfP12{}
+		e.p.SetOne()
+	}
+
 	ret := make([]byte, numBytes*12)
 	temp := &gfP{}