From 9c2893eb289972e4f3b8e48381dfab3561c18398 Mon Sep 17 00:00:00 2001 From: Zhang Wei Date: Sat, 30 May 2015 11:50:15 +0800 Subject: [PATCH] bug fix: slice bounds out of range If TestGenerateName() accept size parameter larger than 64, it will panic. This patch fix this potential panic bug. Signed-off-by: Zhang Wei --- utils/utils.go | 3 +++ utils/utils_test.go | 12 +++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/utils/utils.go b/utils/utils.go index 094bce530..26a0fb7d0 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -21,6 +21,9 @@ func GenerateRandomName(prefix string, size int) (string, error) { if _, err := io.ReadFull(rand.Reader, id); err != nil { return "", err } + if size > 64 { + size = 64 + } return prefix + hex.EncodeToString(id)[:size], nil } diff --git a/utils/utils_test.go b/utils/utils_test.go index 41ef1aa3d..813180a8a 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -9,7 +9,17 @@ func TestGenerateName(t *testing.T) { } expected := 5 + len("veth") - if len(name) != 5+len("veth") { + if len(name) != expected { + t.Fatalf("expected name to be %d chars but received %d", expected, len(name)) + } + + name, err = GenerateRandomName("veth", 65) + if err != nil { + t.Fatal(err) + } + + expected = 64 + len("veth") + if len(name) != expected { t.Fatalf("expected name to be %d chars but received %d", expected, len(name)) } }