chiark / gitweb /
shared/import-util: Tag renamed to reference
authorPavel Odvody <podvody@redhat.com>
Tue, 19 May 2015 14:29:29 +0000 (16:29 +0200)
committerSven Eden <yamakuzure@gmx.net>
Tue, 14 Mar 2017 08:57:18 +0000 (09:57 +0100)
Added (sha256) digest validation function

src/shared/import-util.c
src/shared/import-util.h

index 660d92ac5dea5560b64d9f6cd12807dd6a58d9fd..001a8a37e81667746af704a7d38ff2c44300e04a 100644 (file)
@@ -150,6 +150,27 @@ int raw_strip_suffixes(const char *p, char **ret) {
         return 0;
 }
 
+bool dkr_digest_is_valid(const char *digest) {
+        /* 7 chars for prefix, 64 chars for the digest itself */
+        if (strlen(digest) != 71)
+                return false;
+
+        return startswith(digest, "sha256:") && in_charset(digest + 7, "0123456789abcdef");
+}
+
+bool dkr_ref_is_valid(const char *ref) {
+        const char *colon;
+
+        if (isempty(ref))
+                return false;
+
+        colon = strchr(ref, ':');
+        if (!colon)
+                return filename_is_valid(ref);
+
+        return dkr_digest_is_valid(ref);
+}
+
 bool dkr_name_is_valid(const char *name) {
         const char *slash, *p;
 
index ff155b0ff282ac0dc22270c07596af1a8bda0046..7bf7d4ca406e4e8e523b6e976e3cbf037c713816 100644 (file)
@@ -44,4 +44,6 @@ int raw_strip_suffixes(const char *name, char **ret);
 
 bool dkr_name_is_valid(const char *name);
 bool dkr_id_is_valid(const char *id);
+bool dkr_ref_is_valid(const char *ref);
+bool dkr_digest_is_valid(const char *digest);
 #define dkr_tag_is_valid(tag) filename_is_valid(tag)