mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-21 23:02:40 +00:00
net: 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> Signed-off-by: Alec Brown <alec.r.brown@oracle.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
1 parent
dd6a4c8d10
commit
4beeff8a31
4 files changed
+75
-13
No files matched your search
@@ -22,6 +22,7 @@
|
||||
#include <grub/net.h>
|
||||
#include <grub/time.h>
|
||||
#include <grub/i18n.h>
|
||||
#include <grub/safemath.h>
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -387,6 +388,7 @@ search_net_devices (struct grub_ieee1275_devalias *alias)
|
||||
grub_uint8_t *pprop;
|
||||
char *shortname;
|
||||
char need_suffix = 1;
|
||||
grub_size_t sz;
|
||||
|
||||
if (grub_strcmp (alias->type, "network") != 0)
|
||||
return 0;
|
||||
@@ -444,9 +446,23 @@ search_net_devices (struct grub_ieee1275_devalias *alias)
|
||||
}
|
||||
|
||||
if (need_suffix)
|
||||
ofdata->path = grub_malloc (grub_strlen (alias->path) + sizeof (SUFFIX));
|
||||
{
|
||||
if (grub_add (grub_strlen (alias->path), sizeof (SUFFIX), &sz))
|
||||
{
|
||||
grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow detected while obatining size of ofdata path"));
|
||||
grub_print_error ();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
ofdata->path = grub_malloc (grub_strlen (alias->path) + 1);
|
||||
{
|
||||
if (grub_add (grub_strlen (alias->path), 1, &sz))
|
||||
{
|
||||
grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow detected while obatining size of ofdata path"));
|
||||
grub_print_error ();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if (!ofdata->path)
|
||||
{
|
||||
grub_print_error ();
|
||||
|
||||
Reference in new issue
Block a user