shithub: opossum

Download patch

ref: 3d58c884fa97567ebb1b8b47bc8ceb8c75b2f680
parent: 8bd61f88172581a0af0ea5f2293bff43f011eb1b
author: Philip Silva <philip.silva@protonmail.com>
date: Sun Mar 28 05:15:00 EDT 2021

Fix crash on incomplete data uri

--- a/img/img.go
+++ b/img/img.go
@@ -36,7 +36,6 @@
 	parts := strings.Split(addr, ",")
 	
 	var ctStr string
-
 	if strings.Contains(parts[0], ";") {
 		header := strings.Split(parts[0], ";")
 		ctStr = header[0]
@@ -46,7 +45,10 @@
 	if ct, err = opossum.NewContentType(ctStr, nil); err != nil {
 		return nil, ct, fmt.Errorf("content type: %v: %w", ctStr, err)
 	}
-	
+
+	if len(parts) == 1 {
+		return nil, ct, fmt.Errorf("empty: %v", addr)
+	}
 	if strings.Contains(addr, "base64") {
 		e := base64.RawStdEncoding
 		if strings.HasSuffix(addr, "=") {
--- a/img/img_test.go
+++ b/img/img_test.go
@@ -31,6 +31,14 @@
 	}
 }
 
+func TestEmpty(t *testing.T) {
+	src := "data:image/svg+xml"
+	_, _, err := parseDataUri(src)
+	if err == nil {
+		t.Fatalf(err.Error())
+	}
+}
+
 func TestSvg(t *testing.T) {
        xml := `
                <svg fill="currentColor" height="24" viewBox="0 0 24 24" width="24">