summaryrefslogtreecommitdiff
path: root/server-tools
diff options
context:
space:
mode:
authorunknown <petr@mysql.com>2005-02-13 15:13:33 +0300
committerunknown <petr@mysql.com>2005-02-13 15:13:33 +0300
commit5bd607785a1f72b826831ab45c99d75b69846531 (patch)
tree0416b3a77d516d448dfd5239dadc5bf9e7583bcc /server-tools
parentdce2554f9130920ab18e4e31432df7d6ca165ee0 (diff)
downloadmariadb-git-5bd607785a1f72b826831ab45c99d75b69846531.tar.gz
various fixes
server-tools/instance-manager/buffer.cc: use my_realloc instead of realloc server-tools/instance-manager/buffer.h: use my_malloc instead of malloc server-tools/instance-manager/commands.cc: No need to send a buffer if there were some error while writing to it server-tools/instance-manager/instance_options.cc: cleanup server-tools/instance-manager/manager.cc: check sigwait return value server-tools/instance-manager/parse_output.cc: fixed a bug, found with valgrind
Diffstat (limited to 'server-tools')
-rw-r--r--server-tools/instance-manager/buffer.cc8
-rw-r--r--server-tools/instance-manager/buffer.h3
-rw-r--r--server-tools/instance-manager/commands.cc16
-rw-r--r--server-tools/instance-manager/instance_options.cc6
-rw-r--r--server-tools/instance-manager/manager.cc9
-rw-r--r--server-tools/instance-manager/parse_output.cc17
6 files changed, 38 insertions, 21 deletions
diff --git a/server-tools/instance-manager/buffer.cc b/server-tools/instance-manager/buffer.cc
index 3a2a818e478..aaed161838d 100644
--- a/server-tools/instance-manager/buffer.cc
+++ b/server-tools/instance-manager/buffer.cc
@@ -81,10 +81,10 @@ int Buffer::reserve(uint position, uint len_arg)
if (position + len_arg>= buffer_size)
{
- buffer= (char *) realloc(buffer,
- min(MAX_BUFFER_SIZE,
- max((uint) (buffer_size*1.5),
- position + len_arg)));
+ buffer= (char *) my_realloc(buffer,
+ min(MAX_BUFFER_SIZE,
+ max((uint) (buffer_size*1.5),
+ position + len_arg)), MYF(0));
if (buffer == NULL)
goto err;
buffer_size= (uint) (buffer_size*1.5);
diff --git a/server-tools/instance-manager/buffer.h b/server-tools/instance-manager/buffer.h
index 260a9ef92f8..85dd210cac2 100644
--- a/server-tools/instance-manager/buffer.h
+++ b/server-tools/instance-manager/buffer.h
@@ -17,6 +17,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_global.h>
+#include <my_sys.h>
#ifdef __GNUC__
#pragma interface
@@ -45,7 +46,7 @@ public:
/*
As append() will invokes realloc() anyway, it's ok if malloc returns 0
*/
- if (!(buffer= (char*) malloc(buffer_size)))
+ if (!(buffer= (char*) my_malloc(buffer_size, MYF(0))))
buffer_size= 0;
}
diff --git a/server-tools/instance-manager/commands.cc b/server-tools/instance-manager/commands.cc
index 3f38f21b008..4667e76bfd6 100644
--- a/server-tools/instance-manager/commands.cc
+++ b/server-tools/instance-manager/commands.cc
@@ -184,8 +184,8 @@ int Show_instance_status::do_command(struct st_net *net,
}
- if (my_net_write(net, send_buff.buffer, (uint) position) ||
- send_buff.is_error())
+ if (send_buff.is_error() ||
+ my_net_write(net, send_buff.buffer, (uint) position))
goto err;
}
@@ -271,8 +271,8 @@ int Show_instance_options::do_command(struct st_net *net,
store_to_string(&send_buff,
(char *) instance->options.mysqld_path,
&position);
- if (my_net_write(net, send_buff.buffer, (uint) position) ||
- send_buff.is_error())
+ if (send_buff.is_error() ||
+ my_net_write(net, send_buff.buffer, (uint) position))
goto err;
}
@@ -281,8 +281,8 @@ int Show_instance_options::do_command(struct st_net *net,
position= 0;
store_to_string(&send_buff, (char *) "nonguarded", &position);
store_to_string(&send_buff, "", &position);
- if (my_net_write(net, send_buff.buffer, (uint) position) ||
- send_buff.is_error())
+ if (send_buff.is_error() ||
+ my_net_write(net, send_buff.buffer, (uint) position))
goto err;
}
@@ -299,8 +299,8 @@ int Show_instance_options::do_command(struct st_net *net,
store_to_string(&send_buff, option_value + 1, &position);
/* join name and the value into the same option again */
*option_value= '=';
- if (my_net_write(net, send_buff.buffer, (uint) position) ||
- send_buff.is_error())
+ if (send_buff.is_error() ||
+ my_net_write(net, send_buff.buffer, (uint) position))
goto err;
}
}
diff --git a/server-tools/instance-manager/instance_options.cc b/server-tools/instance-manager/instance_options.cc
index ab97c86316b..7c41a556cc4 100644
--- a/server-tools/instance-manager/instance_options.cc
+++ b/server-tools/instance-manager/instance_options.cc
@@ -80,9 +80,7 @@ void Instance_options::get_pid_filename(char *result)
char datadir[MAX_PATH_LEN];
if (mysqld_datadir == NULL)
- {
get_default_option(datadir, sizeof(datadir), "--datadir");
- }
else
strxnmov(datadir, MAX_PATH_LEN - 1, strchr(mysqld_datadir, '=') + 1,
"/", NullS);
@@ -106,8 +104,8 @@ pid_t Instance_options::get_pid()
FILE *pid_file_stream;
/* get the pid */
- if (pid_file_stream= my_fopen(pid_file_with_path,
- O_RDONLY | O_BINARY, MYF(0)))
+ if ((pid_file_stream= my_fopen(pid_file_with_path,
+ O_RDONLY | O_BINARY, MYF(0))) != NULL)
{
pid_t pid;
diff --git a/server-tools/instance-manager/manager.cc b/server-tools/instance-manager/manager.cc
index af8dac47dca..87ad938615f 100644
--- a/server-tools/instance-manager/manager.cc
+++ b/server-tools/instance-manager/manager.cc
@@ -171,7 +171,14 @@ void manager(const Options &options)
while (!shutdown_complete)
{
- sigwait(&mask, &signo);
+ int status= 0;
+
+ if (status= my_sigwait(&mask, &signo))
+ {
+ log_error("sigwait() failed");
+ goto err;
+ }
+
switch (signo)
{
case THR_SERVER_ALARM:
diff --git a/server-tools/instance-manager/parse_output.cc b/server-tools/instance-manager/parse_output.cc
index 4276062caf2..317970d2047 100644
--- a/server-tools/instance-manager/parse_output.cc
+++ b/server-tools/instance-manager/parse_output.cc
@@ -36,6 +36,10 @@
DESCRIPTION
Parse output of the "command". Find the "word" and return the next one
+
+ RETURN
+ 0 - ok
+ 1 - error occured
*/
int parse_output_and_get_value(const char *command, const char *word,
@@ -49,7 +53,8 @@ int parse_output_and_get_value(const char *command, const char *word,
wordlen= strlen(word);
- output= popen(command, "r");
+ if ((output= popen(command, "r")) == NULL)
+ goto err;
/*
We want fully buffered stream. We also want system to
@@ -69,15 +74,18 @@ int parse_output_and_get_value(const char *command, const char *word,
these are '/', '-' and '.' in the path expressions and filenames)
*/
get_word((const char **) &linep, &lineword_len, NONSPACE);
- if (!strncmp(word, linep, wordlen) && *result != '\0')
+ if (!strncmp(word, linep, wordlen))
{
/*
If we have found the word, return the next one. This is usually
an option value.
*/
+ linep+= lineword_len; /* swallow the previous one */
get_word((const char **) &linep, &lineword_len, NONSPACE);
- DBUG_ASSERT(result_len > lineword_len);
+ if (result_len <= lineword_len)
+ goto err;
strncpy(result, linep, lineword_len);
+ result[lineword_len]= '\0';
goto pclose;
}
}
@@ -87,4 +95,7 @@ pclose:
return 1;
return 0;
+
+err:
+ return 1;
}