Bash-4.3 patch 25
[platform/upstream/bash.git] / builtins / evalstring.c
index ce5b4d6..21937ba 100644 (file)
@@ -308,6 +308,14 @@ parse_and_execute (string, from_file, flags)
            {
              struct fd_bitmap *bitmap;
 
+             if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
+               {
+                 internal_warning ("%s: ignoring function definition attempt", from_file);
+                 should_jump_to_top_level = 0;
+                 last_result = last_command_exit_value = EX_BADUSAGE;
+                 break;
+               }
+
              bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
              begin_unwind_frame ("pe_dispose");
              add_unwind_protect (dispose_fd_bitmap, bitmap);
@@ -368,6 +376,9 @@ parse_and_execute (string, from_file, flags)
              dispose_command (command);
              dispose_fd_bitmap (bitmap);
              discard_unwind_frame ("pe_dispose");
+
+             if (flags & SEVAL_ONECMD)
+               break;
            }
        }
       else