mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-22 13:18:59 +08:00
builtin.c: builtin_source now checks that its argument is a file.
Without this check, it would be possible to attempt to source a directory and get stuck in an infinite loop. darcs-hash:20051215172122-35ec8-b3ce05d8d7ee9534edf92b74ca842d034b894e8a.gz
This commit is contained in:
parent
fa75fc3901
commit
a91bf6d88a
14
builtin.c
14
builtin.c
|
@ -2163,6 +2163,7 @@ static int builtin_source( wchar_t ** argv )
|
|||
{
|
||||
int fd;
|
||||
int res;
|
||||
struct stat buf;
|
||||
|
||||
if( (argv[1] == 0) || (argv[2]!=0) )
|
||||
{
|
||||
|
@ -2173,6 +2174,19 @@ static int builtin_source( wchar_t ** argv )
|
|||
return 1;
|
||||
}
|
||||
|
||||
if( wstat(argv[1], &buf) == -1 )
|
||||
{
|
||||
builtin_wperror( L"stat" );
|
||||
res = 1;
|
||||
}
|
||||
|
||||
if( !S_ISREG(buf.st_mode) )
|
||||
{
|
||||
sb_append2( sb_err, argv[0], L": Expected a regular file\n", (void *)0 );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
|
||||
return 1;
|
||||
}
|
||||
if( ( fd = wopen( argv[1], O_RDONLY ) ) == -1 )
|
||||
{
|
||||
builtin_wperror( L"open" );
|
||||
|
|
Loading…
Reference in New Issue
Block a user