~ubuntu-branches/ubuntu/lucid/mysql-dfsg-5.1/lucid-security

« back to all changes in this revision

Viewing changes to storage/myisam/rt_index.c

  • Committer: Package Import Robot
  • Author(s): Marc Deslauriers
  • Date: 2012-02-22 22:33:55 UTC
  • mfrom: (1.1.5)
  • Revision ID: package-import@ubuntu.com-20120222223355-or06x1euyk8n0ldi
Tags: 5.1.61-0ubuntu0.10.04.1
* SECURITY UPDATE: Update to 5.1.61 to fix multiple security issues
  (LP: #937869)
  - http://www.oracle.com/technetwork/topics/security/cpujan2012-366304.html
  - CVE-2011-2262
  - CVE-2012-0075
  - CVE-2012-0112
  - CVE-2012-0113
  - CVE-2012-0114
  - CVE-2012-0115
  - CVE-2012-0116
  - CVE-2012-0117
  - CVE-2012-0118
  - CVE-2012-0119
  - CVE-2012-0120
  - CVE-2012-0484
  - CVE-2012-0485
  - CVE-2012-0486
  - CVE-2012-0487
  - CVE-2012-0488
  - CVE-2012-0489
  - CVE-2012-0490
  - CVE-2012-0491
  - CVE-2012-0492
  - CVE-2012-0493
  - CVE-2012-0494
  - CVE-2012-0495
  - CVE-2012-0496
* Dropped patches unnecessary with 5.1.61:
  - debian/patches/90_mysql_safer_strmov.dpatch
  - debian/patches/51_ssl_test_certs.dpatch
  - debian/patches/52_CVE-2009-4030.dpatch
  - debian/patches/53_CVE-2009-4484.dpatch
  - debian/patches/54_CVE-2008-7247.dpatch
  - debian/patches/55_CVE-2010-1621.dpatch
  - debian/patches/56_CVE-2010-1850.dpatch
  - debian/patches/57_CVE-2010-1849.dpatch
  - debian/patches/58_CVE-2010-1848.dpatch
  - debian/patches/59_CVE-2010-1626.dpatch
  - debian/patches/60_CVE-2010-2008.dpatch
  - debian/patches/60_CVE-2010-3677.dpatch
  - debian/patches/60_CVE-2010-3678.dpatch
  - debian/patches/60_CVE-2010-3679.dpatch
  - debian/patches/60_CVE-2010-3680.dpatch
  - debian/patches/60_CVE-2010-3681.dpatch
  - debian/patches/60_CVE-2010-3682.dpatch
  - debian/patches/60_CVE-2010-3683.dpatch
  - debian/patches/60_CVE-2010-3833.dpatch
  - debian/patches/60_CVE-2010-3834.dpatch
  - debian/patches/60_CVE-2010-3835.dpatch
  - debian/patches/60_CVE-2010-3836.dpatch
  - debian/patches/60_CVE-2010-3837.dpatch
  - debian/patches/60_CVE-2010-3838.dpatch
  - debian/patches/60_CVE-2010-3839.dpatch
  - debian/patches/60_CVE-2010-3840.dpatch
  - debian/patches/61_disable_longfilename_test.dpatch
  - debian/patches/62_alter_table_fix.dpatch
  - debian/patches/63_cherrypick-upstream-49479.dpatch
  - debian/patches/10_readline_build_fix.dpatch
* debian/mysql-client-5.1.docs: removed EXCEPTIONS-CLIENT file
* debian/mysql-server-5.1.docs,debian/libmysqlclient16.docs,
  debian/libmysqlclient-dev.docs: removed, no longer necessary.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (C) 2002-2006 MySQL AB & Ramil Kalimullin
 
1
/* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
2
2
   
3
3
   This program is free software; you can redistribute it and/or modify
4
4
   it under the terms of the GNU General Public License as published by
404
404
 
405
405
int rtree_get_next(MI_INFO *info, uint keynr, uint key_length)
406
406
{
407
 
  my_off_t root;
 
407
  my_off_t root= info->s->state.key_root[keynr];
408
408
  MI_KEYDEF *keyinfo = info->s->keyinfo + keynr;
409
409
 
410
 
  if (!info->buff_used)
 
410
  if (root == HA_OFFSET_ERROR)
 
411
  {
 
412
    my_errno= HA_ERR_END_OF_FILE;
 
413
    return -1;
 
414
  }
 
415
  
 
416
  if (!info->buff_used && !info->page_changed)
411
417
  {
412
418
    uint k_len = keyinfo->keylength - info->s->base.rec_reflength;
413
419
    /* rt_PAGE_NEXT_KEY(info->int_keypos) */
428
434
 
429
435
    return 0;
430
436
  }
431
 
  else
432
 
  {
433
 
    if ((root = info->s->state.key_root[keynr]) == HA_OFFSET_ERROR)
434
 
    {
435
 
      my_errno= HA_ERR_END_OF_FILE;
436
 
      return -1;
437
 
    }
438
 
  
439
 
    return rtree_get_req(info, keyinfo, key_length, root, 0);
440
 
  }
 
437
 
 
438
  return rtree_get_req(info, keyinfo, key_length, root, 0);
441
439
}
442
440
 
443
441
 
483
481
                             uint key_length, uchar *page_buf, uint nod_flag)
484
482
{
485
483
  double increase;
486
 
  double best_incr;
 
484
  double UNINIT_VAR(best_incr);
487
485
  double area;
488
 
  double best_area;
 
486
  double UNINIT_VAR(best_area);
489
487
  uchar *best_key= NULL;
490
488
  uchar *k = rt_PAGE_FIRST_KEY(page_buf, nod_flag);
491
489
  uchar *last = rt_PAGE_END(page_buf);
492
490
 
493
 
  LINT_INIT(best_area);
494
 
  LINT_INIT(best_key);
495
 
  LINT_INIT(best_incr);
496
 
 
497
491
  for (; k < last; k = rt_PAGE_NEXT_KEY(k, key_length, nod_flag))
498
492
  {
499
493
    /* The following is safe as -1.0 is an exact number */
643
637
    }
644
638
    case 1: /* root was split, grow a new root */
645
639
    { 
646
 
      uchar *new_root_buf;
 
640
      uchar *new_root_buf= info->buff + info->s->base.max_key_block_length;
647
641
      my_off_t new_root;
648
642
      uchar *new_key;
649
643
      uint nod_flag = info->s->base.key_reflength;
650
644
 
651
645
      DBUG_PRINT("rtree", ("root was split, grow a new root"));
652
 
      if (!(new_root_buf = (uchar*)my_alloca((uint)keyinfo->block_length + 
653
 
                                             MI_MAX_KEY_BUFF)))
654
 
      {
655
 
        my_errno = HA_ERR_OUT_OF_MEM;
656
 
        DBUG_RETURN(-1); /* purecov: inspected */
657
 
      }
658
646
 
659
647
      mi_putint(new_root_buf, 2, nod_flag);
660
648
      if ((new_root = _mi_new(info, keyinfo, DFLT_INIT_HITS)) ==
682
670
      DBUG_PRINT("rtree", ("new root page: %lu  level: %d  nod_flag: %u",
683
671
                           (ulong) new_root, 0, mi_test_if_nod(new_root_buf)));
684
672
 
685
 
      my_afree((uchar*)new_root_buf);
686
673
      break;
687
674
err1:
688
 
      my_afree((uchar*)new_root_buf);
689
675
      DBUG_RETURN(-1); /* purecov: inspected */
690
676
    }
691
677
    default: