diff --git a/src/import/pull-common.c b/src/import/pull-common.c index 40248eee3d..6f1f042d91 100644 --- a/src/import/pull-common.c +++ b/src/import/pull-common.c @@ -6,6 +6,7 @@ #include "dirent-util.h" #include "escape.h" #include "fd-util.h" +#include "hexdecoct.h" #include "io-util.h" #include "log.h" #include "memory-util.h" @@ -333,7 +334,6 @@ int pull_make_verification_jobs( static int verify_one(PullJob *checksum_job, PullJob *job) { _cleanup_free_ char *fn = NULL; - const char *line, *p; int r; assert(checksum_job); @@ -366,17 +366,23 @@ static int verify_one(PullJob *checksum_job, PullJob *job) { return log_error_errno(SYNTHETIC_ERRNO(ELOOP), "Cannot verify checksum/signature files via themselves."); - line = strjoina(job->checksum, " *", fn, "\n"); /* string for binary mode */ - p = memmem_safe(checksum_job->payload, - checksum_job->payload_size, - line, - strlen(line)); - if (!p) { - line = strjoina(job->checksum, " ", fn, "\n"); /* string for text mode */ + const char *p = NULL; + FOREACH_STRING(separator, + " *", /* separator for binary mode */ + " ", /* separator for text mode */ + " " /* non-standard separator used by linuxcontainers.org */) { + _cleanup_free_ char *line = NULL; + + line = strjoin(job->checksum, separator, fn, "\n"); + if (!line) + return log_oom(); + p = memmem_safe(checksum_job->payload, checksum_job->payload_size, line, strlen(line)); + if (p) + break; } /* Only counts if found at beginning of a line */