chiark / gitweb /
json: fix a mem leak
[elogind.git] / src / shared / import-util.c
index 46671e8c99b8301b63c261b10d2956c75d71ee6b..001a8a37e81667746af704a7d38ff2c44300e04a 100644 (file)
@@ -76,7 +76,7 @@ int import_url_change_last_component(const char *url, const char *suffix, char *
 
 static const char* const import_verify_table[_IMPORT_VERIFY_MAX] = {
         [IMPORT_VERIFY_NO] = "no",
-        [IMPORT_VERIFY_SUM] = "sum",
+        [IMPORT_VERIFY_CHECKSUM] = "checksum",
         [IMPORT_VERIFY_SIGNATURE] = "signature",
 };
 
@@ -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;