X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Fimport-util.c;h=001a8a37e81667746af704a7d38ff2c44300e04a;hp=46671e8c99b8301b63c261b10d2956c75d71ee6b;hb=8eb444001b790b0c16369ceb1420afde4c1e5b24;hpb=3d7415f43f0fe6a821d7bc4a341ba371e8a30ef3 diff --git a/src/shared/import-util.c b/src/shared/import-util.c index 46671e8c9..001a8a37e 100644 --- a/src/shared/import-util.c +++ b/src/shared/import-util.c @@ -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;