mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-21 06:49:35 +00:00
fs: Use safe math macros to prevent overflows
Replace direct arithmetic operations with macros from include/grub/safemath.h to prevent potential overflow issues when calculating the memory sizes. Signed-off-by: Lidong Chen <lidong.chen@oracle.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
1 parent
fbaddcca54
commit
6608163b08
8 files changed
+104
-19
No files matched your search
@@ -21,6 +21,7 @@
|
||||
#include <grub/fs.h>
|
||||
#include <grub/disk.h>
|
||||
#include <grub/dl.h>
|
||||
#include <grub/safemath.h>
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -68,6 +69,7 @@ handle_symlink (struct grub_archelp_data *data,
|
||||
char *rest;
|
||||
char *linktarget;
|
||||
grub_size_t linktarget_len;
|
||||
grub_size_t sz;
|
||||
|
||||
*restart = 0;
|
||||
|
||||
@@ -98,7 +100,12 @@ handle_symlink (struct grub_archelp_data *data,
|
||||
if (linktarget[0] == '\0')
|
||||
return GRUB_ERR_NONE;
|
||||
linktarget_len = grub_strlen (linktarget);
|
||||
target = grub_malloc (linktarget_len + grub_strlen (*name) + 2);
|
||||
|
||||
if (grub_add (linktarget_len, grub_strlen (*name), &sz) ||
|
||||
grub_add (sz, 2, &sz))
|
||||
return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("link target length overflow"));
|
||||
|
||||
target = grub_malloc (sz);
|
||||
if (!target)
|
||||
return grub_errno;
|
||||
|
||||
|
||||
Reference in new issue
Block a user