dcavalca / rpms / systemd

Forked from rpms/systemd 2 years ago
Clone
Zbigniew Jędrzejewski-Szmek 7f93bc
From 63aaa1f0d119840db3541f0db8139e90333beb4d Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek a59965
From: Lennart Poettering <lennart@poettering.net>
Zbigniew Jędrzejewski-Szmek a59965
Date: Fri, 16 May 2014 19:37:19 +0200
Zbigniew Jędrzejewski-Szmek a59965
Subject: [PATCH] nspawn: properly format container_uuid in UUID format
Zbigniew Jędrzejewski-Szmek a59965
Zbigniew Jędrzejewski-Szmek a59965
http://lists.freedesktop.org/archives/systemd-devel/2014-April/018971.html
Zbigniew Jędrzejewski-Szmek a59965
(cherry picked from commit 9f24adc288de142d6606fde3c5a5971613f3b6b9)
Zbigniew Jędrzejewski-Szmek a59965
(cherry picked from commit e0036127752b25d87405e3ee508d4dbe41a23b7d)
Zbigniew Jędrzejewski-Szmek a59965
---
Zbigniew Jędrzejewski-Szmek a59965
 src/nspawn/nspawn.c | 18 +++++++++++++-----
Zbigniew Jędrzejewski-Szmek a59965
 1 file changed, 13 insertions(+), 5 deletions(-)
Zbigniew Jędrzejewski-Szmek a59965
Zbigniew Jędrzejewski-Szmek a59965
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
Zbigniew Jędrzejewski-Szmek a59965
index adc682d..028dbe3 100644
Zbigniew Jędrzejewski-Szmek a59965
--- a/src/nspawn/nspawn.c
Zbigniew Jędrzejewski-Szmek a59965
+++ b/src/nspawn/nspawn.c
Zbigniew Jędrzejewski-Szmek a59965
@@ -561,6 +561,15 @@ static int setup_resolv_conf(const char *dest) {
Zbigniew Jędrzejewski-Szmek a59965
         return 0;
Zbigniew Jędrzejewski-Szmek a59965
 }
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
+static char* id128_format_as_uuid(sd_id128_t id, char s[37]) {
Zbigniew Jędrzejewski-Szmek a59965
+
Zbigniew Jędrzejewski-Szmek a59965
+        snprintf(s, 37,
Zbigniew Jędrzejewski-Szmek a59965
+                 "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
Zbigniew Jędrzejewski-Szmek a59965
+                 SD_ID128_FORMAT_VAL(id));
Zbigniew Jędrzejewski-Szmek a59965
+
Zbigniew Jędrzejewski-Szmek a59965
+        return s;
Zbigniew Jędrzejewski-Szmek a59965
+}
Zbigniew Jędrzejewski-Szmek a59965
+
Zbigniew Jędrzejewski-Szmek a59965
 static int setup_boot_id(const char *dest) {
Zbigniew Jędrzejewski-Szmek a59965
         _cleanup_free_ char *from = NULL, *to = NULL;
Zbigniew Jędrzejewski-Szmek a59965
         sd_id128_t rnd;
Zbigniew Jędrzejewski-Szmek a59965
@@ -583,10 +592,7 @@ static int setup_boot_id(const char *dest) {
Zbigniew Jędrzejewski-Szmek a59965
                 return r;
Zbigniew Jędrzejewski-Szmek a59965
         }
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
-        snprintf(as_uuid, sizeof(as_uuid),
Zbigniew Jędrzejewski-Szmek a59965
-                 "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
Zbigniew Jędrzejewski-Szmek a59965
-                 SD_ID128_FORMAT_VAL(rnd));
Zbigniew Jędrzejewski-Szmek a59965
-        char_array_0(as_uuid);
Zbigniew Jędrzejewski-Szmek a59965
+        id128_format_as_uuid(rnd, as_uuid);
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
         r = write_string_file(from, as_uuid);
Zbigniew Jędrzejewski-Szmek a59965
         if (r < 0) {
Zbigniew Jędrzejewski-Szmek a59965
@@ -1446,7 +1452,9 @@ int main(int argc, char *argv[]) {
Zbigniew Jędrzejewski-Szmek a59965
                         }
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
                         if (!sd_id128_equal(arg_uuid, SD_ID128_NULL)) {
Zbigniew Jędrzejewski-Szmek a59965
-                                if (asprintf((char**)(envp + n_env++), "container_uuid=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(arg_uuid)) < 0) {
Zbigniew Jędrzejewski-Szmek a59965
+                                char as_uuid[37];
Zbigniew Jędrzejewski-Szmek a59965
+
Zbigniew Jędrzejewski-Szmek a59965
+                                if (asprintf((char**)(envp + n_env++), "container_uuid=%s", id128_format_as_uuid(arg_uuid, as_uuid)) < 0) {
Zbigniew Jędrzejewski-Szmek a59965
                                         log_oom();
Zbigniew Jędrzejewski-Szmek a59965
                                         goto child_fail;
Zbigniew Jędrzejewski-Szmek a59965
                                 }