Eliminate grub_min/grub_max prone to overflow usage.
* grub-core/bus/usb/usbhub.c (grub_usb_add_hub): Eliminate grub_min. (poll_nonroot_hub): Likewise. * grub-core/fs/affs.c (grub_affs_iterate_dir): Likewise. (grub_affs_label): Likewise. * grub-core/fs/btrfs.c (grub_btrfs_lzo_decompress): Likewise. * grub-core/fs/hfs.c (grub_hfs_dir): Likewise. (grub_hfs_label): Likewise. * grub-core/fs/hfsplus.c (grub_hfsplus_cmp_catkey): Likewise. * grub-core/fs/zfs/zfs.c (MIN): Remove. (zap_leaf_array_equal): Use grub_size. Remove MIN. (zap_leaf_array_get): Likewise. (dnode_get_path): Likewise. * grub-core/io/lzopio.c (grub_lzopio_read): Eliminate grub_min. * grub-core/io/xzio.c (grub_xzio_read): Likewise. * grub-core/script/execute.c (grub_script_break): Likewise. * grub-core/script/lexer.c (grub_script_lexer_record): Eliminate grub_max. * grub-core/script/yylex.l (grub_lexer_yyrealloc): Likewise. * include/grub/misc.h (grub_min): Removed. (grub_max): Likewise.
This commit is contained in:
parent
80662dbc5d
commit
9c2710789f
13 changed files with 97 additions and 57 deletions
|
@ -82,7 +82,9 @@ grub_script_break (grub_command_t cmd, int argc, char *argv[])
|
|||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "bad break");
|
||||
|
||||
is_continue = grub_strcmp (cmd->name, "break") ? 1 : 0;
|
||||
active_breaks = grub_min (active_loops, count);
|
||||
active_breaks = count;
|
||||
if (active_breaks > active_loops)
|
||||
active_breaks = active_loops;
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
|
|
|
@ -107,7 +107,9 @@ grub_script_lexer_record (struct grub_parser_param *parser, char *str)
|
|||
if (lexer->recordpos + len + 1 > lexer->recordlen)
|
||||
{
|
||||
old = lexer->recording;
|
||||
lexer->recordlen = grub_max (len, lexer->recordlen) * 2;
|
||||
if (lexer->recordlen < len)
|
||||
lexer->recordlen = len;
|
||||
lexer->recordlen *= 2;
|
||||
lexer->recording = grub_realloc (lexer->recording, lexer->recordlen);
|
||||
if (!lexer->recording)
|
||||
{
|
||||
|
|
|
@ -316,14 +316,16 @@ grub_lexer_yyrealloc (void *ptr, yy_size_t size,
|
|||
|
||||
static void copy_string (struct grub_parser_param *parser, const char *str, unsigned hint)
|
||||
{
|
||||
int size;
|
||||
grub_size_t size;
|
||||
char *ptr;
|
||||
unsigned len;
|
||||
|
||||
len = hint ? hint : grub_strlen (str);
|
||||
if (parser->lexerstate->used + len >= parser->lexerstate->size)
|
||||
{
|
||||
size = grub_max (len, parser->lexerstate->size) * 2;
|
||||
size = len * 2;
|
||||
if (size < parser->lexerstate->size * 2)
|
||||
size = parser->lexerstate->size * 2;
|
||||
ptr = grub_realloc (parser->lexerstate->text, size);
|
||||
if (!ptr)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue