Abort if the argument for -e is missing and move the code to
authorayin <ayin>
Tue, 9 Oct 2007 13:34:46 +0000 (13:34 +0000)
committerayin <ayin>
Tue, 9 Oct 2007 13:34:46 +0000 (13:34 +0000)
initialize r_argv after the one for cmd_argv to avoid leaking.

src/init.C

index 73cbdaa8203560b1dd2ceaf9623b543bbf29749f..89e369cf59d9c50eeab43a953711c8dc2b9731d2 100644 (file)
@@ -355,15 +355,10 @@ rxvt_term::init_resources (int argc, const char *const *argv)
     if (!strcmp (argv[r_argc], "-e"))
       break;
 
-  r_argv = (const char **)rxvt_malloc (sizeof (char *) * (r_argc + 1));
-
-  for (i = 0; i < r_argc; i++)
-    r_argv[i] = (const char *)argv[i];
-
-  r_argv[i] = NULL;
-
   if (r_argc == argc)
     cmd_argv = NULL;
+  else if (!argv[r_argc + 1])
+    rxvt_fatal ("-e requires an argument\n");
   else
     {
       cmd_argv = (const char **)rxvt_malloc (sizeof (char *) * (argc - r_argc));
@@ -374,6 +369,13 @@ rxvt_term::init_resources (int argc, const char *const *argv)
       cmd_argv[i] = NULL;
     }
 
+  r_argv = (const char **)rxvt_malloc (sizeof (char *) * (r_argc + 1));
+
+  for (i = 0; i < r_argc; i++)
+    r_argv[i] = (const char *)argv[i];
+
+  r_argv[i] = NULL;
+
   rs[Rs_name] = rxvt_basename (argv[0]);
 
   /*