import/pull: fix pulling by image digest
authorPavel Odvody <podvody@redhat.com>
Wed, 17 Jun 2015 11:25:06 +0000 (13:25 +0200)
committerPavel Odvody <podvody@redhat.com>
Thu, 18 Jun 2015 10:04:30 +0000 (12:04 +0200)
When pulling by image digest the identifiers that
were produced by parsing image digest were later
overwritten by code parsing image tag.
This resulted in invalid identifiers being used
when contacting the remote endpoint, resulting in 404.

Reported here:
http://lists.freedesktop.org/archives/systemd-devel/2015-June/033039.html

src/import/pull.c

index ca33d2f..ca7be6b 100644 (file)
@@ -245,15 +245,15 @@ static int pull_dkr(int argc, char *argv[], void *userdata) {
         if (digest) {
                 reference = digest + 1;
                 name = strndupa(argv[1], digest - argv[1]);
-        }
-
-        reference = strchr(argv[1], ':');
-        if (reference) {
-                name = strndupa(argv[1], reference - argv[1]);
-                reference++;
         } else {
-                name = argv[1];
-                reference = "latest";
+                reference = strchr(argv[1], ':');
+                if (reference) {
+                        name = strndupa(argv[1], reference - argv[1]);
+                        reference++;
+                } else {
+                        name = argv[1];
+                        reference = "latest";
+                }
         }
 
         if (!dkr_name_is_valid(name)) {