Browse Source

Fix coredump on FreeBSD when TAR_OPTIONS is set

* src/tar.c (parse_default_options): Use program_name instead of
program_invocation_short_name.  On some systems the latter is NULL when
the function is called, which causes coredumps.
(tar_set_quoting_style): Likewise.
* src/names.c: Likewise.
Sergey Poznyakoff 9 years ago
parent
commit
6167c23e22
2 changed files with 3 additions and 3 deletions
  1. 1 1
      src/names.c
  2. 2 2
      src/tar.c

+ 1 - 1
src/names.c

@@ -472,7 +472,7 @@ handle_option (const char *str, struct name_elt const *ent)
   if (wordsplit (str, &ws, WRDSF_DEFFLAGS|WRDSF_DOOFFS))
     FATAL_ERROR ((0, 0, _("cannot split string '%s': %s"),
 		  str, wordsplit_strerror (&ws)));
-  ws.ws_wordv[0] = program_invocation_short_name;
+  ws.ws_wordv[0] = (char *) program_name;
   loc.source = OPTS_FILE;
   loc.name = ent->v.file.name;
   loc.line = ent->v.file.line;

+ 2 - 2
src/tar.c

@@ -265,7 +265,7 @@ tar_set_quoting_style (char *arg)
 	return;
       }
   FATAL_ERROR ((0, 0,
-		_("Unknown quoting style '%s'. Try '%s --quoting-style=help' to get a list."), arg, program_invocation_short_name));
+		_("Unknown quoting style '%s'. Try '%s --quoting-style=help' to get a list."), arg, program_name));
 }
 
 
@@ -2491,7 +2491,7 @@ parse_default_options (void)
 		  wordsplit_strerror (&ws)));
   if (ws.ws_wordc)
     {
-      ws.ws_wordv[0] = program_invocation_short_name;
+      ws.ws_wordv[0] = (char*) program_name;
       more_options (ws.ws_offs + ws.ws_wordc, ws.ws_wordv, &loc);
     }