diff options
author | 2010-09-12 13:16:11 +1000 | |
---|---|---|
committer | 2010-09-12 13:16:11 +1000 | |
commit | 5c9b42e260fb8797cad138d3ead0810fc72f01b2 (patch) | |
tree | ae13c81e3daa87bd1f08f029392dfd82122f63f2 | |
parent | 7914c92824dfbb07466a37f12c7a06c7dd5f4de4 (diff) |
'functions --copy': added sanity check on new function name.
Now matches function create behaviour, running the new function name through
wcsfuncname() and parser_keywords_is_reserved(), before allowing the copy.
-rw-r--r-- | builtin.c | 10 | ||||
-rw-r--r-- | function.c | 2 |
2 files changed, 10 insertions, 2 deletions
@@ -1471,6 +1471,16 @@ static int builtin_functions( wchar_t **argv ) return STATUS_BUILTIN_ERROR; } + if( (wcsfuncname( new_func ) != 0) || parser_keywords_is_reserved( new_func ) ) + { + sb_printf( sb_err, + _( L"%ls: Illegal function name '%ls'\n"), + argv[0], + new_func ); + builtin_print_help( argv[0], sb_err ); + return STATUS_BUILTIN_ERROR; + } + // keep things simple: don't allow existing names to be copy targets. if( function_exists( new_func ) ) { @@ -226,8 +226,6 @@ int function_copy( const wchar_t *name, const wchar_t *new_name ) CHECK( name, 0 ); CHECK( new_name, 0 ); - fn_events = 0; - orig_d = (function_internal_data_t *)hash_get(&function, name); if( !orig_d ) return 0; |