Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
6153b007
Commit
6153b007
authored
Sep 24, 2003
by
monty@narttu.mysql.fi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Correct fix for buffer overruns for compressed blobs.
(Bugs #770, #1304 and maybe #1295)
parent
45a41e85
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
4 additions
and
2 deletions
+4
-2
myisam/mi_packrec.c
myisam/mi_packrec.c
+3
-1
myisam/myisamdef.h
myisam/myisamdef.h
+1
-1
No files found.
myisam/mi_packrec.c
View file @
6153b007
...
@@ -743,7 +743,7 @@ static void uf_blob(MI_COLUMNDEF *rec, MI_BIT_BUFF *bit_buff,
...
@@ -743,7 +743,7 @@ static void uf_blob(MI_COLUMNDEF *rec, MI_BIT_BUFF *bit_buff,
{
{
ulong
length
=
get_bits
(
bit_buff
,
rec
->
space_length_bits
);
ulong
length
=
get_bits
(
bit_buff
,
rec
->
space_length_bits
);
uint
pack_length
=
(
uint
)
(
end
-
to
)
-
mi_portable_sizeof_char_ptr
;
uint
pack_length
=
(
uint
)
(
end
-
to
)
-
mi_portable_sizeof_char_ptr
;
if
(
bit_buff
->
blob_pos
+
length
>
bit_buff
->
end
)
if
(
bit_buff
->
blob_pos
+
length
>
bit_buff
->
blob_
end
)
{
{
bit_buff
->
error
=
1
;
bit_buff
->
error
=
1
;
bzero
((
byte
*
)
to
,(
end
-
to
));
bzero
((
byte
*
)
to
,(
end
-
to
));
...
@@ -1067,6 +1067,7 @@ uint _mi_pack_get_block_info(MI_INFO *myisam, MI_BLOCK_INFO *info, File file,
...
@@ -1067,6 +1067,7 @@ uint _mi_pack_get_block_info(MI_INFO *myisam, MI_BLOCK_INFO *info, File file,
&
myisam
->
rec_buff
)))
&
myisam
->
rec_buff
)))
return
BLOCK_FATAL_ERROR
;
/* not enough memory */
return
BLOCK_FATAL_ERROR
;
/* not enough memory */
myisam
->
bit_buff
.
blob_pos
=
(
uchar
*
)
myisam
->
rec_buff
+
info
->
rec_len
;
myisam
->
bit_buff
.
blob_pos
=
(
uchar
*
)
myisam
->
rec_buff
+
info
->
rec_len
;
myisam
->
bit_buff
.
blob_end
=
myisam
->
bit_buff
.
blob_pos
+
info
->
blob_len
;
myisam
->
blob_length
=
info
->
blob_len
;
myisam
->
blob_length
=
info
->
blob_len
;
}
}
info
->
filepos
=
filepos
+
head_length
;
info
->
filepos
=
filepos
+
head_length
;
...
@@ -1243,6 +1244,7 @@ static uchar *_mi_mempack_get_block_info(MI_INFO *myisam,MI_BLOCK_INFO *info,
...
@@ -1243,6 +1244,7 @@ static uchar *_mi_mempack_get_block_info(MI_INFO *myisam,MI_BLOCK_INFO *info,
&
myisam
->
rec_buff
)))
&
myisam
->
rec_buff
)))
return
0
;
/* not enough memory */
return
0
;
/* not enough memory */
myisam
->
bit_buff
.
blob_pos
=
(
uchar
*
)
myisam
->
rec_buff
;
myisam
->
bit_buff
.
blob_pos
=
(
uchar
*
)
myisam
->
rec_buff
;
myisam
->
bit_buff
.
blob_end
=
(
uchar
*
)
myisam
->
rec_buff
+
info
->
blob_len
;
}
}
return
header
;
return
header
;
}
}
...
...
myisam/myisamdef.h
View file @
6153b007
...
@@ -213,7 +213,7 @@ typedef uint mi_bit_type;
...
@@ -213,7 +213,7 @@ typedef uint mi_bit_type;
typedef
struct
st_mi_bit_buff
{
/* Used for packing of record */
typedef
struct
st_mi_bit_buff
{
/* Used for packing of record */
mi_bit_type
current_byte
;
mi_bit_type
current_byte
;
uint
bits
;
uint
bits
;
uchar
*
pos
,
*
end
,
*
blob_pos
;
uchar
*
pos
,
*
end
,
*
blob_pos
,
*
blob_end
;
uint
error
;
uint
error
;
}
MI_BIT_BUFF
;
}
MI_BIT_BUFF
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment