From: Alexander Nozdrin Date: February 9 2011 6:52am Subject: Re: bzr commit into mysql-5.1 branch (Dmitry.Shulga:3586) Bug#57450 List-Archive: http://lists.mysql.com/commits/130793 Message-Id: <4D5239A7.7060500@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Ok to push. Thank you for the patch. On 02/09/11 09:46, Dmitry Shulga wrote: > #At file:///Users/shulga/projects/mysql/mysql-5.1-bug57450/ based on revid:vasil.dimov@stripped > > 3586 Dmitry Shulga 2011-02-09 > Follow up fix for bug#57450. > > batch_readline_init() was modified - return an error > if the input source is a directory or a block device. > > This follow-up is necessary because on some platforms, > such as Solaris, call to read() from directory may be > successful. > > modified: > client/mysql.cc > client/readline.cc > === modified file 'client/mysql.cc' > --- a/client/mysql.cc 2011-02-05 05:02:00 +0000 > +++ b/client/mysql.cc 2011-02-09 06:46:12 +0000 > @@ -1131,6 +1131,8 @@ int main(int argc,char *argv[]) > if (status.batch&& !status.line_buff&& > !(status.line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, stdin))) > { > + put_info("Can't initialize batch_readline - may be the input source is " > + "a directory or a block device.", INFO_ERROR, 0); > free_defaults(defaults_argv); > my_end(0); > exit(1); > > === modified file 'client/readline.cc' > --- a/client/readline.cc 2011-02-05 05:02:00 +0000 > +++ b/client/readline.cc 2011-02-09 06:46:12 +0000 > @@ -18,6 +18,7 @@ > #include > #include > #include > +#include > #include "my_readline.h" > > static bool init_line_buffer(LINE_BUFFER *buffer,File file,ulong size, > @@ -30,6 +31,13 @@ static char *intern_read_line(LINE_BUFFE > LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file) > { > LINE_BUFFER *line_buff; > + MY_STAT input_file_stat; > + > + if (my_fstat(fileno(file),&input_file_stat, MYF(MY_WME)) || > + MY_S_ISDIR(input_file_stat.st_mode) || > + MY_S_ISBLK(input_file_stat.st_mode)) > + return 0; > + > if (!(line_buff=(LINE_BUFFER*) > my_malloc(sizeof(*line_buff),MYF(MY_WME | MY_ZEROFILL)))) > return 0; > > > > >