Merge lp:~vkolesnikov/pbxt/pbxt-bug-451101 into lp:pbxt

Proposed by Vladimir Kolesnikov
Status: Merged
Merged at revision: not available
Proposed branch: lp:~vkolesnikov/pbxt/pbxt-bug-451101
Merge into: lp:pbxt
Diff against target: 97 lines
4 files modified
ChangeLog (+6/-0)
src/index_xt.cc (+11/-8)
src/myxt_xt.cc (+12/-3)
src/xactlog_xt.cc (+3/-0)
To merge this branch: bzr merge lp:~vkolesnikov/pbxt/pbxt-bug-451101
Reviewer Review Type Date Requested Status
PBXT Core Pending
Review via email: mp+13502@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'ChangeLog'
--- ChangeLog 2009-10-06 08:21:17 +0000
+++ ChangeLog 2009-10-16 20:20:23 +0000
@@ -3,6 +3,12 @@
33
4------- 1.0.09e RC3 - Not released yet4------- 1.0.09e RC3 - Not released yet
55
6RN281: Fixed bug #451101: jump or move depends on uninitialised value in myxt_get_key_length
7
8RN280: Fixed bug #451080: Uninitialised memory write in XTDatabaseLog::xlog_append
9
10RN279: Fixed bug #451085: jump or move depends on uninitialised value in my_type_to_string
11
6RN278: Fixed bug #441000: xtstat crashes with segmentation fault on startup if max_pbxt_threads exceeded.12RN278: Fixed bug #441000: xtstat crashes with segmentation fault on startup if max_pbxt_threads exceeded.
713
8------- 1.0.09d RC3 - 2009-09-3014------- 1.0.09d RC3 - 2009-09-30
915
=== modified file 'src/index_xt.cc'
--- src/index_xt.cc 2009-09-08 10:52:24 +0000
+++ src/index_xt.cc 2009-10-16 20:20:23 +0000
@@ -828,15 +828,18 @@
828 u_int ilen;828 u_int ilen;
829829
830 result->sr_item.i_item_offset += result->sr_item.i_item_size + result->sr_item.i_node_ref_size;830 result->sr_item.i_item_offset += result->sr_item.i_item_size + result->sr_item.i_node_ref_size;
831 bitem = branch->tb_data + result->sr_item.i_item_offset;831 if (result->sr_item.i_item_offset < result->sr_item.i_total_size) {
832 if (ind->mi_fix_key)832 bitem = branch->tb_data + result->sr_item.i_item_offset;
833 ilen = result->sr_item.i_item_size;833
834 else {834 if (ind->mi_fix_key)
835 ilen = myxt_get_key_length(ind, bitem) + XT_RECORD_REF_SIZE;835 ilen = result->sr_item.i_item_size;
836 result->sr_item.i_item_size = ilen;836 else {
837 ilen = myxt_get_key_length(ind, bitem) + XT_RECORD_REF_SIZE;
838 result->sr_item.i_item_size = ilen;
839 }
840 xt_get_res_record_ref(bitem + ilen - XT_RECORD_REF_SIZE, result); /* (Only valid if i_item_offset < i_total_size) */
841 result->sr_branch = IDX_GET_NODE_REF(tab, bitem, result->sr_item.i_node_ref_size);
837 }842 }
838 xt_get_res_record_ref(bitem + ilen - XT_RECORD_REF_SIZE, result); /* (Only valid if i_item_offset < i_total_size) */
839 result->sr_branch = IDX_GET_NODE_REF(tab, bitem, result->sr_item.i_node_ref_size);
840}843}
841844
842xtPublic void xt_prev_branch_item_fix(XTTableHPtr XT_UNUSED(tab), XTIndexPtr XT_UNUSED(ind), XTIdxBranchDPtr branch, register XTIdxResultRec *result)845xtPublic void xt_prev_branch_item_fix(XTTableHPtr XT_UNUSED(tab), XTIndexPtr XT_UNUSED(ind), XTIdxBranchDPtr branch, register XTIdxResultRec *result)
843846
=== modified file 'src/myxt_xt.cc'
--- src/myxt_xt.cc 2009-09-23 07:53:51 +0000
+++ src/myxt_xt.cc 2009-10-16 20:20:23 +0000
@@ -2811,8 +2811,10 @@
28112811
2812static char *my_type_to_string(XTThreadPtr self, Field *field, TABLE *XT_UNUSED(my_tab))2812static char *my_type_to_string(XTThreadPtr self, Field *field, TABLE *XT_UNUSED(my_tab))
2813{2813{
2814 char buffer[MAX_FIELD_WIDTH + 400], *ptr;2814 char buffer[MAX_FIELD_WIDTH + 400];
2815 const char *ptr;
2815 String type((char *) buffer, sizeof(buffer), system_charset_info);2816 String type((char *) buffer, sizeof(buffer), system_charset_info);
2817 xtWord4 len;
28162818
2817 /* GOTCHA:2819 /* GOTCHA:
2818 * - Above sets the string length to the same as the buffer,2820 * - Above sets the string length to the same as the buffer,
@@ -2823,10 +2825,17 @@
2823 */2825 */
2824 type.length(0);2826 type.length(0);
2825 field->sql_type(type);2827 field->sql_type(type);
2826 ptr = type.c_ptr();2828 ptr = type.ptr();
2829 len = type.length();
2830
2831 if (len >= sizeof(buffer))
2832 len = sizeof(buffer)-1;
2833
2827 if (ptr != buffer)2834 if (ptr != buffer)
2828 xt_strcpy(sizeof(buffer), buffer, ptr); 2835 xt_strcpy(sizeof(buffer), buffer, ptr);
28292836
2837 buffer[len] = 0;
2838
2830 if (field->has_charset()) {2839 if (field->has_charset()) {
2831 /* Always include the charset so that we can compare types2840 /* Always include the charset so that we can compare types
2832 * for FK/PK releations.2841 * for FK/PK releations.
28332842
=== modified file 'src/xactlog_xt.cc'
--- src/xactlog_xt.cc 2009-09-08 10:52:24 +0000
+++ src/xactlog_xt.cc 2009-10-16 20:20:23 +0000
@@ -1108,6 +1108,9 @@
1108 if ((part_size = xl_write_buf_pos % 512)) {1108 if ((part_size = xl_write_buf_pos % 512)) {
1109 part_size = 512 - part_size;1109 part_size = 512 - part_size;
1110 xl_write_buffer[xl_write_buf_pos] = XT_LOG_ENT_END_OF_LOG;1110 xl_write_buffer[xl_write_buf_pos] = XT_LOG_ENT_END_OF_LOG;
1111#ifdef HAVE_valgrind
1112 memset(xl_write_buffer + xl_write_buf_pos + 1, 0x66, part_size);
1113#endif
1111 if (!xt_pwrite_file(xl_log_file, xl_write_log_offset, xl_write_buf_pos+part_size, xl_write_buffer, &thread->st_statistics.st_xlog, thread))1114 if (!xt_pwrite_file(xl_log_file, xl_write_log_offset, xl_write_buf_pos+part_size, xl_write_buffer, &thread->st_statistics.st_xlog, thread))
1112 goto write_failed; 1115 goto write_failed;
1113 }1116 }

Subscribers

People subscribed via source and target branches