~ubuntu-branches/ubuntu/quantal/mysql-5.5/quantal-security

« back to all changes in this revision

Viewing changes to storage/innobase/page/page0page.c

  • Committer: Package Import Robot
  • Author(s): Marc Deslauriers
  • Date: 2013-01-16 10:11:37 UTC
  • mfrom: (1.1.11)
  • Revision ID: package-import@ubuntu.com-20130116101137-w2lant30o21mzi0b
Tags: 5.5.29-0ubuntu0.12.10.1
* SECURITY UPDATE: Update to 5.5.29 to fix security issues (LP: #1100264)
  - http://www.oracle.com/technetwork/topics/security/cpujan2013-1515902.html
* debian/patches/CVE-2012-5611.patch: removed, included upstream.
* debian/patches/38_scripts__mysqld_safe.sh__signals.patch: refreshed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
626
626
                Furthermore, btr_compress() may set FIL_PAGE_PREV to
627
627
                FIL_NULL on new_page while leaving it intact on
628
628
                new_page_zip.  So, we cannot validate new_page_zip. */
629
 
                ut_a(page_zip_validate_low(page_zip, page, TRUE));
 
629
                ut_a(page_zip_validate_low(page_zip, page, index, TRUE));
630
630
        }
631
631
#endif /* UNIV_ZIP_DEBUG */
632
632
        ut_ad(buf_block_get_frame(block) == page);
796
796
                        /* Before copying, "ret" was the predecessor
797
797
                        of the predefined supremum record.  If it was
798
798
                        the predefined infimum record, then it would
799
 
                        still be the infimum.  Thus, the assertion
800
 
                        ut_a(ret_pos > 0) would fail here. */
 
799
                        still be the infimum, and we would have
 
800
                        ret_pos == 0. */
801
801
 
802
802
                        if (UNIV_UNLIKELY
803
803
                            (!page_zip_reorganize(new_block, index, mtr))) {
946
946
        ut_ad(size == ULINT_UNDEFINED || size < UNIV_PAGE_SIZE);
947
947
        ut_ad(!page_zip || page_rec_is_comp(rec));
948
948
#ifdef UNIV_ZIP_DEBUG
949
 
        ut_a(!page_zip || page_zip_validate(page_zip, page));
 
949
        ut_a(!page_zip || page_zip_validate(page_zip, page, index));
950
950
#endif /* UNIV_ZIP_DEBUG */
951
951
 
952
952
        if (page_rec_is_infimum(rec)) {
988
988
                                                  ULINT_UNDEFINED, &heap);
989
989
                        rec = rec_get_next_ptr(rec, TRUE);
990
990
#ifdef UNIV_ZIP_DEBUG
991
 
                        ut_a(page_zip_validate(page_zip, page));
 
991
                        ut_a(page_zip_validate(page_zip, page, index));
992
992
#endif /* UNIV_ZIP_DEBUG */
993
993
                        page_cur_delete_rec(&cur, index, offsets, mtr);
994
994
                } while (page_offset(rec) != PAGE_NEW_SUPREMUM);
1052
1052
 
1053
1053
                n_owned = rec_get_n_owned_new(rec2) - count;
1054
1054
                slot_index = page_dir_find_owner_slot(rec2);
 
1055
                ut_ad(slot_index > 0);
1055
1056
                slot = page_dir_get_nth_slot(page, slot_index);
1056
1057
        } else {
1057
1058
                rec_t*  rec2    = rec;
1067
1068
 
1068
1069
                n_owned = rec_get_n_owned_old(rec2) - count;
1069
1070
                slot_index = page_dir_find_owner_slot(rec2);
 
1071
                ut_ad(slot_index > 0);
1070
1072
                slot = page_dir_get_nth_slot(page, slot_index);
1071
1073
        }
1072
1074
 
1126
1128
                between btr_attach_half_pages() and insert_page = ...
1127
1129
                when btr_page_get_split_rec_to_left() holds
1128
1130
                (direction == FSP_DOWN). */
1129
 
                ut_a(!page_zip || page_zip_validate_low(page_zip, page, TRUE));
 
1131
                ut_a(!page_zip
 
1132
                     || page_zip_validate_low(page_zip, page, index, TRUE));
1130
1133
        }
1131
1134
#endif /* UNIV_ZIP_DEBUG */
1132
1135
 
1197
1200
                        = buf_block_get_page_zip(block);
1198
1201
                ut_a(!new_page_zip == !page_zip);
1199
1202
                ut_a(!new_page_zip
1200
 
                     || page_zip_validate(new_page_zip, new_page));
 
1203
                     || page_zip_validate(new_page_zip, new_page, index));
1201
1204
                ut_a(!page_zip
1202
 
                     || page_zip_validate(page_zip, page_align(split_rec)));
 
1205
                     || page_zip_validate(page_zip, page_align(split_rec),
 
1206
                                          index));
1203
1207
        }
1204
1208
#endif /* UNIV_ZIP_DEBUG */
1205
1209
 
1471
1475
        ulint                   n_owned;
1472
1476
        const rec_t*            rec;
1473
1477
 
 
1478
        if (nth == 0) {
 
1479
                return(page_get_infimum_rec(page));
 
1480
        }
 
1481
 
1474
1482
        ut_ad(nth < UNIV_PAGE_SIZE / (REC_N_NEW_EXTRA_BYTES + 1));
1475
1483
 
1476
1484
        for (i = 0;; i++) {