You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
3.0 KiB
57 lines
3.0 KiB
The following problems have been found by Coverity - static analysis tool. |
|
|
|
mysql-5.5.31/plugin/semisync/semisync_master.cc:672:parameter_as_source – Note: This defect has an elevated risk because the source argument is a parameter of the current function. |
|
|
|
mysql-5.5.31/plugin/semisync/semisync_master.cc:661:parameter_as_source – Note: This defect has an elevated risk because the source argument is a parameter of the current function. |
|
|
|
mysql-5.5.31/plugin/semisync/semisync_master.cc:555:parameter_as_source – Note: This defect has an elevated risk because the source argument is a parameter of the current function. |
|
|
|
diff -up mariadb-10.0.21/plugin/semisync/semisync_master.cc.orig mariadb-10.0.21/plugin/semisync/semisync_master.cc |
|
--- mariadb-10.0.21/plugin/semisync/semisync_master.cc.orig 2015-08-05 20:11:31.000000000 +0200 |
|
+++ mariadb-10.0.21/plugin/semisync/semisync_master.cc 2015-08-10 17:22:31.700604043 +0200 |
|
@@ -553,7 +553,8 @@ int ReplSemiSyncMaster::reportReplyBinlo |
|
|
|
if (need_copy_send_pos) |
|
{ |
|
- strcpy(reply_file_name_, log_file_name); |
|
+ strncpy(reply_file_name_, log_file_name, sizeof(reply_file_name_)-1); |
|
+ reply_file_name_[sizeof(reply_file_name_)-1] = '\0'; |
|
reply_file_pos_ = log_file_pos; |
|
reply_file_name_inited_ = true; |
|
|
|
@@ -661,7 +662,8 @@ int ReplSemiSyncMaster::commitTrx(const |
|
if (cmp <= 0) |
|
{ |
|
/* This thd has a lower position, let's update the minimum info. */ |
|
- strcpy(wait_file_name_, trx_wait_binlog_name); |
|
+ strncpy(wait_file_name_, trx_wait_binlog_name, sizeof(wait_file_name_)-1); |
|
+ wait_file_name_[sizeof(wait_file_name_)-1] = '\0'; |
|
wait_file_pos_ = trx_wait_binlog_pos; |
|
|
|
rpl_semi_sync_master_wait_pos_backtraverse++; |
|
@@ -672,7 +674,8 @@ int ReplSemiSyncMaster::commitTrx(const |
|
} |
|
else |
|
{ |
|
- strcpy(wait_file_name_, trx_wait_binlog_name); |
|
+ strncpy(wait_file_name_, trx_wait_binlog_name, sizeof(wait_file_name_)-1); |
|
+ wait_file_name_[sizeof(wait_file_name_)-1] = '\0'; |
|
wait_file_pos_ = trx_wait_binlog_pos; |
|
wait_file_name_inited_ = true; |
|
|
|
|
|
mysql-5.5.31/sql/rpl_handler.cc:306:fixed_size_dest – You might overrun the 512 byte fixed-size string "log_info->log_file" by copying "log_file + dirname_length(log_file)" without checking the length. diff -up mysql-5.5.31/sql/rpl_handler.cc.covscan-stroverflow mysql-5.5.31/sql/rpl_handler.cc |
|
|
|
diff -up mariadb-10.0.21/sql/rpl_handler.cc.orig mariadb-10.0.21/sql/rpl_handler.cc |
|
--- mariadb-10.0.21/sql/rpl_handler.cc.orig 2015-08-05 20:11:31.000000000 +0200 |
|
+++ mariadb-10.0.21/sql/rpl_handler.cc 2015-08-10 17:28:57.093803582 +0200 |
|
@@ -261,7 +261,8 @@ int Binlog_storage_delegate::after_flush |
|
thd->semisync_info= log_info; |
|
} |
|
|
|
- strcpy(log_info->log_file, log_file+dirname_length(log_file)); |
|
+ strncpy(log_info->log_file, log_file+dirname_length(log_file), sizeof(log_info->log_file)-1); |
|
+ log_info->log_file[sizeof(log_info->log_file)-1] = '\0'; |
|
log_info->log_pos = log_pos; |
|
|
|
FOREACH_OBSERVER(ret, after_flush, false,
|
|
|