From 0fe9aa388a1837af42755176ad8a4db1320c59d7 Mon Sep 17 00:00:00 2001 From: ayin Date: Tue, 9 Oct 2007 13:34:46 +0000 Subject: [PATCH] Abort if the argument for -e is missing and move the code to initialize r_argv after the one for cmd_argv to avoid leaking. --- src/init.C | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/init.C b/src/init.C index 73cbdaa8..89e369cf 100644 --- a/src/init.C +++ b/src/init.C @@ -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]); /* -- 2.34.1