1. 27 Aug, 2008 1 commit
    • Evgeny Potemkin's avatar
      Bug#38195: Incorrect handling of aggregate functions when loose index scan is · dcf82665
      Evgeny Potemkin authored
      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.
      
      
      mysql-test/r/group_min_max.result:
        Added a test case for the bug#38195.
      mysql-test/t/group_min_max.test:
        Added a test case for the bug#38195.
      sql/sql_select.cc:
        Bug#38195: Incorrect handling of aggregate functions when loose index scan is
        used causes server crash.
        The JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate
        functions as normal ones when the loose index scan is used.
      dcf82665
  2. 25 Aug, 2008 1 commit
    • Sergey Petrunia's avatar
      BUG#36639: subselect.test crashes on 64 bit pentium4 when compiled for valgrind, commit into 5.0 · b7700d89
      Sergey Petrunia authored
      - Use the compiler's default copy constructor for QUICK_RANGE_SELECT. 
        bcopy(this, copy, ...) call caused some odd action on gcc-4.1.2 on x86_64
      
      sql/opt_range.cc:
        BUG#36639: subselect.test crashes on 64 bit pentium4 when compiled for valgrind
        - Set QUICK_SELECT_DESC not to use MRR implementation (code moved to here
          from opt_range.h)
      sql/opt_range.h:
        BUG#36639: subselect.test crashes on 64 bit pentium4 when compiled for valgrind
        - Use the compiler's default copy constructor for QUICK_RANGE_SELECT. 
          bcopy(this, copy, ...) call caused some odd action on gcc-4.1.2 on x86_64
      b7700d89
  3. 26 Aug, 2008 4 commits
  4. 25 Aug, 2008 2 commits
    • Davi Arnaut's avatar
      Bug#36579 Dumping information about locks in use may lead to a server crash · c568f7ac
      Davi Arnaut authored
      Dumping information about locks in use by sending a SIGHUP signal
      to the server or by invoking the "mysqladmin debug" command may
      lead to a server crash in debug builds or to undefined behavior in
      production builds.
      
      The problem was that a mutex that protects a lock object (THR_LOCK)
      might have been destroyed before the lock object was actually removed
      from the list of locks in use, causing a race condition with other
      threads iterating over the list. The solution is to destroy the mutex
      only after removing lock object from the list.
      
      mysys/thr_lock.c:
        Destroy the mutex that protects the lock object only after removing
        the lock object from the list of locks in use.
      c568f7ac
    • Sergey Glukhov's avatar
      Bug#37428 Potential security issue with UDFs - linux shellcode execution. · 43847871
      Sergey Glukhov authored
      plugin_dir option backported from 5.1
      
      mysql-test/r/udf.result:
        result fix
      sql/mysql_priv.h:
        opt_plugin_dir and opt_plugin_dir_ptr declared.
      sql/mysqld.cc:
        'plugin_dir' option added
      sql/set_var.cc:
        'plugin_dir' option added.
      sql/sql_udf.cc:
        opt_plugin_dir added to the udf->dl path. Warn if it's not specified.
      sql/unireg.h:
        PLUGINDIR defined.
      43847871
  5. 22 Aug, 2008 1 commit
    • Alexey Botchkov's avatar
      Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY. · 69aa70b6
      Alexey Botchkov authored
                  
                  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
      69aa70b6
  6. 20 Aug, 2008 1 commit
    • Sergey Glukhov's avatar
      Bug#38291 memory corruption and server crash with view/sp/function · 1b39f28f
      Sergey Glukhov authored
      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.
      
      mysql-test/r/metadata.result:
        result fix
        The result file was changed because now forgotten attributes are properly set.
      mysql-test/r/sp.result:
        test result
      mysql-test/t/sp.test:
        test case
      sql/item.cc:
        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.
      tests/mysql_client_test.c:
        test case fix
        The test was changed because now forgotten attributes are properly set.
      1b39f28f
  7. 19 Aug, 2008 2 commits
  8. 18 Aug, 2008 4 commits
  9. 15 Aug, 2008 4 commits
    • Chad MILLER's avatar
      Bug#37301 Length and Max_length differ with no obvious reason(2nd version) · 63255c04
      Chad MILLER authored
      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.)
      
      sql/item.h:
        fixed calculation of the item length
      sql/sql_show.cc:
        removed unnecessary code
      63255c04
    • Chad MILLER's avatar
      Bug#36270: incorrect calculation result - works in 4.1 but not in 5.0 or 5.1 · cebc2bf6
      Chad MILLER authored
      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.)
      
      mysql-test/r/type_newdecimal.result:
        show that if we need to truncate the scale of an operand, we pick the
        right one (that is, we discard the least significant decimal places)
      mysql-test/t/type_newdecimal.test:
        show that if we need to truncate the scale of an operand, we pick the
        right one (that is, we discard the least significant decimal places)
      strings/decimal.c:
        when needing to disregard fractional parts, pick the least
        significant ones
      cebc2bf6
    • Chad MILLER's avatar
    • Ramil Kalimullin's avatar
      Fix for bug #34779: crash in checksum table on federated tables · 9deb2668
      Ramil Kalimullin authored
      with blobs containing nulls
      
      Problem: FEDERATED SE improperly stores NULL fields in the record buffer.
      
      Fix: store them properly.
      
      
      mysql-test/r/federated.result:
        Fix for bug #34779: crash in checksum table on federated tables 
        with blobs containing nulls
          - test result.
      mysql-test/t/federated.test:
        Fix for bug #34779: crash in checksum table on federated tables 
        with blobs containing nulls
          - test case.
      sql/ha_federated.cc:
        Fix for bug #34779: crash in checksum table on federated tables 
        with blobs containing nulls
          - storing a NULL field in the record buffer
            we must initialize its data as other code
            may rely on it.
      9deb2668
  10. 14 Aug, 2008 1 commit
  11. 13 Aug, 2008 4 commits
    • Evgeny Potemkin's avatar
      Bug#38195: Incorrect handling of aggregate functions when loose index scan is · f7e34341
      Evgeny Potemkin authored
      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.
      
      
      mysql-test/r/group_min_max.result:
        Added a test case for the bug#38195.
      mysql-test/t/group_min_max.test:
        Added a test case for the bug#38195.
      sql/sql_select.cc:
        Bug#38195: Incorrect handling of aggregate functions when loose index scan is
        used causes server crash.
        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.
      f7e34341
    • Joerg Bruehe's avatar
      Correct the version number to 5.0.70. · 75882e39
      Joerg Bruehe authored
      configure.in:
        Version number raise was incomplete, the 5.0 tree steps by 2.
      75882e39
    • unknown's avatar
      Raise version number after cloning 5.0.68 · e822ca5b
      unknown authored
      e822ca5b
    • Timothy Smith's avatar
      Merge some 5.0 innodb changes · 97089cb0
      Timothy Smith authored
      97089cb0
  12. 12 Aug, 2008 2 commits
  13. 11 Aug, 2008 9 commits
    • Davi Arnaut's avatar
      Bug#38486: Crash when using cursor protocol · 7d67dda7
      Davi Arnaut authored
      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.
      
      tests/mysql_client_test.c:
        Don't mix declarations and code.
      7d67dda7
    • Marc Alff's avatar
      Merge mysql-5.0-bugteam -> local bugfix branch · 00f22e76
      Marc Alff authored
      00f22e76
    • Marc Alff's avatar
      Bug#37302 (missing DBUG_RETURN macro in function "find_key_block" (5.0 only)) · 1eec5ca1
      Marc Alff authored
      Fixed missing DBUG_RETURN in the function find_key_block
      1eec5ca1
    • Chad MILLER's avatar
      Merge from bugteam 5.0 trunk. · ed644f3a
      Chad MILLER authored
      ed644f3a
    • Marc Alff's avatar
      Bug#38296 (low memory crash with many conditions in a query) · 5d265802
      Marc Alff authored
      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.
      5d265802
    • Chad MILLER's avatar
      c1cadb10
    • Davi Arnaut's avatar
      Post-merge fix: Silence warning due to type mismatch. · abbb2d9a
      Davi Arnaut authored
      client/mysql_upgrade.c:
        Silence warning due to type mismatch.
      abbb2d9a
    • Kristofer Pettersson's avatar
      Automerge · 55930a43
      Kristofer Pettersson authored
      55930a43
    • Kristofer Pettersson's avatar
      Bug#38486 Crash when using cursor protocol · 4bf720fc
      Kristofer Pettersson authored
                  
      Server side cursors were not initialized properly and this caused a reference to
      uninitialized memory.
      4bf720fc
  14. 08 Aug, 2008 1 commit
    • Timothy Smith's avatar
      Cherry-pick fix for Bug#35220 from innodb-5.0-ss2475 snapshot. · 97e686dd
      Timothy Smith authored
      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.)
      97e686dd
  15. 07 Aug, 2008 1 commit
    • Chad MILLER's avatar
      Bug#31605: mysql_upgrade relies on Linux /proc filesystem when not \ · 133557c1
      Chad MILLER authored
      	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)
      133557c1
  16. 06 Aug, 2008 2 commits