mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
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.
This commit is contained in:
@ -1131,6 +1131,8 @@ int main(int argc,char *argv[])
|
|||||||
if (status.batch && !status.line_buff &&
|
if (status.batch && !status.line_buff &&
|
||||||
!(status.line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, stdin)))
|
!(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);
|
free_defaults(defaults_argv);
|
||||||
my_end(0);
|
my_end(0);
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include <my_global.h>
|
#include <my_global.h>
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
#include <m_string.h>
|
#include <m_string.h>
|
||||||
|
#include <my_dir.h>
|
||||||
#include "my_readline.h"
|
#include "my_readline.h"
|
||||||
|
|
||||||
static bool init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,
|
static bool init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,
|
||||||
@ -30,6 +31,13 @@ static char *intern_read_line(LINE_BUFFER *buffer, ulong *out_length);
|
|||||||
LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
|
LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
|
||||||
{
|
{
|
||||||
LINE_BUFFER *line_buff;
|
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*)
|
if (!(line_buff=(LINE_BUFFER*)
|
||||||
my_malloc(sizeof(*line_buff),MYF(MY_WME | MY_ZEROFILL))))
|
my_malloc(sizeof(*line_buff),MYF(MY_WME | MY_ZEROFILL))))
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user