From b33a5294eaf06a3e952efe1ce4ef810af37d1062 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= <peterke@gmail.com>
Date: Wed, 29 Nov 2017 02:21:41 +0200
Subject: [PATCH] common: fix hex utils to handle 1 byte address conversions

---
 common/bytes.go      |  9 ++++-----
 common/bytes_test.go | 13 +++++++++++--
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/common/bytes.go b/common/bytes.go
index 66577bbfd..bb40ac1d7 100644
--- a/common/bytes.go
+++ b/common/bytes.go
@@ -35,12 +35,11 @@ func FromHex(s string) []byte {
 		if s[0:2] == "0x" || s[0:2] == "0X" {
 			s = s[2:]
 		}
-		if len(s)%2 == 1 {
-			s = "0" + s
-		}
-		return Hex2Bytes(s)
 	}
-	return nil
+	if len(s)%2 == 1 {
+		s = "0" + s
+	}
+	return Hex2Bytes(s)
 }
 
 // Copy bytes
diff --git a/common/bytes_test.go b/common/bytes_test.go
index fc164b13d..71631e6dd 100644
--- a/common/bytes_test.go
+++ b/common/bytes_test.go
@@ -74,7 +74,7 @@ func TestFromHex(t *testing.T) {
 	expected := []byte{1}
 	result := FromHex(input)
 	if !bytes.Equal(expected, result) {
-		t.Errorf("Expected % x got % x", expected, result)
+		t.Errorf("Expected %x got %x", expected, result)
 	}
 }
 
@@ -83,6 +83,15 @@ func TestFromHexOddLength(t *testing.T) {
 	expected := []byte{1}
 	result := FromHex(input)
 	if !bytes.Equal(expected, result) {
-		t.Errorf("Expected % x got % x", expected, result)
+		t.Errorf("Expected %x got %x", expected, result)
+	}
+}
+
+func TestNoPrefixShortHexOddLength(t *testing.T) {
+	input := "1"
+	expected := []byte{1}
+	result := FromHex(input)
+	if !bytes.Equal(expected, result) {
+		t.Errorf("Expected %x got %x", expected, result)
 	}
 }
-- 
GitLab