Sophie

Sophie

distrib > Fedora > 17 > i386 > media > updates-src > by-pkgid > ab4b662b9827b6375ffd451bf4abd615 > files > 269

systemd-44-24.fc17.src.rpm

From 9e0b0feb235681b9c7df5d4f8480f2510f063b7a Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Wed, 9 May 2012 11:13:26 +0200
Subject: [PATCH] main: fix assertion failure due to use of ELEMENTSOF on a
 non-array (cherry picked from commit
 e564a98237817d8c89f7979856a87d3788988742)

---
 src/core/main.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/core/main.c b/src/core/main.c
index 8f59c86..a7c41ef 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -1646,7 +1646,7 @@ finish:
 
         if (reexecute) {
                 const char **args;
-                unsigned i;
+                unsigned i, args_size;
 
                 /* Close and disarm the watchdog, so that the new
                  * instance can reinitialize it, but doesn't get
@@ -1656,7 +1656,8 @@ finish:
                 if (switch_root)
                         do_switch_root(switch_root);
 
-                args = newa(const char*, MAX(5, argc+1));
+                args_size = MAX(5, argc+1);
+                args = newa(const char*, args_size);
 
                 if (!switch_root_init) {
                         char sfd[16];
@@ -1679,7 +1680,7 @@ finish:
                         args[i++] = sfd;
                         args[i++] = NULL;
 
-                        assert(i <= ELEMENTSOF(args));
+                        assert(i <= args_size);
                         execv(args[0], (char* const*) args);
                 }
 
@@ -1701,7 +1702,7 @@ finish:
                         args[i++] = argv[j];
                 args[i++] = NULL;
 
-                assert(i <= ELEMENTSOF(args));
+                assert(i <= args_size);
                 execv(args[0], (char* const*) args);
 
                 log_error("Failed to reexecute: %m");