hush: fix a segfault in export builtin

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2009-06-07 16:04:17 +02:00
parent 8f24f9812d
commit df5131cf3d

View File

@ -6825,7 +6825,18 @@ static int FAST_FUNC builtin_export(char **argv)
{
unsigned opt_unexport;
if (argv[1] == NULL) {
#if ENABLE_HUSH_EXPORT_N
/* "!": do not abort on errors */
opt_unexport = getopt32(argv, "!n");
if (opt_unexport == (uint32_t)-1)
return EXIT_FAILURE;
argv += optind;
#else
opt_unexport = 0;
argv++;
#endif
if (argv[0] == NULL) {
char **e = environ;
if (e) {
while (*e) {
@ -6851,18 +6862,6 @@ static int FAST_FUNC builtin_export(char **argv)
return EXIT_SUCCESS;
}
#if ENABLE_HUSH_EXPORT_N
/* "!": do not abort on errors */
/* "+": stop at 1st non-option */
opt_unexport = getopt32(argv, "!+n");
if (opt_unexport == (unsigned)-1)
return EXIT_FAILURE;
argv += optind;
#else
opt_unexport = 0;
argv++;
#endif
helper_export_local(argv, (opt_unexport ? -1 : 1), 0);
return EXIT_SUCCESS;