Commit graph

40430 commits

Author SHA1 Message Date
Georgi Kodinov
faad822740 Addendum to the fix for bug #11764517 : replaced an absolute path. 2011-05-04 15:47:29 +03:00
Georgi Kodinov
4c5dfc00f7 Bug #11764517: 57359: POSSIBLE TO CIRCUMVENT SECURE_FILE_PRIV
USING '..' ON WINDOWS

Backport of the fix to 5.0 (to be null-merged to 5.1).
Moved the test into the main test suite. 
Made mysql-test-run.pl to not use symlinks for sdtdata as the symlinks
are now properly recognized by secure_file_priv.
Made sure the paths in load_file(), LOAD DATA and SELECT .. INTO OUTFILE 
that are checked against secure_file_priv in a correct way similarly to 5.1 
by the extended is_secure_file_path() backport before the comparison.
Added an extensive test with all the variants of upper/lower case, 
slash/backslash and case sensitivity.
Added few comments to the code.
2011-04-28 12:22:41 +03:00
Georgi Kodinov
8f449c36de Bug #11810224: CORRECT INVALID LGPL NOTICE IN CLUSTER FILES
The 5.0 fix. Removed unreferenced files and the directory 
that has them.
2011-04-18 17:04:01 +03:00
Jon Olav Hauglid
7f5180598f Bug#11882603 SELECT_ACL ON ANY COLUMN IN MYSQL.PROC ALLOWS TO SEE
DEFINITION OF ANY ROUTINE.

This follow-up patch removes SHOW PROCEDURE CODE from the test
case as this command is only available on debug versions of the
server and therefore caused the test to fail on release builds.
2011-04-13 09:54:51 +02:00
Jon Olav Hauglid
b3ea1d1feb Bug#11882603 SELECT_ACL ON ANY COLUMN IN MYSQL.PROC ALLOWS TO SEE
DEFINITION OF ANY ROUTINE.

The problem was that having the SELECT privilege any column of the
mysql.proc table by mistake allowed the user to see the definition
of all routines (using SHOW CREATE PROCEDURE/FUNCTION and SHOW
PROCEDURE/FUNCTION CODE).

This patch fixes the problem by making sure that those commands
are only allowed if the user has the SELECT privilege on the
mysql.proc table itself.

Test case added to sp-security.test.
2011-04-11 12:24:50 +02:00
Alexander Nozdrin
a490a6005a Empty merge from mysql-5.0. 2011-04-11 14:05:08 +04:00
Alexander Nozdrin
280c3cf7a9 Bump NDB-version. 2011-04-11 13:57:45 +04:00
Alexander Nozdrin
90697a7649 Empty merge from mysql-5.0 (bump the version). 2011-04-11 13:51:02 +04:00
Alexander Nozdrin
ab52fdfaab Bump version. 2011-04-11 13:45:41 +04:00
Sunanda Menon
25096933df Raise version number after cloning 5.0.93 2011-04-11 09:27:07 +02:00
Georgi Kodinov
db8e5b47d8 merge mysql-5.0->mysql-5.0-security 2011-04-07 12:17:36 +03:00
Magne Mahre
40af59490e Post-push fix for Bug 11896296
Didn't build on Solaris.
2011-03-22 16:27:32 +01:00
Magne Mahre
7606856e48 Bug#11896296 REMOVE LGPL LICENSED FILES IN MYSQL 5.0
The LGPL license is used in some legacy code, and to
adhere to current licensing polity, we remove those
files that are no longer used, and reorganize the
remaining LGPL code so it will be GPL licensed from
now on.

Note:  This patch only removed LGPL licensed files
       in MySQL 5.0, and is the first of a set of
       patches to remove LGPL from all trees.
       (See Bug# 11840513 for details)
2011-03-22 13:50:14 +01:00
Georgi Kodinov
1a6c17a148 merge 2011-03-21 15:54:17 +02:00
Georgi Kodinov
93ab096751 merge 5.0->5.0-security 2011-03-21 15:52:45 +02:00
Ramil Kalimullin
49ee8db5df Fix for bug#51875/#11759554 backported from mysql-5.1. 2011-03-21 09:21:14 +03:00
Kent Boortz
35bda0ae15 Removed the "Third-Party Component Notices" part 2011-03-16 23:04:29 +01:00
Georgi Kodinov
a29eea3fb1 merge 5.0->5.0-security 2011-03-09 16:46:31 +02:00
Georgi Kodinov
e1f412bec7 merge mysql-5.0-secrutiy-fixed -> mysql-5.0 2011-03-09 14:48:23 +02:00
Jonathan Perkin
edcdc79e5a Updated README file. 2011-02-16 14:42:44 -08:00
Georgi Kodinov
e2b44930cc merge 5.0->5.0-security 2011-02-10 12:07:16 +02:00
John H. Embretsen
bdb4df0f26 Backport to 5.0: Fix for Bug#52060 - test udf fails on Snow Leopard.
Reverse DNS lookup of "localhost" returns "broadcasthost" on Snow Leopard (Mac), and NULL on most others.
Simply ignore the output, as this is not an essential part of UDF testing.
2011-02-09 10:50:09 +01:00
Georgi Kodinov
3e897beab3 merge 5.0->5.0-security 2011-02-09 10:16:32 +02:00
Georgi Kodinov
fb18601ee8 Bug #59815: Missing License information with enterprise GPL packages
on behalf of Kent: Include the README into the binary packages
2011-02-08 17:36:25 +02:00
Jonathan Perkin
01f57bc98e Merge from mysql-5.0.92-release 2011-02-08 14:43:27 +01:00
Dmitry Lenev
e960abc7cf Fix for bug#36544 "DROP USER does not remove stored function
privileges".

The first problem was that DROP USER didn't properly remove privileges 
on stored functions from in-memory structures. So the dropped user
could have called stored functions on which he had privileges before
being dropped while his connection was still around.
Even worse if a new user with the same name was created he would
inherit privileges on stored functions from the dropped user.
Similar thing happened with old user name and function privileges
during RENAME USER.

This problem stemmed from the fact that the handle_grant_data() function
which handled DROP/RENAME USER didn't take any measures to update
in-memory hash with information about function privileges after
updating them on disk.

This patch solves this problem by adding code doing just that.

The second problem was that RENAME USER didn't properly update in-memory
structures describing table-level privileges and privileges on stored 
procedures. As result such privileges could have been lost after a rename
(i.e. not associated with the new name of user) and inherited by a new
user with the same name as the old name of the original user.

This problem was caused by code handling RENAME USER in
handle_grant_struct() which [sic!]:
a) tried to update wrong (tables) hash when updating stored procedure
   privileges for new user name.
b) passed wrong arguments to function performing the hash update and
   didn't take into account the way in which such update could have
   changed the order of the hash elements.

This patch solves this problem by ensuring that a) the correct hash
is updated, b) correct arguments are used for the hash_update()
function and c) we take into account possible changes in the order
of hash elements.
2011-02-07 14:01:19 +03:00
Georgi Kodinov
6954b67255 Bug #52315 part 2 addendum : reset back the timestamp 2011-02-02 20:10:57 +02:00
Georgi Kodinov
59f68983ff Fixes for Bug #55755 and Bug #52315 part 2
Bug #55755 : Date STD variable signness breaks server on FreeBSD and OpenBSD

* Added a check to configure on the size of time_t
* Created a macro to check for a valid time_t that is safe to use with datetime 
  functions and store in TIMESTAMP columns.
* Used the macro consistently instead of the ad-hoc checks introduced by 52315
* Fixed compliation warnings on platforms where the size of time_t is smaller than
  the size of a long (e.g. OpenBSD 4.8 64 amd64).

Bug #52315: utc_date() crashes when system time > year 2037

* Added a correct check for the timestamp range instead of just variable size check to
SET TIMESTAMP.
* Added overflow checking before converting to time_t. 
* Using a correct localized error message in this case instead of the generic error.
* Added a test suite.
* fixed the checks so that they check for unsigned time_t as well. Used the checks 
  consistently across the source code.
* fixed the original test case to expect the new error code.
2011-02-02 18:51:35 +02:00
Sergey Vojtovich
6908d1ef78 Merge. 2011-01-28 14:46:10 +03:00
Ramil Kalimullin
4eb7054598 Bug #47811 : remove the non-default alignment specification.
Fix backported from to 5.0.
"Remove the alignment option, let valgrind use its default"
2011-01-26 15:49:09 +03:00
Libing Song
c895aba35c Postfix bug#49124
Updated the copyright.
2011-01-26 15:30:06 +08:00
ade1c74b3f BUG#49124 Security issue with /*!-versioned */ SQL statements on Slave
Backport to 5.0.

/*![:version:] Query Code */, where [:version:] is a sequence of 5 
digits representing the mysql server version(e.g /*!50200 ... */),
is a special comment that the query in it can be executed on those 
servers whose versions are larger than the version appearing in the 
comment. It leads to a security issue when slave's version is larger 
than master's. A malicious user can improve his privileges on slaves. 
Because slave SQL thread is running with SUPER privileges, so it can
execute queries that he/she does not have privileges on master.
      
This bug is fixed with the logic below: 
- To replace '!' with ' ' in the magic comments which are not applied on
  master. So they become common comments and will not be applied on slave.
      
- Example:
  'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /*!99999 ,(3)*/
   will be binlogged as
  'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /* 99999 ,(3)*/
2011-01-15 13:48:16 +08:00
sunanda.menon@oracle.com
246edcd279 Raise version number after cloning 5.0.92 2011-01-13 10:00:03 +01:00
Georgi Kodinov
0355456dfb bumped up the version to 5.0.93 2011-01-13 10:57:19 +02:00
Georgi Kodinov
0bb9123f64 automerge 2011-01-07 15:28:36 +02:00
Alexander Nozdrin
7bd18b1a0d Auto-merge from mysql-5.0-bugteam. 2010-12-29 14:30:37 +03:00
Kent Boortz
fddb1f1b13 - Added/updated copyright headers
- Removed files specific to compiling on OS/2
- Removed files specific to SCO Unix packaging
- Removed "libmysqld/copyright", text is included in documentation
- Removed LaTeX headers for NDB Doxygen documentation
- Removed obsolete NDB files
- Removed "mkisofs" binaries
- Removed the "cvs2cl.pl" script
- Changed a few GPL texts to use "program" instead of "library"
2010-12-28 19:57:23 +01:00
Georgi Kodinov
89d01ca087 merge 2010-12-17 15:02:10 +02:00
Georgi Kodinov
8165ea21f0 tree details update to main 2010-12-17 14:42:30 +02:00
Martin Hansson
7d2b182d51 Merge. 2010-12-16 10:37:05 +01:00
Martin Hansson
ff15ebdd5e Bug#54568: create view cause Assertion failed: 0,
file .\item_subselect.cc, line 836
     
IN quantified predicates are never executed directly. They are rather wrapped
inside nodes called IN Optimizers (Item_in_optimizer) which take care of the
execution. However, this is not done during query preparation. Unfortunately
the LIKE predicate pre-evaluates constant right-hand side arguments even
during name resolution. Likely this is meant as an optimization.
      
Fixed by not pre-evaluating LIKE arguments in view prepare mode.

Back-ported to 5.0s
2010-12-16 10:07:48 +01:00
Alexander Nozdrin
39036ca618 Patch for Bug#57952 (privilege change is not taken into account by EXECUTE).
The user-visible problem was that changes to column-level privileges,
happened in between of PREPARE and EXECUTE of a prepared statement, were
neglected. I.e. a prepared statement could be executed with the
column-level privileges as of PREPARE-time. The problem existed for
column-level privileges only.

A similar problem existed for stored programs: the changes between
executions didn't have an effect.

Technically the thing is that table references are cached in
Prepared_statement::prepare() call. In subsequent
Prepared_statement::execute() calls those cached values are used.
There are two functions to get a field by name: find_field_in_table() and
find_field_in_table_ref(). On prepare-phase find_field_in_table_ref() is
called, on execute-phase -- find_field_in_table() because the table is
cached. find_field_in_table() does not check column-level privileges and
expects the caller to do that. The problem was that this check was
forgotten.

The fix is to check them there as it happens in find_field_in_table_ref().
2010-12-15 19:00:01 +03:00
Gleb Shchepa
01521a0afb backport of bug #54476 fix from 5.1-bugteam to 5.0-bugteam.
Original revid: alexey.kopytov@sun.com-20100723115254-jjwmhq97b9wl932l

 > Bug #54476: crash when group_concat and 'with rollup' in
 >                      prepared statements
 >
 > Using GROUP_CONCAT() together with the WITH ROLLUP modifier
 > could crash the server.
 >
 > The reason was a combination of several facts:
 >
 > 1. The Item_func_group_concat class stores pointers to ORDER
 > objects representing the columns in the ORDER BY clause of
 > GROUP_CONCAT().
 >
 > 2. find_order_in_list() called from
 > Item_func_group_concat::setup() modifies the ORDER objects so
 > that their 'item' member points to the arguments list
 > allocated in the Item_func_group_concat constructor.
 >
 > 3. In some cases (e.g. in JOIN::rollup_make_fields) a copy of
 > the original Item_func_group_concat object could be created by
 > using the Item_func_group_concat::Item_func_group_concat(THD
 > *thd, Item_func_group_concat *item) copy constructor. The
 > latter essentially creates a shallow copy of the source
 > object. Memory for the arguments array is allocated on
 > thd->mem_root, but the pointers for arguments and ORDER are
 > copied verbatim.
 >
 > What happens in the test case is that when executing the query
 > for the first time, after a copy of the original
 > Item_func_group_concat object has been created by
 > JOIN::rollup_make_fields(), find_order_in_list() is called for
 > this new object. It then resolves ORDER BY by modifying the
 > ORDER objects so that they point to elements of the arguments
 > array which is local to the cloned object. When thd->mem_root
 > is freed upon completing the execution, pointers in the ORDER
 > objects become invalid. Those ORDER objects, however, are also
 > shared with the original Item_func_group_concat object which is
 > preserved between executions of a prepared statement. So the
 > first call to find_order_in_list() for the original object on
 > the second execution tries to dereference an invalid pointer.
 >
 > The solution is to create copies of the ORDER objects when
 > copying Item_func_group_concat to not leave any stale pointers
 > in other instances with different lifecycles.
2010-12-14 23:52:53 +03:00
Georgi Kodinov
7e8ddb6b03 Backport of the 5.1 fix for bug #55826 to 5.0 2010-12-08 16:05:26 +02:00
Georgi Kodinov
5df7f9bc26 Backport of bug #55564 to 5.0-security 2010-12-03 16:56:36 +02:00
Christopher Powers
a723fa8744 merge 2010-11-29 21:10:05 -06:00
Christopher Powers
33b560e89d Bug#35333, "If Federated table can't connect to remote host, can't retrieve metadata"
Improved error handling such that queries against Information_Schema.Tables won't
fail if a Federated table is unable to connect to remote host.
2010-11-29 18:51:46 -06:00
Georgi Kodinov
24800599b3 Fixed bteam issue #37235: 5.0 trees now will work correctly in pb2 and
will not display "indicated result file not found" due to wrongly named
var directory.
2010-11-29 17:33:24 +02:00
Georgi Kodinov
12c5a7d72f Fixed a pb2 issue with not finding the test dirs. 2010-11-29 17:30:07 +02:00
Gleb Shchepa
d85c305362 backport of bug #54461 from 5.1-security to 5.0-security
> revision-id: gshchepa@mysql.com-20100801181236-uyuq6ewaq43rw780
 > parent: alexey.kopytov@sun.com-20100723115254-jjwmhq97b9wl932l
 > committer: Gleb Shchepa <gshchepa@mysql.com>
 > branch nick: mysql-5.1-security
 > timestamp: Sun 2010-08-01 22:12:36 +0400
 > Bug #54461: crash with longblob and union or update with subquery
 >
 > Queries may crash, if
 >   1) the GREATEST or the LEAST function has a mixed list of
 >      numeric and LONGBLOB arguments and
 >   2) the result of such a function goes through an intermediate
 >      temporary table.
 >
 > An Item that references a LONGBLOB field has max_length of
 > UINT_MAX32 == (2^32 - 1).
 >
 > The current implementation of GREATEST/LEAST returns REAL
 > result for a mixed list of numeric and string arguments (that
 > contradicts with the current documentation, this contradiction
 > was discussed and it was decided to update the documentation).
 >
 > The max_length of such a function call was calculated as a
 > maximum of argument max_length values (i.e. UINT_MAX32).
 >
 > That max_length value of UINT_MAX32 was used as a length for
 > the intermediate temporary table Field_double to hold
 > GREATEST/LEAST function result.
 >
 > The Field_double::val_str() method call on that field
 > allocates a String value.
 >
 > Since an allocation of String reserves an additional byte
 > for a zero-termination, the size of String buffer was
 > set to (UINT_MAX32 + 1), that caused an integer overflow:
 > actually, an empty buffer of size 0 was allocated.
 >
 > An initialization of the "first" byte of that zero-size
 > buffer with '\0' caused a crash.
 >
 > The Item_func_min_max::fix_length_and_dec() has been
 > modified to calculate max_length for the REAL result like
 > we do it for arithmetical operators.
2010-11-24 23:03:16 +03:00