Commit graph

39238 commits

Author SHA1 Message Date
Alexey Botchkov
69657f972b Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
test_if_data_home_dir fixed to look into real path.
            Checks added to mi_open for symlinks into data home directory.

per-file messages:
        include/my_sys.h
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          my_is_symlink interface added
        include/myisam.h
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          myisam_test_invalid_symlink interface added
        myisam/mi_check.c
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          mi_open_datafile calls modified
        myisam/mi_open.c
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          code added to mi_open to check for symlinks into data home directory.
          mi_open_datafile now accepts 'original' file path to check if it's
          an allowed symlink.
        myisam/mi_static.c
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          myisam_test_invlaid_symlink defined
        myisam/myisamchk.c
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          mi_open_datafile call modified
        myisam/myisamdef.h
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          mi_open_datafile interface modified - 'real_path' parameter added
        mysql-test/r/symlink.test
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          error codes corrected as some patch now rejected pointing inside datahome
        mysql-test/r/symlink.result
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          error messages corrected in the result
        mysys/my_symlink.c
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          my_is_symlink() implementsd
          my_realpath() now returns the 'realpath' even if a file isn't a symlink
        sql/mysql_priv.h
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          test_if_data_home_dir interface
        sql/mysqld.cc
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          myisam_test_invalid_symlik set with the 'test_if_data_home_dir'
        sql/sql_parse.cc
          Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
          
          error messages corrected
          test_if_data_home_dir code fixed
2008-08-22 17:31:53 +05:00
Sergey Glukhov
9bc9ddd56e Bug#38291 memory corruption and server crash with view/sp/function
Send_field.org_col_name has broken value on secondary execution.
It happens when result field is created from the field which belongs to view
due to forgotten assignment of some Send_field attributes. 
The fix:
set Send_field.org_col_name,org_table_name with correct value during Send_field intialization.
2008-08-20 14:49:28 +05:00
Georgi Kodinov
53fe782e74 merged 5.0-main to 5.0-bugteam 2008-08-19 14:55:36 +03:00
Georgi Kodinov
4b2dd02552 Bug#38195: Incorrect handling of aggregate functions when loose index scan
is used causes server crash.
  Revert the fix : unstable test case revealed by pushbuild
2008-08-19 13:36:24 +03:00
Chad MILLER
81470ec3e5 Bug#27526: BUILD/check_cpu misbehaving on Debian testing
more clever gcc version checking.
2008-08-18 13:28:46 -04:00
Chad MILLER
410de523fe Merge from 5.0-bugteam trunk. 2008-08-18 13:23:05 -04:00
Chad MILLER
747c3c2b2a Bug#30394: Empty HOME environment variable causes several utilities to crash
Tilde expansion could fail when it was to expand to an empty string (such as
when HOME is set to an empty string), especially on systems where size_t is
unsigned.
2008-08-18 13:06:27 -04:00
Chad MILLER
21e95461b0 Merge from 5.0-bugteam local. 2008-08-18 11:00:19 -04:00
Chad MILLER
2941024852 Bug#37301 Length and Max_length differ with no obvious reason(2nd version)
Length value is the length of the field,
Max_length is the length of the field value.
So Max_length can not be more than Length.
The fix: fixed calculation of the Item_empty_string item length

(Patch applied and queued on demand of Trudy/Davi.)
2008-08-15 16:13:27 -04:00
Chad MILLER
d0cf2fa6e7 Bug#36270: incorrect calculation result - works in 4.1 but not in 5.0 or 5.1
When the fractional part in a multiplication of DECIMALs
overflowed, we truncated the first operand rather than the
longest. Now truncating least significant places instead
for more precise multiplications.

(Queuing at demand of Trudy/Davi.)
2008-08-15 15:46:21 -04:00
Chad MILLER
18e93e8fd9 Correcting tree name in bzr config. Should not include team suffix. 2008-08-15 13:55:05 -04:00
Ramil Kalimullin
ebe0c22691 Fix for bug #34779: crash in checksum table on federated tables
with blobs containing nulls

Problem: FEDERATED SE improperly stores NULL fields in the record buffer.

Fix: store them properly.
2008-08-15 11:40:05 +05:00
Evgeny Potemkin
1c42e93fe9 Fixed failing test case for the bug#38195. 2008-08-14 23:55:18 +04:00
Evgeny Potemkin
cf28ff2616 Bug#38195: Incorrect handling of aggregate functions when loose index scan is
used causes server crash.

When the loose index scan access method is used values of aggregated functions
are precomputed by it. Aggregation of such functions shouldn't be performed
in this case and functions should be treated as normal ones.
The create_tmp_table function wasn't taking this into account and this led to
a crash if a query has MIN/MAX aggregate functions and employs temporary table
and loose index scan.
Now the JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate
functions as normal ones when the loose index scan is used.
2008-08-13 22:24:55 +04:00
Joerg Bruehe
d2c1c3977b Correct the version number to 5.0.70. 2008-08-13 12:34:35 +02:00
timothy.smith@sun.com
1ae849bbdd Raise version number after cloning 5.0.68 2008-08-13 11:05:24 +02:00
Timothy Smith
492a83a5e3 Merge some 5.0 innodb changes 2008-08-13 00:11:11 -06:00
Davi Arnaut
084a2c94f4 Merge and fix tree name. 2008-08-12 16:52:52 -03:00
Davi Arnaut
b9a9ae561a Merge mysql-5.0-bugteam into mysql-5.0 2008-08-12 15:51:00 -03:00
Davi Arnaut
d5620961a6 Bug#38486: Crash when using cursor protocol
Post-merge fix: mysql_client_test.c is compiled by C compilers
and some C compilers don't support mixed declarations and code
and it's explicitly forbidden by ISO C90.
2008-08-11 20:27:09 -03:00
Marc Alff
e087c05d3d Merge mysql-5.0-bugteam -> local bugfix branch 2008-08-11 15:21:29 -06:00
Marc Alff
fd324dd3ff Bug#37302 (missing DBUG_RETURN macro in function "find_key_block" (5.0 only))
Fixed missing DBUG_RETURN in the function find_key_block
2008-08-11 15:08:12 -06:00
Chad MILLER
318d288a34 Merge from bugteam 5.0 trunk. 2008-08-11 13:56:54 -04:00
Marc Alff
394691cd90 Bug#38296 (low memory crash with many conditions in a query)
This fix is for 5.0 only : back porting the 6.0 patch manually

The parser code in sql/sql_yacc.yy needs to be more robust to out of
memory conditions, so that when parsing a query fails due to OOM,
the thread gracefully returns an error.

Before this fix, a new/alloc returning NULL could:
- cause a crash, if dereferencing the NULL pointer,
- produce a corrupted parsed tree, containing NULL nodes,
- alter the semantic of a query, by silently dropping token values or nodes

With this fix:
- C++ constructors are *not* executed with a NULL "this" pointer
when operator new fails.
This is achieved by declaring "operator new" with a "throw ()" clause,
so that a failed new gracefully returns NULL on OOM conditions.

- calls to new/alloc are tested for a NULL result,

- The thread diagnostic area is set to an error status when OOM occurs.
This ensures that a request failing in the server properly returns an
ER_OUT_OF_RESOURCES error to the client.

- OOM conditions cause the parser to stop immediately (MYSQL_YYABORT).
This prevents causing further crashes when using a partially built parsed
tree in further rules in the parser.

No test scripts are provided, since automating OOM failures is not
instrumented in the server.
Tested under the debugger, to verify that an error in alloc_root cause the
thread to returns gracefully all the way to the client application, with
an ER_OUT_OF_RESOURCES error.
2008-08-11 10:10:00 -06:00
Chad MILLER
fe39a901bb Backport compiler warning fix from 5.1-bugteam. 2008-08-11 11:28:35 -04:00
Davi Arnaut
bafa07b2c4 Post-merge fix: Silence warning due to type mismatch. 2008-08-11 10:08:21 -03:00
Kristofer Pettersson
a3b0b7bbdb Automerge 2008-08-11 13:00:48 +02:00
Kristofer Pettersson
9fc39adfda Bug#38486 Crash when using cursor protocol
Server side cursors were not initialized properly and this caused a reference to
uninitialized memory.
2008-08-11 11:40:54 +02:00
Timothy Smith
4ea036f4cb Cherry-pick fix for Bug#35220 from innodb-5.0-ss2475 snapshot.
Bug#35220: ALTER TABLE too picky on reserved word "foreign"

In ALTER TABLE, change the internal parser to search for
``FOREIGN[[:space:]]'' instead of only ``FOREIGN'' when parsing
ALTER TABLE ... DROP FOREIGN KEY ...; otherwise it could be mistaken
with ALTER TABLE ... DROP foreign_col;

(This fix is already present in MySQL 5.1 and higher.)
2008-08-07 18:25:24 -06:00
Chad MILLER
6c93f05a66 Bug#31605: mysql_upgrade relies on Linux /proc filesystem when not \
running on Windows

We used two OS-specific methods of looking up the executable 
name, which don't work outside of those two kinds of OSes 
(Linux+Solaris and Windows).

We assume that if the user ran this program with a certain 
name, we can run the other sibling programs with a similar name.

(re-patch in bzr)
2008-08-07 12:24:39 -04:00
Chad MILLER
b94519a154 Bug#37201: make tags doesn't work in bazaar server trees
Fall back to "find" if bzr is unavailable.

Don't fail for paths that have spaces in them.
2008-08-06 16:25:25 -04:00
Chad MILLER
15beb38f9f Bug#37201: make tags doesn't work in bazaar server trees
bk sfiles -> bzr ls
2008-08-06 15:27:28 -04:00
Chad MILLER
a308c9e3fa Bug#30129: mysql_install_db appears to run normally, but the databases \
are not created  {Netware}

The init and test sql files were not created at cross-compilation time.

Now, make them in the default build rule.  Additionally, remove the "fix" 
SQL instructions, which are unnecessary for newly initialized databases.
Also, clean up the english in an error message, and BZRify nwbootstrap.
2008-08-06 09:25:03 -04:00
Kristofer Pettersson
27a17b251d automerge 2008-08-04 14:37:28 +02:00
Timothy Smith
021d7d72f8 Cherry-pick InnoDB fixes for Bug#34286, Bug#35352, and Bug#36600 from snapshot
innodb-5.0-ss2475.

Bug #34286  Assertion failure in thread 2816 in file .\row\row0sel.c line 3500
Since autoinc init performs a MySQL SELECT query to determine the auto-inc
value, set prebuilt->sql_stat_start = TRUE so that it is performed like any
normal SELECT, regardless of the context in which it was invoked.


Bug #35352  If InnoDB crashes with UNDO slots full error the error persists on restart
We've added a heuristic that checks the size of the UNDO slots cache lists
(insert and upate). If either of cached lists has more than 500 entries then we
add any UNDO slots that are freed, to the common free list instead of the cache
list, this is to avoid the case where all the free slots end up in only one of
the lists on startup after a crash.

Tested with test case for 26590 and passes all mysql-test(s).

Bug #36600  SHOW STATUS takes a lot of CPU in buf_get_latched_pages_number
Fixed by removing the Innodb_buffer_pool_pages_latched variable from SHOW
STATUS output in non-UNIV_DEBUG compilation.
2008-07-31 15:47:57 -06:00
Georgi Kodinov
a0768d32c2 Bug#34159: mysql_install_db fails with sql_mode=TRADITIONAL
Reset session sql_mode before creating system tables as it
is done in the mysql_fix_privilege_tables.sql script.
2008-07-31 12:28:04 +03:00
Georgi Kodinov
425abb4904 Bug#37662 nested if() inside sum() is parsed in exponential time
min() and max() functions are implemented in MySQL as macros.
This means that max(a,b) is expanded to: ((a) > (b) ? (a) : (b))
Note how 'a' is quoted two times.
Now imagine 'a' is a recursive function call that's several 10s of levels deep.
And the recursive function does max() with a function arg as well to dive into
recursion.
This means that simple function call can take most of the clock time.
Identified and fixed several such calls to max()/min() : including the IF() 
sql function implementation.
2008-07-30 14:07:37 +03:00
Kristofer Pettersson
7b244002a3 Bug#29738 Error message not properly translated to Serbian
Community contribution fix for Serbian translation in error message list.
2008-07-29 15:58:15 +02:00
Kristofer Pettersson
d298e107f7 Bug#37781 mysql_drop_user calls get_current_user() twice for no reason
Fixed typo and removed duplicate call to get_current_user.
2008-07-29 15:37:09 +02:00
Kristofer Pettersson
6033db3671 auto merge 2008-07-29 15:15:04 +02:00
Igor Babaev
47cd6462fd Merge 2008-07-28 01:24:56 -07:00
Igor Babaev
da156dde08 Fixed bug #38191.
Calling List<Cached_item>::delete_elements for the same list twice
caused a crash of the server in the function JOIN::cleaunup.
Ensured that delete_elements() in JOIN::cleanup would be called only once.
2008-07-26 13:44:07 -07:00
Davi Arnaut
8ce74569f7 Cherry-pick Bug#33362 from mysql-5.1 2008-07-24 11:14:34 -03:00
Georgi Kodinov
436f1dc49c Bug#37830 : ORDER BY ASC/DESC - no difference
Range scan in descending order for c <= <col> <= c type of
ranges was ignoring the DESC flag.
However some engines like InnoDB have the primary key parts 
as a suffix for every secondary key.
When such primary key suffix is used for ordering ignoring 
the DESC is not valid.
But we generally would like to do this because it's faster.
            
Fixed by performing only reverse scan if the primary key is used.
Removed some dead code in the process.
2008-07-23 14:25:00 +03:00
Kristofer Pettersson
25dd8b33d7 merge 5.0->5.0-bugteam 2008-07-22 12:55:15 +02:00
Kristofer Pettersson
df89855e70 Auto merge 2008-07-21 12:24:31 +02:00
Kristofer Pettersson
71930db28f Bug#37027 expire_logs_days and missing binlogs cause a crash !
If the server failed to expired log files during start up it could crash.
2008-07-24 14:28:21 +02:00
Timothy Smith
528b3105f5 Merge latest changes from 5.0-build 2008-07-20 21:59:47 -06:00
Timothy Smith
f44c3210ce Merge 5.0.66a-release changes 2008-07-18 21:46:03 -06:00
kent@mysql.com
18e0e280e4 Merge from mysql-5.0.66-release 2008-07-19 02:52:13 +02:00