summaryrefslogtreecommitdiff
path: root/pkg/stringid/stringid.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/stringid/stringid.go')
-rw-r--r--pkg/stringid/stringid.go22
1 files changed, 16 insertions, 6 deletions
diff --git a/pkg/stringid/stringid.go b/pkg/stringid/stringid.go
index 5fe071d628..d3d1014acf 100644
--- a/pkg/stringid/stringid.go
+++ b/pkg/stringid/stringid.go
@@ -4,21 +4,28 @@ package stringid // import "github.com/docker/docker/pkg/stringid"
import (
"crypto/rand"
"encoding/hex"
- "fmt"
+ "errors"
"regexp"
"strconv"
"strings"
)
-const shortLen = 12
+const (
+ shortLen = 12
+ fullLen = 64
+)
var (
validShortID = regexp.MustCompile("^[a-f0-9]{12}$")
validHex = regexp.MustCompile(`^[a-f0-9]{64}$`)
)
-// IsShortID determines if an arbitrary string *looks like* a short ID.
+// IsShortID determines if id has the correct format and length for a short ID.
+// It checks the IDs length and if it consists of valid characters for IDs (a-f0-9).
func IsShortID(id string) bool {
+ if len(id) != shortLen {
+ return false
+ }
return validShortID.MatchString(id)
}
@@ -54,10 +61,13 @@ func GenerateRandomID() string {
}
}
-// ValidateID checks whether an ID string is a valid image ID.
+// ValidateID checks whether an ID string is a valid, full-length image ID.
func ValidateID(id string) error {
- if ok := validHex.MatchString(id); !ok {
- return fmt.Errorf("image ID %q is invalid", id)
+ if len(id) != fullLen {
+ return errors.New("image ID '" + id + "' is invalid")
+ }
+ if !validHex.MatchString(id) {
+ return errors.New("image ID '" + id + "' is invalid")
}
return nil
}