xref: /OK3568_Linux_fs/buildroot/boot/grub2/0005-calloc-Use-calloc-at-most-places.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunFrom 8185711241d73931269f402bb6799f7e2c58f04b Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Peter Jones <pjones@redhat.com>
3*4882a593SmuzhiyunDate: Mon, 15 Jun 2020 12:26:01 -0400
4*4882a593SmuzhiyunSubject: [PATCH] calloc: Use calloc() at most places
5*4882a593SmuzhiyunMIME-Version: 1.0
6*4882a593SmuzhiyunContent-Type: text/plain; charset=UTF-8
7*4882a593SmuzhiyunContent-Transfer-Encoding: 8bit
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunThis modifies most of the places we do some form of:
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun  X = malloc(Y * Z);
12*4882a593Smuzhiyun
13*4882a593Smuzhiyunto use calloc(Y, Z) instead.
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunAmong other issues, this fixes:
16*4882a593Smuzhiyun  - allocation of integer overflow in grub_png_decode_image_header()
17*4882a593Smuzhiyun    reported by Chris Coulson,
18*4882a593Smuzhiyun  - allocation of integer overflow in luks_recover_key()
19*4882a593Smuzhiyun    reported by Chris Coulson,
20*4882a593Smuzhiyun  - allocation of integer overflow in grub_lvm_detect()
21*4882a593Smuzhiyun    reported by Chris Coulson.
22*4882a593Smuzhiyun
23*4882a593SmuzhiyunFixes: CVE-2020-14308
24*4882a593Smuzhiyun
25*4882a593SmuzhiyunSigned-off-by: Peter Jones <pjones@redhat.com>
26*4882a593SmuzhiyunReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
27*4882a593SmuzhiyunSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>
28*4882a593Smuzhiyun---
29*4882a593Smuzhiyun grub-core/bus/usb/usbhub.c                |  8 ++++----
30*4882a593Smuzhiyun grub-core/commands/efi/lsefisystab.c      |  3 ++-
31*4882a593Smuzhiyun grub-core/commands/legacycfg.c            |  6 +++---
32*4882a593Smuzhiyun grub-core/commands/menuentry.c            |  2 +-
33*4882a593Smuzhiyun grub-core/commands/nativedisk.c           |  2 +-
34*4882a593Smuzhiyun grub-core/commands/parttool.c             | 12 +++++++++---
35*4882a593Smuzhiyun grub-core/commands/regexp.c               |  2 +-
36*4882a593Smuzhiyun grub-core/commands/search_wrap.c          |  2 +-
37*4882a593Smuzhiyun grub-core/disk/diskfilter.c               |  4 ++--
38*4882a593Smuzhiyun grub-core/disk/ieee1275/ofdisk.c          |  2 +-
39*4882a593Smuzhiyun grub-core/disk/ldm.c                      | 14 +++++++-------
40*4882a593Smuzhiyun grub-core/disk/luks.c                     |  2 +-
41*4882a593Smuzhiyun grub-core/disk/lvm.c                      |  8 ++++----
42*4882a593Smuzhiyun grub-core/disk/xen/xendisk.c              |  2 +-
43*4882a593Smuzhiyun grub-core/efiemu/loadcore.c               |  2 +-
44*4882a593Smuzhiyun grub-core/efiemu/mm.c                     |  6 +++---
45*4882a593Smuzhiyun grub-core/font/font.c                     |  3 +--
46*4882a593Smuzhiyun grub-core/fs/affs.c                       |  6 +++---
47*4882a593Smuzhiyun grub-core/fs/btrfs.c                      |  6 +++---
48*4882a593Smuzhiyun grub-core/fs/hfs.c                        |  2 +-
49*4882a593Smuzhiyun grub-core/fs/hfsplus.c                    |  6 +++---
50*4882a593Smuzhiyun grub-core/fs/iso9660.c                    |  2 +-
51*4882a593Smuzhiyun grub-core/fs/ntfs.c                       |  4 ++--
52*4882a593Smuzhiyun grub-core/fs/sfs.c                        |  2 +-
53*4882a593Smuzhiyun grub-core/fs/tar.c                        |  2 +-
54*4882a593Smuzhiyun grub-core/fs/udf.c                        |  4 ++--
55*4882a593Smuzhiyun grub-core/fs/zfs/zfs.c                    |  4 ++--
56*4882a593Smuzhiyun grub-core/gfxmenu/gui_string_util.c       |  2 +-
57*4882a593Smuzhiyun grub-core/gfxmenu/widget-box.c            |  4 ++--
58*4882a593Smuzhiyun grub-core/io/gzio.c                       |  2 +-
59*4882a593Smuzhiyun grub-core/kern/efi/efi.c                  |  6 +++---
60*4882a593Smuzhiyun grub-core/kern/emu/hostdisk.c             |  2 +-
61*4882a593Smuzhiyun grub-core/kern/fs.c                       |  2 +-
62*4882a593Smuzhiyun grub-core/kern/misc.c                     |  2 +-
63*4882a593Smuzhiyun grub-core/kern/parser.c                   |  2 +-
64*4882a593Smuzhiyun grub-core/kern/uboot/uboot.c              |  2 +-
65*4882a593Smuzhiyun grub-core/lib/libgcrypt/cipher/ac.c       |  8 ++++----
66*4882a593Smuzhiyun grub-core/lib/libgcrypt/cipher/primegen.c |  4 ++--
67*4882a593Smuzhiyun grub-core/lib/libgcrypt/cipher/pubkey.c   |  4 ++--
68*4882a593Smuzhiyun grub-core/lib/priority_queue.c            |  2 +-
69*4882a593Smuzhiyun grub-core/lib/reed_solomon.c              |  7 +++----
70*4882a593Smuzhiyun grub-core/lib/relocator.c                 | 10 +++++-----
71*4882a593Smuzhiyun grub-core/lib/zstd/fse_decompress.c       |  2 +-
72*4882a593Smuzhiyun grub-core/loader/arm/linux.c              |  2 +-
73*4882a593Smuzhiyun grub-core/loader/efi/chainloader.c        |  2 +-
74*4882a593Smuzhiyun grub-core/loader/i386/bsdXX.c             |  2 +-
75*4882a593Smuzhiyun grub-core/loader/i386/xnu.c               |  4 ++--
76*4882a593Smuzhiyun grub-core/loader/macho.c                  |  2 +-
77*4882a593Smuzhiyun grub-core/loader/multiboot_elfxx.c        |  2 +-
78*4882a593Smuzhiyun grub-core/loader/xnu.c                    |  2 +-
79*4882a593Smuzhiyun grub-core/mmap/mmap.c                     |  4 ++--
80*4882a593Smuzhiyun grub-core/net/bootp.c                     |  2 +-
81*4882a593Smuzhiyun grub-core/net/dns.c                       | 10 +++++-----
82*4882a593Smuzhiyun grub-core/net/net.c                       |  4 ++--
83*4882a593Smuzhiyun grub-core/normal/charset.c                | 10 +++++-----
84*4882a593Smuzhiyun grub-core/normal/cmdline.c                | 14 +++++++-------
85*4882a593Smuzhiyun grub-core/normal/menu_entry.c             | 14 +++++++-------
86*4882a593Smuzhiyun grub-core/normal/menu_text.c              |  4 ++--
87*4882a593Smuzhiyun grub-core/normal/term.c                   |  4 ++--
88*4882a593Smuzhiyun grub-core/osdep/linux/getroot.c           |  6 +++---
89*4882a593Smuzhiyun grub-core/osdep/unix/config.c             |  2 +-
90*4882a593Smuzhiyun grub-core/osdep/windows/getroot.c         |  2 +-
91*4882a593Smuzhiyun grub-core/osdep/windows/hostdisk.c        |  4 ++--
92*4882a593Smuzhiyun grub-core/osdep/windows/init.c            |  2 +-
93*4882a593Smuzhiyun grub-core/osdep/windows/platform.c        |  4 ++--
94*4882a593Smuzhiyun grub-core/osdep/windows/relpath.c         |  2 +-
95*4882a593Smuzhiyun grub-core/partmap/gpt.c                   |  2 +-
96*4882a593Smuzhiyun grub-core/partmap/msdos.c                 |  2 +-
97*4882a593Smuzhiyun grub-core/script/execute.c                |  2 +-
98*4882a593Smuzhiyun grub-core/tests/fake_input.c              |  2 +-
99*4882a593Smuzhiyun grub-core/tests/video_checksum.c          |  6 +++---
100*4882a593Smuzhiyun grub-core/video/capture.c                 |  2 +-
101*4882a593Smuzhiyun grub-core/video/emu/sdl.c                 |  2 +-
102*4882a593Smuzhiyun grub-core/video/i386/pc/vga.c             |  2 +-
103*4882a593Smuzhiyun grub-core/video/readers/png.c             |  2 +-
104*4882a593Smuzhiyun include/grub/unicode.h                    |  4 ++--
105*4882a593Smuzhiyun util/getroot.c                            |  2 +-
106*4882a593Smuzhiyun util/grub-file.c                          |  2 +-
107*4882a593Smuzhiyun util/grub-fstest.c                        |  4 ++--
108*4882a593Smuzhiyun util/grub-install-common.c                |  2 +-
109*4882a593Smuzhiyun util/grub-install.c                       |  4 ++--
110*4882a593Smuzhiyun util/grub-mkimagexx.c                     |  6 ++----
111*4882a593Smuzhiyun util/grub-mkrescue.c                      |  4 ++--
112*4882a593Smuzhiyun util/grub-mkstandalone.c                  |  2 +-
113*4882a593Smuzhiyun util/grub-pe2elf.c                        | 12 +++++-------
114*4882a593Smuzhiyun util/grub-probe.c                         |  4 ++--
115*4882a593Smuzhiyun 86 files changed, 176 insertions(+), 175 deletions(-)
116*4882a593Smuzhiyun
117*4882a593Smuzhiyundiff --git a/grub-core/bus/usb/usbhub.c b/grub-core/bus/usb/usbhub.c
118*4882a593Smuzhiyunindex 34a7ff1b5..a06cce302 100644
119*4882a593Smuzhiyun--- a/grub-core/bus/usb/usbhub.c
120*4882a593Smuzhiyun+++ b/grub-core/bus/usb/usbhub.c
121*4882a593Smuzhiyun@@ -149,8 +149,8 @@ grub_usb_add_hub (grub_usb_device_t dev)
122*4882a593Smuzhiyun   grub_usb_set_configuration (dev, 1);
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun   dev->nports = hubdesc.portcnt;
125*4882a593Smuzhiyun-  dev->children = grub_zalloc (hubdesc.portcnt * sizeof (dev->children[0]));
126*4882a593Smuzhiyun-  dev->ports = grub_zalloc (dev->nports * sizeof (dev->ports[0]));
127*4882a593Smuzhiyun+  dev->children = grub_calloc (hubdesc.portcnt, sizeof (dev->children[0]));
128*4882a593Smuzhiyun+  dev->ports = grub_calloc (dev->nports, sizeof (dev->ports[0]));
129*4882a593Smuzhiyun   if (!dev->children || !dev->ports)
130*4882a593Smuzhiyun     {
131*4882a593Smuzhiyun       grub_free (dev->children);
132*4882a593Smuzhiyun@@ -268,8 +268,8 @@ grub_usb_controller_dev_register_iter (grub_usb_controller_t controller, void *d
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun   /* Query the number of ports the root Hub has.  */
135*4882a593Smuzhiyun   hub->nports = controller->dev->hubports (controller);
136*4882a593Smuzhiyun-  hub->devices = grub_zalloc (sizeof (hub->devices[0]) * hub->nports);
137*4882a593Smuzhiyun-  hub->ports = grub_zalloc (sizeof (hub->ports[0]) * hub->nports);
138*4882a593Smuzhiyun+  hub->devices = grub_calloc (hub->nports, sizeof (hub->devices[0]));
139*4882a593Smuzhiyun+  hub->ports = grub_calloc (hub->nports, sizeof (hub->ports[0]));
140*4882a593Smuzhiyun   if (!hub->devices || !hub->ports)
141*4882a593Smuzhiyun     {
142*4882a593Smuzhiyun       grub_free (hub->devices);
143*4882a593Smuzhiyundiff --git a/grub-core/commands/efi/lsefisystab.c b/grub-core/commands/efi/lsefisystab.c
144*4882a593Smuzhiyunindex df1030221..cd81507f5 100644
145*4882a593Smuzhiyun--- a/grub-core/commands/efi/lsefisystab.c
146*4882a593Smuzhiyun+++ b/grub-core/commands/efi/lsefisystab.c
147*4882a593Smuzhiyun@@ -71,7 +71,8 @@ grub_cmd_lsefisystab (struct grub_command *cmd __attribute__ ((unused)),
148*4882a593Smuzhiyun     grub_printf ("Vendor: ");
149*4882a593Smuzhiyun
150*4882a593Smuzhiyun     for (vendor_utf16 = st->firmware_vendor; *vendor_utf16; vendor_utf16++);
151*4882a593Smuzhiyun-    vendor = grub_malloc (4 * (vendor_utf16 - st->firmware_vendor) + 1);
152*4882a593Smuzhiyun+    /* Allocate extra 3 bytes to simplify math. */
153*4882a593Smuzhiyun+    vendor = grub_calloc (4, vendor_utf16 - st->firmware_vendor + 1);
154*4882a593Smuzhiyun     if (!vendor)
155*4882a593Smuzhiyun       return grub_errno;
156*4882a593Smuzhiyun     *grub_utf16_to_utf8 ((grub_uint8_t *) vendor, st->firmware_vendor,
157*4882a593Smuzhiyundiff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c
158*4882a593Smuzhiyunindex db7a8f002..5e3ec0d5e 100644
159*4882a593Smuzhiyun--- a/grub-core/commands/legacycfg.c
160*4882a593Smuzhiyun+++ b/grub-core/commands/legacycfg.c
161*4882a593Smuzhiyun@@ -314,7 +314,7 @@ grub_cmd_legacy_kernel (struct grub_command *mycmd __attribute__ ((unused)),
162*4882a593Smuzhiyun   if (argc < 2)
163*4882a593Smuzhiyun     return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun-  cutargs = grub_malloc (sizeof (cutargs[0]) * (argc - 1));
166*4882a593Smuzhiyun+  cutargs = grub_calloc (argc - 1, sizeof (cutargs[0]));
167*4882a593Smuzhiyun   if (!cutargs)
168*4882a593Smuzhiyun     return grub_errno;
169*4882a593Smuzhiyun   cutargc = argc - 1;
170*4882a593Smuzhiyun@@ -436,7 +436,7 @@ grub_cmd_legacy_kernel (struct grub_command *mycmd __attribute__ ((unused)),
171*4882a593Smuzhiyun 	    {
172*4882a593Smuzhiyun 	      char rbuf[3] = "-r";
173*4882a593Smuzhiyun 	      bsdargc = cutargc + 2;
174*4882a593Smuzhiyun-	      bsdargs = grub_malloc (sizeof (bsdargs[0]) * bsdargc);
175*4882a593Smuzhiyun+	      bsdargs = grub_calloc (bsdargc, sizeof (bsdargs[0]));
176*4882a593Smuzhiyun 	      if (!bsdargs)
177*4882a593Smuzhiyun 		{
178*4882a593Smuzhiyun 		  err = grub_errno;
179*4882a593Smuzhiyun@@ -559,7 +559,7 @@ grub_cmd_legacy_initrdnounzip (struct grub_command *mycmd __attribute__ ((unused
180*4882a593Smuzhiyun 	return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("can't find command `%s'"),
181*4882a593Smuzhiyun 			   "module");
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun-      newargs = grub_malloc ((argc + 1) * sizeof (newargs[0]));
184*4882a593Smuzhiyun+      newargs = grub_calloc (argc + 1, sizeof (newargs[0]));
185*4882a593Smuzhiyun       if (!newargs)
186*4882a593Smuzhiyun 	return grub_errno;
187*4882a593Smuzhiyun       grub_memcpy (newargs + 1, args, argc * sizeof (newargs[0]));
188*4882a593Smuzhiyundiff --git a/grub-core/commands/menuentry.c b/grub-core/commands/menuentry.c
189*4882a593Smuzhiyunindex 2c5363da7..9164df744 100644
190*4882a593Smuzhiyun--- a/grub-core/commands/menuentry.c
191*4882a593Smuzhiyun+++ b/grub-core/commands/menuentry.c
192*4882a593Smuzhiyun@@ -154,7 +154,7 @@ grub_normal_add_menu_entry (int argc, const char **args,
193*4882a593Smuzhiyun     goto fail;
194*4882a593Smuzhiyun
195*4882a593Smuzhiyun   /* Save argc, args to pass as parameters to block arg later. */
196*4882a593Smuzhiyun-  menu_args = grub_malloc (sizeof (char*) * (argc + 1));
197*4882a593Smuzhiyun+  menu_args = grub_calloc (argc + 1, sizeof (char *));
198*4882a593Smuzhiyun   if (! menu_args)
199*4882a593Smuzhiyun     goto fail;
200*4882a593Smuzhiyun
201*4882a593Smuzhiyundiff --git a/grub-core/commands/nativedisk.c b/grub-core/commands/nativedisk.c
202*4882a593Smuzhiyunindex 699447d11..7c8f97f6a 100644
203*4882a593Smuzhiyun--- a/grub-core/commands/nativedisk.c
204*4882a593Smuzhiyun+++ b/grub-core/commands/nativedisk.c
205*4882a593Smuzhiyun@@ -195,7 +195,7 @@ grub_cmd_nativedisk (grub_command_t cmd __attribute__ ((unused)),
206*4882a593Smuzhiyun   else
207*4882a593Smuzhiyun     path_prefix = prefix;
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun-  mods = grub_malloc (argc * sizeof (mods[0]));
210*4882a593Smuzhiyun+  mods = grub_calloc (argc, sizeof (mods[0]));
211*4882a593Smuzhiyun   if (!mods)
212*4882a593Smuzhiyun     return grub_errno;
213*4882a593Smuzhiyun
214*4882a593Smuzhiyundiff --git a/grub-core/commands/parttool.c b/grub-core/commands/parttool.c
215*4882a593Smuzhiyunindex 22b46b187..051e31320 100644
216*4882a593Smuzhiyun--- a/grub-core/commands/parttool.c
217*4882a593Smuzhiyun+++ b/grub-core/commands/parttool.c
218*4882a593Smuzhiyun@@ -59,7 +59,13 @@ grub_parttool_register(const char *part_name,
219*4882a593Smuzhiyun   for (nargs = 0; args[nargs].name != 0; nargs++);
220*4882a593Smuzhiyun   cur->nargs = nargs;
221*4882a593Smuzhiyun   cur->args = (struct grub_parttool_argdesc *)
222*4882a593Smuzhiyun-    grub_malloc ((nargs + 1) * sizeof (struct grub_parttool_argdesc));
223*4882a593Smuzhiyun+    grub_calloc (nargs + 1, sizeof (struct grub_parttool_argdesc));
224*4882a593Smuzhiyun+  if (!cur->args)
225*4882a593Smuzhiyun+    {
226*4882a593Smuzhiyun+      grub_free (cur);
227*4882a593Smuzhiyun+      curhandle--;
228*4882a593Smuzhiyun+      return -1;
229*4882a593Smuzhiyun+    }
230*4882a593Smuzhiyun   grub_memcpy (cur->args, args,
231*4882a593Smuzhiyun 	       (nargs + 1) * sizeof (struct grub_parttool_argdesc));
232*4882a593Smuzhiyun
233*4882a593Smuzhiyun@@ -257,7 +263,7 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),
234*4882a593Smuzhiyun 	return err;
235*4882a593Smuzhiyun       }
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun-  parsed = (int *) grub_zalloc (argc * sizeof (int));
238*4882a593Smuzhiyun+  parsed = (int *) grub_calloc (argc, sizeof (int));
239*4882a593Smuzhiyun
240*4882a593Smuzhiyun   for (i = 1; i < argc; i++)
241*4882a593Smuzhiyun     if (! parsed[i])
242*4882a593Smuzhiyun@@ -290,7 +296,7 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),
243*4882a593Smuzhiyun 	  }
244*4882a593Smuzhiyun 	ptool = cur;
245*4882a593Smuzhiyun 	pargs = (struct grub_parttool_args *)
246*4882a593Smuzhiyun-	  grub_zalloc (ptool->nargs * sizeof (struct grub_parttool_args));
247*4882a593Smuzhiyun+	  grub_calloc (ptool->nargs, sizeof (struct grub_parttool_args));
248*4882a593Smuzhiyun 	for (j = i; j < argc; j++)
249*4882a593Smuzhiyun 	  if (! parsed[j])
250*4882a593Smuzhiyun 	    {
251*4882a593Smuzhiyundiff --git a/grub-core/commands/regexp.c b/grub-core/commands/regexp.c
252*4882a593Smuzhiyunindex f00b184c8..4019164f3 100644
253*4882a593Smuzhiyun--- a/grub-core/commands/regexp.c
254*4882a593Smuzhiyun+++ b/grub-core/commands/regexp.c
255*4882a593Smuzhiyun@@ -116,7 +116,7 @@ grub_cmd_regexp (grub_extcmd_context_t ctxt, int argc, char **args)
256*4882a593Smuzhiyun   if (ret)
257*4882a593Smuzhiyun     goto fail;
258*4882a593Smuzhiyun
259*4882a593Smuzhiyun-  matches = grub_zalloc (sizeof (*matches) * (regex.re_nsub + 1));
260*4882a593Smuzhiyun+  matches = grub_calloc (regex.re_nsub + 1, sizeof (*matches));
261*4882a593Smuzhiyun   if (! matches)
262*4882a593Smuzhiyun     goto fail;
263*4882a593Smuzhiyun
264*4882a593Smuzhiyundiff --git a/grub-core/commands/search_wrap.c b/grub-core/commands/search_wrap.c
265*4882a593Smuzhiyunindex d7fd26b94..47fc8eb99 100644
266*4882a593Smuzhiyun--- a/grub-core/commands/search_wrap.c
267*4882a593Smuzhiyun+++ b/grub-core/commands/search_wrap.c
268*4882a593Smuzhiyun@@ -122,7 +122,7 @@ grub_cmd_search (grub_extcmd_context_t ctxt, int argc, char **args)
269*4882a593Smuzhiyun     for (i = 0; state[SEARCH_HINT_BAREMETAL].args[i]; i++)
270*4882a593Smuzhiyun       nhints++;
271*4882a593Smuzhiyun
272*4882a593Smuzhiyun-  hints = grub_malloc (sizeof (hints[0]) * nhints);
273*4882a593Smuzhiyun+  hints = grub_calloc (nhints, sizeof (hints[0]));
274*4882a593Smuzhiyun   if (!hints)
275*4882a593Smuzhiyun     return grub_errno;
276*4882a593Smuzhiyun   j = 0;
277*4882a593Smuzhiyundiff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c
278*4882a593Smuzhiyunindex c3b578acf..68ca9e0be 100644
279*4882a593Smuzhiyun--- a/grub-core/disk/diskfilter.c
280*4882a593Smuzhiyun+++ b/grub-core/disk/diskfilter.c
281*4882a593Smuzhiyun@@ -1134,7 +1134,7 @@ grub_diskfilter_make_raid (grub_size_t uuidlen, char *uuid, int nmemb,
282*4882a593Smuzhiyun   array->lvs->segments->node_count = nmemb;
283*4882a593Smuzhiyun   array->lvs->segments->raid_member_size = disk_size;
284*4882a593Smuzhiyun   array->lvs->segments->nodes
285*4882a593Smuzhiyun-    = grub_zalloc (nmemb * sizeof (array->lvs->segments->nodes[0]));
286*4882a593Smuzhiyun+    = grub_calloc (nmemb, sizeof (array->lvs->segments->nodes[0]));
287*4882a593Smuzhiyun   array->lvs->segments->stripe_size = stripe_size;
288*4882a593Smuzhiyun   for (i = 0; i < nmemb; i++)
289*4882a593Smuzhiyun     {
290*4882a593Smuzhiyun@@ -1226,7 +1226,7 @@ insert_array (grub_disk_t disk, const struct grub_diskfilter_pv_id *id,
291*4882a593Smuzhiyun 	  grub_partition_t p;
292*4882a593Smuzhiyun 	  for (p = disk->partition; p; p = p->parent)
293*4882a593Smuzhiyun 	    s++;
294*4882a593Smuzhiyun-	  pv->partmaps = xmalloc (s * sizeof (pv->partmaps[0]));
295*4882a593Smuzhiyun+	  pv->partmaps = xcalloc (s, sizeof (pv->partmaps[0]));
296*4882a593Smuzhiyun 	  s = 0;
297*4882a593Smuzhiyun 	  for (p = disk->partition; p; p = p->parent)
298*4882a593Smuzhiyun 	    pv->partmaps[s++] = xstrdup (p->partmap->name);
299*4882a593Smuzhiyundiff --git a/grub-core/disk/ieee1275/ofdisk.c b/grub-core/disk/ieee1275/ofdisk.c
300*4882a593Smuzhiyunindex f73257e66..03674cb47 100644
301*4882a593Smuzhiyun--- a/grub-core/disk/ieee1275/ofdisk.c
302*4882a593Smuzhiyun+++ b/grub-core/disk/ieee1275/ofdisk.c
303*4882a593Smuzhiyun@@ -297,7 +297,7 @@ dev_iterate (const struct grub_ieee1275_devalias *alias)
304*4882a593Smuzhiyun       /* Power machines documentation specify 672 as maximum SAS disks in
305*4882a593Smuzhiyun          one system. Using a slightly larger value to be safe. */
306*4882a593Smuzhiyun       table_size = 768;
307*4882a593Smuzhiyun-      table = grub_malloc (table_size * sizeof (grub_uint64_t));
308*4882a593Smuzhiyun+      table = grub_calloc (table_size, sizeof (grub_uint64_t));
309*4882a593Smuzhiyun
310*4882a593Smuzhiyun       if (!table)
311*4882a593Smuzhiyun         {
312*4882a593Smuzhiyundiff --git a/grub-core/disk/ldm.c b/grub-core/disk/ldm.c
313*4882a593Smuzhiyunindex 2a22d2d6c..e6323701a 100644
314*4882a593Smuzhiyun--- a/grub-core/disk/ldm.c
315*4882a593Smuzhiyun+++ b/grub-core/disk/ldm.c
316*4882a593Smuzhiyun@@ -323,8 +323,8 @@ make_vg (grub_disk_t disk,
317*4882a593Smuzhiyun 	  lv->segments->type = GRUB_DISKFILTER_MIRROR;
318*4882a593Smuzhiyun 	  lv->segments->node_count = 0;
319*4882a593Smuzhiyun 	  lv->segments->node_alloc = 8;
320*4882a593Smuzhiyun-	  lv->segments->nodes = grub_zalloc (sizeof (*lv->segments->nodes)
321*4882a593Smuzhiyun-					     * lv->segments->node_alloc);
322*4882a593Smuzhiyun+	  lv->segments->nodes = grub_calloc (lv->segments->node_alloc,
323*4882a593Smuzhiyun+					     sizeof (*lv->segments->nodes));
324*4882a593Smuzhiyun 	  if (!lv->segments->nodes)
325*4882a593Smuzhiyun 	    goto fail2;
326*4882a593Smuzhiyun 	  ptr = vblk[i].dynamic;
327*4882a593Smuzhiyun@@ -543,8 +543,8 @@ make_vg (grub_disk_t disk,
328*4882a593Smuzhiyun 	    {
329*4882a593Smuzhiyun 	      comp->segment_alloc = 8;
330*4882a593Smuzhiyun 	      comp->segment_count = 0;
331*4882a593Smuzhiyun-	      comp->segments = grub_malloc (sizeof (*comp->segments)
332*4882a593Smuzhiyun-					    * comp->segment_alloc);
333*4882a593Smuzhiyun+	      comp->segments = grub_calloc (comp->segment_alloc,
334*4882a593Smuzhiyun+					    sizeof (*comp->segments));
335*4882a593Smuzhiyun 	      if (!comp->segments)
336*4882a593Smuzhiyun 		goto fail2;
337*4882a593Smuzhiyun 	    }
338*4882a593Smuzhiyun@@ -590,8 +590,8 @@ make_vg (grub_disk_t disk,
339*4882a593Smuzhiyun 		}
340*4882a593Smuzhiyun 	      comp->segments->node_count = read_int (ptr + 1, *ptr);
341*4882a593Smuzhiyun 	      comp->segments->node_alloc = comp->segments->node_count;
342*4882a593Smuzhiyun-	      comp->segments->nodes = grub_zalloc (sizeof (*comp->segments->nodes)
343*4882a593Smuzhiyun-						   * comp->segments->node_alloc);
344*4882a593Smuzhiyun+	      comp->segments->nodes = grub_calloc (comp->segments->node_alloc,
345*4882a593Smuzhiyun+						   sizeof (*comp->segments->nodes));
346*4882a593Smuzhiyun 	      if (!lv->segments->nodes)
347*4882a593Smuzhiyun 		goto fail2;
348*4882a593Smuzhiyun 	    }
349*4882a593Smuzhiyun@@ -1017,7 +1017,7 @@ grub_util_ldm_embed (struct grub_disk *disk, unsigned int *nsectors,
350*4882a593Smuzhiyun       *nsectors = lv->size;
351*4882a593Smuzhiyun       if (*nsectors > max_nsectors)
352*4882a593Smuzhiyun 	*nsectors = max_nsectors;
353*4882a593Smuzhiyun-      *sectors = grub_malloc (*nsectors * sizeof (**sectors));
354*4882a593Smuzhiyun+      *sectors = grub_calloc (*nsectors, sizeof (**sectors));
355*4882a593Smuzhiyun       if (!*sectors)
356*4882a593Smuzhiyun 	return grub_errno;
357*4882a593Smuzhiyun       for (i = 0; i < *nsectors; i++)
358*4882a593Smuzhiyundiff --git a/grub-core/disk/luks.c b/grub-core/disk/luks.c
359*4882a593Smuzhiyunindex 86c50c612..18b3a8bb1 100644
360*4882a593Smuzhiyun--- a/grub-core/disk/luks.c
361*4882a593Smuzhiyun+++ b/grub-core/disk/luks.c
362*4882a593Smuzhiyun@@ -336,7 +336,7 @@ luks_recover_key (grub_disk_t source,
363*4882a593Smuzhiyun 	&& grub_be_to_cpu32 (header.keyblock[i].stripes) > max_stripes)
364*4882a593Smuzhiyun       max_stripes = grub_be_to_cpu32 (header.keyblock[i].stripes);
365*4882a593Smuzhiyun
366*4882a593Smuzhiyun-  split_key = grub_malloc (keysize * max_stripes);
367*4882a593Smuzhiyun+  split_key = grub_calloc (keysize, max_stripes);
368*4882a593Smuzhiyun   if (!split_key)
369*4882a593Smuzhiyun     return grub_errno;
370*4882a593Smuzhiyun
371*4882a593Smuzhiyundiff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c
372*4882a593Smuzhiyunindex 7b265c780..d1df640b3 100644
373*4882a593Smuzhiyun--- a/grub-core/disk/lvm.c
374*4882a593Smuzhiyun+++ b/grub-core/disk/lvm.c
375*4882a593Smuzhiyun@@ -173,7 +173,7 @@ grub_lvm_detect (grub_disk_t disk,
376*4882a593Smuzhiyun      first one.  */
377*4882a593Smuzhiyun
378*4882a593Smuzhiyun   /* Allocate buffer space for the circular worst-case scenario. */
379*4882a593Smuzhiyun-  metadatabuf = grub_malloc (2 * mda_size);
380*4882a593Smuzhiyun+  metadatabuf = grub_calloc (2, mda_size);
381*4882a593Smuzhiyun   if (! metadatabuf)
382*4882a593Smuzhiyun     goto fail;
383*4882a593Smuzhiyun
384*4882a593Smuzhiyun@@ -426,7 +426,7 @@ grub_lvm_detect (grub_disk_t disk,
385*4882a593Smuzhiyun #endif
386*4882a593Smuzhiyun 		  goto lvs_fail;
387*4882a593Smuzhiyun 		}
388*4882a593Smuzhiyun-	      lv->segments = grub_zalloc (sizeof (*seg) * lv->segment_count);
389*4882a593Smuzhiyun+	      lv->segments = grub_calloc (lv->segment_count, sizeof (*seg));
390*4882a593Smuzhiyun 	      seg = lv->segments;
391*4882a593Smuzhiyun
392*4882a593Smuzhiyun 	      for (i = 0; i < lv->segment_count; i++)
393*4882a593Smuzhiyun@@ -483,8 +483,8 @@ grub_lvm_detect (grub_disk_t disk,
394*4882a593Smuzhiyun 		      if (seg->node_count != 1)
395*4882a593Smuzhiyun 			seg->stripe_size = grub_lvm_getvalue (&p, "stripe_size = ");
396*4882a593Smuzhiyun
397*4882a593Smuzhiyun-		      seg->nodes = grub_zalloc (sizeof (*stripe)
398*4882a593Smuzhiyun-						* seg->node_count);
399*4882a593Smuzhiyun+		      seg->nodes = grub_calloc (seg->node_count,
400*4882a593Smuzhiyun+						sizeof (*stripe));
401*4882a593Smuzhiyun 		      stripe = seg->nodes;
402*4882a593Smuzhiyun
403*4882a593Smuzhiyun 		      p = grub_strstr (p, "stripes = [");
404*4882a593Smuzhiyundiff --git a/grub-core/disk/xen/xendisk.c b/grub-core/disk/xen/xendisk.c
405*4882a593Smuzhiyunindex 48476cbbf..d6612eebd 100644
406*4882a593Smuzhiyun--- a/grub-core/disk/xen/xendisk.c
407*4882a593Smuzhiyun+++ b/grub-core/disk/xen/xendisk.c
408*4882a593Smuzhiyun@@ -426,7 +426,7 @@ grub_xendisk_init (void)
409*4882a593Smuzhiyun   if (!ctr)
410*4882a593Smuzhiyun     return;
411*4882a593Smuzhiyun
412*4882a593Smuzhiyun-  virtdisks = grub_malloc (ctr * sizeof (virtdisks[0]));
413*4882a593Smuzhiyun+  virtdisks = grub_calloc (ctr, sizeof (virtdisks[0]));
414*4882a593Smuzhiyun   if (!virtdisks)
415*4882a593Smuzhiyun     return;
416*4882a593Smuzhiyun   if (grub_xenstore_dir ("device/vbd", fill, &ctr))
417*4882a593Smuzhiyundiff --git a/grub-core/efiemu/loadcore.c b/grub-core/efiemu/loadcore.c
418*4882a593Smuzhiyunindex 44085ef81..2b924623f 100644
419*4882a593Smuzhiyun--- a/grub-core/efiemu/loadcore.c
420*4882a593Smuzhiyun+++ b/grub-core/efiemu/loadcore.c
421*4882a593Smuzhiyun@@ -201,7 +201,7 @@ grub_efiemu_count_symbols (const Elf_Ehdr *e)
422*4882a593Smuzhiyun
423*4882a593Smuzhiyun   grub_efiemu_nelfsyms = (unsigned) s->sh_size / (unsigned) s->sh_entsize;
424*4882a593Smuzhiyun   grub_efiemu_elfsyms = (struct grub_efiemu_elf_sym *)
425*4882a593Smuzhiyun-    grub_malloc (sizeof (struct grub_efiemu_elf_sym) * grub_efiemu_nelfsyms);
426*4882a593Smuzhiyun+    grub_calloc (grub_efiemu_nelfsyms, sizeof (struct grub_efiemu_elf_sym));
427*4882a593Smuzhiyun
428*4882a593Smuzhiyun   /* Relocators */
429*4882a593Smuzhiyun   for (i = 0, s = (Elf_Shdr *) ((char *) e + e->e_shoff);
430*4882a593Smuzhiyundiff --git a/grub-core/efiemu/mm.c b/grub-core/efiemu/mm.c
431*4882a593Smuzhiyunindex 52a032f7b..9b8e0d0ad 100644
432*4882a593Smuzhiyun--- a/grub-core/efiemu/mm.c
433*4882a593Smuzhiyun+++ b/grub-core/efiemu/mm.c
434*4882a593Smuzhiyun@@ -554,11 +554,11 @@ grub_efiemu_mmap_sort_and_uniq (void)
435*4882a593Smuzhiyun   /* Initialize variables*/
436*4882a593Smuzhiyun   grub_memset (present, 0, sizeof (int) * GRUB_EFI_MAX_MEMORY_TYPE);
437*4882a593Smuzhiyun   scanline_events = (struct grub_efiemu_mmap_scan *)
438*4882a593Smuzhiyun-    grub_malloc (sizeof (struct grub_efiemu_mmap_scan) * 2 * mmap_num);
439*4882a593Smuzhiyun+    grub_calloc (mmap_num, sizeof (struct grub_efiemu_mmap_scan) * 2);
440*4882a593Smuzhiyun
441*4882a593Smuzhiyun   /* Number of chunks can't increase more than by factor of 2 */
442*4882a593Smuzhiyun   result = (grub_efi_memory_descriptor_t *)
443*4882a593Smuzhiyun-    grub_malloc (sizeof (grub_efi_memory_descriptor_t) * 2 * mmap_num);
444*4882a593Smuzhiyun+    grub_calloc (mmap_num, sizeof (grub_efi_memory_descriptor_t) * 2);
445*4882a593Smuzhiyun   if (!result || !scanline_events)
446*4882a593Smuzhiyun     {
447*4882a593Smuzhiyun       grub_free (result);
448*4882a593Smuzhiyun@@ -660,7 +660,7 @@ grub_efiemu_mm_do_alloc (void)
449*4882a593Smuzhiyun
450*4882a593Smuzhiyun   /* Preallocate mmap */
451*4882a593Smuzhiyun   efiemu_mmap = (grub_efi_memory_descriptor_t *)
452*4882a593Smuzhiyun-    grub_malloc (mmap_reserved_size * sizeof (grub_efi_memory_descriptor_t));
453*4882a593Smuzhiyun+    grub_calloc (mmap_reserved_size, sizeof (grub_efi_memory_descriptor_t));
454*4882a593Smuzhiyun   if (!efiemu_mmap)
455*4882a593Smuzhiyun     {
456*4882a593Smuzhiyun       grub_efiemu_unload ();
457*4882a593Smuzhiyundiff --git a/grub-core/font/font.c b/grub-core/font/font.c
458*4882a593Smuzhiyunindex 85a292557..8e118b315 100644
459*4882a593Smuzhiyun--- a/grub-core/font/font.c
460*4882a593Smuzhiyun+++ b/grub-core/font/font.c
461*4882a593Smuzhiyun@@ -293,8 +293,7 @@ load_font_index (grub_file_t file, grub_uint32_t sect_length, struct
462*4882a593Smuzhiyun   font->num_chars = sect_length / FONT_CHAR_INDEX_ENTRY_SIZE;
463*4882a593Smuzhiyun
464*4882a593Smuzhiyun   /* Allocate the character index array.  */
465*4882a593Smuzhiyun-  font->char_index = grub_malloc (font->num_chars
466*4882a593Smuzhiyun-				  * sizeof (struct char_index_entry));
467*4882a593Smuzhiyun+  font->char_index = grub_calloc (font->num_chars, sizeof (struct char_index_entry));
468*4882a593Smuzhiyun   if (!font->char_index)
469*4882a593Smuzhiyun     return 1;
470*4882a593Smuzhiyun   font->bmp_idx = grub_malloc (0x10000 * sizeof (grub_uint16_t));
471*4882a593Smuzhiyundiff --git a/grub-core/fs/affs.c b/grub-core/fs/affs.c
472*4882a593Smuzhiyunindex 6b6a2bc91..220b3712f 100644
473*4882a593Smuzhiyun--- a/grub-core/fs/affs.c
474*4882a593Smuzhiyun+++ b/grub-core/fs/affs.c
475*4882a593Smuzhiyun@@ -301,7 +301,7 @@ grub_affs_read_symlink (grub_fshelp_node_t node)
476*4882a593Smuzhiyun       return 0;
477*4882a593Smuzhiyun     }
478*4882a593Smuzhiyun   latin1[symlink_size] = 0;
479*4882a593Smuzhiyun-  utf8 = grub_malloc (symlink_size * GRUB_MAX_UTF8_PER_LATIN1 + 1);
480*4882a593Smuzhiyun+  utf8 = grub_calloc (GRUB_MAX_UTF8_PER_LATIN1 + 1, symlink_size);
481*4882a593Smuzhiyun   if (!utf8)
482*4882a593Smuzhiyun     {
483*4882a593Smuzhiyun       grub_free (latin1);
484*4882a593Smuzhiyun@@ -422,7 +422,7 @@ grub_affs_iterate_dir (grub_fshelp_node_t dir,
485*4882a593Smuzhiyun 	return 1;
486*4882a593Smuzhiyun     }
487*4882a593Smuzhiyun
488*4882a593Smuzhiyun-  hashtable = grub_zalloc (data->htsize * sizeof (*hashtable));
489*4882a593Smuzhiyun+  hashtable = grub_calloc (data->htsize, sizeof (*hashtable));
490*4882a593Smuzhiyun   if (!hashtable)
491*4882a593Smuzhiyun     return 1;
492*4882a593Smuzhiyun
493*4882a593Smuzhiyun@@ -628,7 +628,7 @@ grub_affs_label (grub_device_t device, char **label)
494*4882a593Smuzhiyun       len = file.namelen;
495*4882a593Smuzhiyun       if (len > sizeof (file.name))
496*4882a593Smuzhiyun 	len = sizeof (file.name);
497*4882a593Smuzhiyun-      *label = grub_malloc (len * GRUB_MAX_UTF8_PER_LATIN1 + 1);
498*4882a593Smuzhiyun+      *label = grub_calloc (GRUB_MAX_UTF8_PER_LATIN1 + 1, len);
499*4882a593Smuzhiyun       if (*label)
500*4882a593Smuzhiyun 	*grub_latin1_to_utf8 ((grub_uint8_t *) *label, file.name, len) = '\0';
501*4882a593Smuzhiyun     }
502*4882a593Smuzhiyundiff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
503*4882a593Smuzhiyunindex 48bd3d04a..11272efc1 100644
504*4882a593Smuzhiyun--- a/grub-core/fs/btrfs.c
505*4882a593Smuzhiyun+++ b/grub-core/fs/btrfs.c
506*4882a593Smuzhiyun@@ -413,7 +413,7 @@ lower_bound (struct grub_btrfs_data *data,
507*4882a593Smuzhiyun     {
508*4882a593Smuzhiyun       desc->allocated = 16;
509*4882a593Smuzhiyun       desc->depth = 0;
510*4882a593Smuzhiyun-      desc->data = grub_malloc (sizeof (desc->data[0]) * desc->allocated);
511*4882a593Smuzhiyun+      desc->data = grub_calloc (desc->allocated, sizeof (desc->data[0]));
512*4882a593Smuzhiyun       if (!desc->data)
513*4882a593Smuzhiyun 	return grub_errno;
514*4882a593Smuzhiyun     }
515*4882a593Smuzhiyun@@ -752,7 +752,7 @@ raid56_read_retry (struct grub_btrfs_data *data,
516*4882a593Smuzhiyun   grub_err_t ret = GRUB_ERR_OUT_OF_MEMORY;
517*4882a593Smuzhiyun   grub_uint64_t i, failed_devices;
518*4882a593Smuzhiyun
519*4882a593Smuzhiyun-  buffers = grub_zalloc (sizeof(*buffers) * nstripes);
520*4882a593Smuzhiyun+  buffers = grub_calloc (nstripes, sizeof (*buffers));
521*4882a593Smuzhiyun   if (!buffers)
522*4882a593Smuzhiyun     goto cleanup;
523*4882a593Smuzhiyun
524*4882a593Smuzhiyun@@ -2160,7 +2160,7 @@ grub_btrfs_embed (grub_device_t device __attribute__ ((unused)),
525*4882a593Smuzhiyun   *nsectors = 64 * 2 - 1;
526*4882a593Smuzhiyun   if (*nsectors > max_nsectors)
527*4882a593Smuzhiyun     *nsectors = max_nsectors;
528*4882a593Smuzhiyun-  *sectors = grub_malloc (*nsectors * sizeof (**sectors));
529*4882a593Smuzhiyun+  *sectors = grub_calloc (*nsectors, sizeof (**sectors));
530*4882a593Smuzhiyun   if (!*sectors)
531*4882a593Smuzhiyun     return grub_errno;
532*4882a593Smuzhiyun   for (i = 0; i < *nsectors; i++)
533*4882a593Smuzhiyundiff --git a/grub-core/fs/hfs.c b/grub-core/fs/hfs.c
534*4882a593Smuzhiyunindex ac0a40990..3fe842b4d 100644
535*4882a593Smuzhiyun--- a/grub-core/fs/hfs.c
536*4882a593Smuzhiyun+++ b/grub-core/fs/hfs.c
537*4882a593Smuzhiyun@@ -1360,7 +1360,7 @@ grub_hfs_label (grub_device_t device, char **label)
538*4882a593Smuzhiyun       grub_size_t len = data->sblock.volname[0];
539*4882a593Smuzhiyun       if (len > sizeof (data->sblock.volname) - 1)
540*4882a593Smuzhiyun 	len = sizeof (data->sblock.volname) - 1;
541*4882a593Smuzhiyun-      *label = grub_malloc (len * MAX_UTF8_PER_MAC_ROMAN + 1);
542*4882a593Smuzhiyun+      *label = grub_calloc (MAX_UTF8_PER_MAC_ROMAN + 1, len);
543*4882a593Smuzhiyun       if (*label)
544*4882a593Smuzhiyun 	macroman_to_utf8 (*label, data->sblock.volname + 1,
545*4882a593Smuzhiyun 			  len + 1, 0);
546*4882a593Smuzhiyundiff --git a/grub-core/fs/hfsplus.c b/grub-core/fs/hfsplus.c
547*4882a593Smuzhiyunindex 54786bb1c..dae43becc 100644
548*4882a593Smuzhiyun--- a/grub-core/fs/hfsplus.c
549*4882a593Smuzhiyun+++ b/grub-core/fs/hfsplus.c
550*4882a593Smuzhiyun@@ -720,7 +720,7 @@ list_nodes (void *record, void *hook_arg)
551*4882a593Smuzhiyun   if (! filename)
552*4882a593Smuzhiyun     return 0;
553*4882a593Smuzhiyun
554*4882a593Smuzhiyun-  keyname = grub_malloc (grub_be_to_cpu16 (catkey->namelen) * sizeof (*keyname));
555*4882a593Smuzhiyun+  keyname = grub_calloc (grub_be_to_cpu16 (catkey->namelen), sizeof (*keyname));
556*4882a593Smuzhiyun   if (!keyname)
557*4882a593Smuzhiyun     {
558*4882a593Smuzhiyun       grub_free (filename);
559*4882a593Smuzhiyun@@ -1007,7 +1007,7 @@ grub_hfsplus_label (grub_device_t device, char **label)
560*4882a593Smuzhiyun     grub_hfsplus_btree_recptr (&data->catalog_tree, node, ptr);
561*4882a593Smuzhiyun
562*4882a593Smuzhiyun   label_len = grub_be_to_cpu16 (catkey->namelen);
563*4882a593Smuzhiyun-  label_name = grub_malloc (label_len * sizeof (*label_name));
564*4882a593Smuzhiyun+  label_name = grub_calloc (label_len, sizeof (*label_name));
565*4882a593Smuzhiyun   if (!label_name)
566*4882a593Smuzhiyun     {
567*4882a593Smuzhiyun       grub_free (node);
568*4882a593Smuzhiyun@@ -1029,7 +1029,7 @@ grub_hfsplus_label (grub_device_t device, char **label)
569*4882a593Smuzhiyun 	}
570*4882a593Smuzhiyun     }
571*4882a593Smuzhiyun
572*4882a593Smuzhiyun-  *label = grub_malloc (label_len * GRUB_MAX_UTF8_PER_UTF16 + 1);
573*4882a593Smuzhiyun+  *label = grub_calloc (label_len, GRUB_MAX_UTF8_PER_UTF16 + 1);
574*4882a593Smuzhiyun   if (! *label)
575*4882a593Smuzhiyun     {
576*4882a593Smuzhiyun       grub_free (label_name);
577*4882a593Smuzhiyundiff --git a/grub-core/fs/iso9660.c b/grub-core/fs/iso9660.c
578*4882a593Smuzhiyunindex 49c0c632b..4f1b52a55 100644
579*4882a593Smuzhiyun--- a/grub-core/fs/iso9660.c
580*4882a593Smuzhiyun+++ b/grub-core/fs/iso9660.c
581*4882a593Smuzhiyun@@ -331,7 +331,7 @@ grub_iso9660_convert_string (grub_uint8_t *us, int len)
582*4882a593Smuzhiyun   int i;
583*4882a593Smuzhiyun   grub_uint16_t t[MAX_NAMELEN / 2 + 1];
584*4882a593Smuzhiyun
585*4882a593Smuzhiyun-  p = grub_malloc (len * GRUB_MAX_UTF8_PER_UTF16 + 1);
586*4882a593Smuzhiyun+  p = grub_calloc (len, GRUB_MAX_UTF8_PER_UTF16 + 1);
587*4882a593Smuzhiyun   if (! p)
588*4882a593Smuzhiyun     return NULL;
589*4882a593Smuzhiyun
590*4882a593Smuzhiyundiff --git a/grub-core/fs/ntfs.c b/grub-core/fs/ntfs.c
591*4882a593Smuzhiyunindex fc4e1f678..2f34f76da 100644
592*4882a593Smuzhiyun--- a/grub-core/fs/ntfs.c
593*4882a593Smuzhiyun+++ b/grub-core/fs/ntfs.c
594*4882a593Smuzhiyun@@ -556,8 +556,8 @@ get_utf8 (grub_uint8_t *in, grub_size_t len)
595*4882a593Smuzhiyun   grub_uint16_t *tmp;
596*4882a593Smuzhiyun   grub_size_t i;
597*4882a593Smuzhiyun
598*4882a593Smuzhiyun-  buf = grub_malloc (len * GRUB_MAX_UTF8_PER_UTF16 + 1);
599*4882a593Smuzhiyun-  tmp = grub_malloc (len * sizeof (tmp[0]));
600*4882a593Smuzhiyun+  buf = grub_calloc (len, GRUB_MAX_UTF8_PER_UTF16 + 1);
601*4882a593Smuzhiyun+  tmp = grub_calloc (len, sizeof (tmp[0]));
602*4882a593Smuzhiyun   if (!buf || !tmp)
603*4882a593Smuzhiyun     {
604*4882a593Smuzhiyun       grub_free (buf);
605*4882a593Smuzhiyundiff --git a/grub-core/fs/sfs.c b/grub-core/fs/sfs.c
606*4882a593Smuzhiyunindex 50c1fe72f..90f7fb379 100644
607*4882a593Smuzhiyun--- a/grub-core/fs/sfs.c
608*4882a593Smuzhiyun+++ b/grub-core/fs/sfs.c
609*4882a593Smuzhiyun@@ -266,7 +266,7 @@ grub_sfs_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
610*4882a593Smuzhiyun       node->next_extent = node->block;
611*4882a593Smuzhiyun       node->cache_size = 0;
612*4882a593Smuzhiyun
613*4882a593Smuzhiyun-      node->cache = grub_malloc (sizeof (node->cache[0]) * cache_size);
614*4882a593Smuzhiyun+      node->cache = grub_calloc (cache_size, sizeof (node->cache[0]));
615*4882a593Smuzhiyun       if (!node->cache)
616*4882a593Smuzhiyun 	{
617*4882a593Smuzhiyun 	  grub_errno = 0;
618*4882a593Smuzhiyundiff --git a/grub-core/fs/tar.c b/grub-core/fs/tar.c
619*4882a593Smuzhiyunindex 7d63e0c99..c551ed6b5 100644
620*4882a593Smuzhiyun--- a/grub-core/fs/tar.c
621*4882a593Smuzhiyun+++ b/grub-core/fs/tar.c
622*4882a593Smuzhiyun@@ -120,7 +120,7 @@ grub_cpio_find_file (struct grub_archelp_data *data, char **name,
623*4882a593Smuzhiyun 	  if (data->linkname_alloc < linksize + 1)
624*4882a593Smuzhiyun 	    {
625*4882a593Smuzhiyun 	      char *n;
626*4882a593Smuzhiyun-	      n = grub_malloc (2 * (linksize + 1));
627*4882a593Smuzhiyun+	      n = grub_calloc (2, linksize + 1);
628*4882a593Smuzhiyun 	      if (!n)
629*4882a593Smuzhiyun 		return grub_errno;
630*4882a593Smuzhiyun 	      grub_free (data->linkname);
631*4882a593Smuzhiyundiff --git a/grub-core/fs/udf.c b/grub-core/fs/udf.c
632*4882a593Smuzhiyunindex dc8b6e2d1..a83761674 100644
633*4882a593Smuzhiyun--- a/grub-core/fs/udf.c
634*4882a593Smuzhiyun+++ b/grub-core/fs/udf.c
635*4882a593Smuzhiyun@@ -873,7 +873,7 @@ read_string (const grub_uint8_t *raw, grub_size_t sz, char *outbuf)
636*4882a593Smuzhiyun     {
637*4882a593Smuzhiyun       unsigned i;
638*4882a593Smuzhiyun       utf16len = sz - 1;
639*4882a593Smuzhiyun-      utf16 = grub_malloc (utf16len * sizeof (utf16[0]));
640*4882a593Smuzhiyun+      utf16 = grub_calloc (utf16len, sizeof (utf16[0]));
641*4882a593Smuzhiyun       if (!utf16)
642*4882a593Smuzhiyun 	return NULL;
643*4882a593Smuzhiyun       for (i = 0; i < utf16len; i++)
644*4882a593Smuzhiyun@@ -883,7 +883,7 @@ read_string (const grub_uint8_t *raw, grub_size_t sz, char *outbuf)
645*4882a593Smuzhiyun     {
646*4882a593Smuzhiyun       unsigned i;
647*4882a593Smuzhiyun       utf16len = (sz - 1) / 2;
648*4882a593Smuzhiyun-      utf16 = grub_malloc (utf16len * sizeof (utf16[0]));
649*4882a593Smuzhiyun+      utf16 = grub_calloc (utf16len, sizeof (utf16[0]));
650*4882a593Smuzhiyun       if (!utf16)
651*4882a593Smuzhiyun 	return NULL;
652*4882a593Smuzhiyun       for (i = 0; i < utf16len; i++)
653*4882a593Smuzhiyundiff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c
654*4882a593Smuzhiyunindex 2f72e42bf..381dde556 100644
655*4882a593Smuzhiyun--- a/grub-core/fs/zfs/zfs.c
656*4882a593Smuzhiyun+++ b/grub-core/fs/zfs/zfs.c
657*4882a593Smuzhiyun@@ -3325,7 +3325,7 @@ dnode_get_fullpath (const char *fullpath, struct subvolume *subvol,
658*4882a593Smuzhiyun 	}
659*4882a593Smuzhiyun       subvol->nkeys = 0;
660*4882a593Smuzhiyun       zap_iterate (&keychain_dn, 8, count_zap_keys, &ctx, data);
661*4882a593Smuzhiyun-      subvol->keyring = grub_zalloc (subvol->nkeys * sizeof (subvol->keyring[0]));
662*4882a593Smuzhiyun+      subvol->keyring = grub_calloc (subvol->nkeys, sizeof (subvol->keyring[0]));
663*4882a593Smuzhiyun       if (!subvol->keyring)
664*4882a593Smuzhiyun 	{
665*4882a593Smuzhiyun 	  grub_free (fsname);
666*4882a593Smuzhiyun@@ -4336,7 +4336,7 @@ grub_zfs_embed (grub_device_t device __attribute__ ((unused)),
667*4882a593Smuzhiyun   *nsectors = (VDEV_BOOT_SIZE >> GRUB_DISK_SECTOR_BITS);
668*4882a593Smuzhiyun   if (*nsectors > max_nsectors)
669*4882a593Smuzhiyun     *nsectors = max_nsectors;
670*4882a593Smuzhiyun-  *sectors = grub_malloc (*nsectors * sizeof (**sectors));
671*4882a593Smuzhiyun+  *sectors = grub_calloc (*nsectors, sizeof (**sectors));
672*4882a593Smuzhiyun   if (!*sectors)
673*4882a593Smuzhiyun     return grub_errno;
674*4882a593Smuzhiyun   for (i = 0; i < *nsectors; i++)
675*4882a593Smuzhiyundiff --git a/grub-core/gfxmenu/gui_string_util.c b/grub-core/gfxmenu/gui_string_util.c
676*4882a593Smuzhiyunindex a9a415e31..ba1e1eab3 100644
677*4882a593Smuzhiyun--- a/grub-core/gfxmenu/gui_string_util.c
678*4882a593Smuzhiyun+++ b/grub-core/gfxmenu/gui_string_util.c
679*4882a593Smuzhiyun@@ -55,7 +55,7 @@ canonicalize_path (const char *path)
680*4882a593Smuzhiyun     if (*p == '/')
681*4882a593Smuzhiyun       components++;
682*4882a593Smuzhiyun
683*4882a593Smuzhiyun-  char **path_array = grub_malloc (components * sizeof (*path_array));
684*4882a593Smuzhiyun+  char **path_array = grub_calloc (components, sizeof (*path_array));
685*4882a593Smuzhiyun   if (! path_array)
686*4882a593Smuzhiyun     return 0;
687*4882a593Smuzhiyun
688*4882a593Smuzhiyundiff --git a/grub-core/gfxmenu/widget-box.c b/grub-core/gfxmenu/widget-box.c
689*4882a593Smuzhiyunindex b60602889..470597ded 100644
690*4882a593Smuzhiyun--- a/grub-core/gfxmenu/widget-box.c
691*4882a593Smuzhiyun+++ b/grub-core/gfxmenu/widget-box.c
692*4882a593Smuzhiyun@@ -303,10 +303,10 @@ grub_gfxmenu_create_box (const char *pixmaps_prefix,
693*4882a593Smuzhiyun   box->content_height = 0;
694*4882a593Smuzhiyun   box->raw_pixmaps =
695*4882a593Smuzhiyun     (struct grub_video_bitmap **)
696*4882a593Smuzhiyun-    grub_malloc (BOX_NUM_PIXMAPS * sizeof (struct grub_video_bitmap *));
697*4882a593Smuzhiyun+    grub_calloc (BOX_NUM_PIXMAPS, sizeof (struct grub_video_bitmap *));
698*4882a593Smuzhiyun   box->scaled_pixmaps =
699*4882a593Smuzhiyun     (struct grub_video_bitmap **)
700*4882a593Smuzhiyun-    grub_malloc (BOX_NUM_PIXMAPS * sizeof (struct grub_video_bitmap *));
701*4882a593Smuzhiyun+    grub_calloc (BOX_NUM_PIXMAPS, sizeof (struct grub_video_bitmap *));
702*4882a593Smuzhiyun
703*4882a593Smuzhiyun   /* Initialize all pixmap pointers to NULL so that proper destruction can
704*4882a593Smuzhiyun      be performed if an error is encountered partway through construction.  */
705*4882a593Smuzhiyundiff --git a/grub-core/io/gzio.c b/grub-core/io/gzio.c
706*4882a593Smuzhiyunindex 6208a9763..43d98a7bd 100644
707*4882a593Smuzhiyun--- a/grub-core/io/gzio.c
708*4882a593Smuzhiyun+++ b/grub-core/io/gzio.c
709*4882a593Smuzhiyun@@ -554,7 +554,7 @@ huft_build (unsigned *b,	/* code lengths in bits (all assumed <= BMAX) */
710*4882a593Smuzhiyun 	      z = 1 << j;	/* table entries for j-bit table */
711*4882a593Smuzhiyun
712*4882a593Smuzhiyun 	      /* allocate and link in new table */
713*4882a593Smuzhiyun-	      q = (struct huft *) grub_zalloc ((z + 1) * sizeof (struct huft));
714*4882a593Smuzhiyun+	      q = (struct huft *) grub_calloc (z + 1, sizeof (struct huft));
715*4882a593Smuzhiyun 	      if (! q)
716*4882a593Smuzhiyun 		{
717*4882a593Smuzhiyun 		  if (h)
718*4882a593Smuzhiyundiff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
719*4882a593Smuzhiyunindex 6e1ceb905..dc31caa21 100644
720*4882a593Smuzhiyun--- a/grub-core/kern/efi/efi.c
721*4882a593Smuzhiyun+++ b/grub-core/kern/efi/efi.c
722*4882a593Smuzhiyun@@ -202,7 +202,7 @@ grub_efi_set_variable(const char *var, const grub_efi_guid_t *guid,
723*4882a593Smuzhiyun
724*4882a593Smuzhiyun   len = grub_strlen (var);
725*4882a593Smuzhiyun   len16 = len * GRUB_MAX_UTF16_PER_UTF8;
726*4882a593Smuzhiyun-  var16 = grub_malloc ((len16 + 1) * sizeof (var16[0]));
727*4882a593Smuzhiyun+  var16 = grub_calloc (len16 + 1, sizeof (var16[0]));
728*4882a593Smuzhiyun   if (!var16)
729*4882a593Smuzhiyun     return grub_errno;
730*4882a593Smuzhiyun   len16 = grub_utf8_to_utf16 (var16, len16, (grub_uint8_t *) var, len, NULL);
731*4882a593Smuzhiyun@@ -237,7 +237,7 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
732*4882a593Smuzhiyun
733*4882a593Smuzhiyun   len = grub_strlen (var);
734*4882a593Smuzhiyun   len16 = len * GRUB_MAX_UTF16_PER_UTF8;
735*4882a593Smuzhiyun-  var16 = grub_malloc ((len16 + 1) * sizeof (var16[0]));
736*4882a593Smuzhiyun+  var16 = grub_calloc (len16 + 1, sizeof (var16[0]));
737*4882a593Smuzhiyun   if (!var16)
738*4882a593Smuzhiyun     return NULL;
739*4882a593Smuzhiyun   len16 = grub_utf8_to_utf16 (var16, len16, (grub_uint8_t *) var, len, NULL);
740*4882a593Smuzhiyun@@ -383,7 +383,7 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)
741*4882a593Smuzhiyun 	  while (len > 0 && fp->path_name[len - 1] == 0)
742*4882a593Smuzhiyun 	    len--;
743*4882a593Smuzhiyun
744*4882a593Smuzhiyun-	  dup_name = grub_malloc (len * sizeof (*dup_name));
745*4882a593Smuzhiyun+	  dup_name = grub_calloc (len, sizeof (*dup_name));
746*4882a593Smuzhiyun 	  if (!dup_name)
747*4882a593Smuzhiyun 	    {
748*4882a593Smuzhiyun 	      grub_free (name);
749*4882a593Smuzhiyundiff --git a/grub-core/kern/emu/hostdisk.c b/grub-core/kern/emu/hostdisk.c
750*4882a593Smuzhiyunindex e9ec680cd..d975265b2 100644
751*4882a593Smuzhiyun--- a/grub-core/kern/emu/hostdisk.c
752*4882a593Smuzhiyun+++ b/grub-core/kern/emu/hostdisk.c
753*4882a593Smuzhiyun@@ -615,7 +615,7 @@ static char *
754*4882a593Smuzhiyun grub_util_path_concat_real (size_t n, int ext, va_list ap)
755*4882a593Smuzhiyun {
756*4882a593Smuzhiyun   size_t totlen = 0;
757*4882a593Smuzhiyun-  char **l = xmalloc ((n + ext) * sizeof (l[0]));
758*4882a593Smuzhiyun+  char **l = xcalloc (n + ext, sizeof (l[0]));
759*4882a593Smuzhiyun   char *r, *p, *pi;
760*4882a593Smuzhiyun   size_t i;
761*4882a593Smuzhiyun   int first = 1;
762*4882a593Smuzhiyundiff --git a/grub-core/kern/fs.c b/grub-core/kern/fs.c
763*4882a593Smuzhiyunindex 2b85f4950..f90be6566 100644
764*4882a593Smuzhiyun--- a/grub-core/kern/fs.c
765*4882a593Smuzhiyun+++ b/grub-core/kern/fs.c
766*4882a593Smuzhiyun@@ -151,7 +151,7 @@ grub_fs_blocklist_open (grub_file_t file, const char *name)
767*4882a593Smuzhiyun   while (p);
768*4882a593Smuzhiyun
769*4882a593Smuzhiyun   /* Allocate a block list.  */
770*4882a593Smuzhiyun-  blocks = grub_zalloc (sizeof (struct grub_fs_block) * (num + 1));
771*4882a593Smuzhiyun+  blocks = grub_calloc (num + 1, sizeof (struct grub_fs_block));
772*4882a593Smuzhiyun   if (! blocks)
773*4882a593Smuzhiyun     return 0;
774*4882a593Smuzhiyun
775*4882a593Smuzhiyundiff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
776*4882a593Smuzhiyunindex 3b633d51f..a7abd367a 100644
777*4882a593Smuzhiyun--- a/grub-core/kern/misc.c
778*4882a593Smuzhiyun+++ b/grub-core/kern/misc.c
779*4882a593Smuzhiyun@@ -690,7 +690,7 @@ parse_printf_args (const char *fmt0, struct printf_args *args,
780*4882a593Smuzhiyun     args->ptr = args->prealloc;
781*4882a593Smuzhiyun   else
782*4882a593Smuzhiyun     {
783*4882a593Smuzhiyun-      args->ptr = grub_malloc (args->count * sizeof (args->ptr[0]));
784*4882a593Smuzhiyun+      args->ptr = grub_calloc (args->count, sizeof (args->ptr[0]));
785*4882a593Smuzhiyun       if (!args->ptr)
786*4882a593Smuzhiyun 	{
787*4882a593Smuzhiyun 	  grub_errno = GRUB_ERR_NONE;
788*4882a593Smuzhiyundiff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c
789*4882a593Smuzhiyunindex 78175aac2..619db3122 100644
790*4882a593Smuzhiyun--- a/grub-core/kern/parser.c
791*4882a593Smuzhiyun+++ b/grub-core/kern/parser.c
792*4882a593Smuzhiyun@@ -213,7 +213,7 @@ grub_parser_split_cmdline (const char *cmdline,
793*4882a593Smuzhiyun     return grub_errno;
794*4882a593Smuzhiyun   grub_memcpy (args, buffer, bp - buffer);
795*4882a593Smuzhiyun
796*4882a593Smuzhiyun-  *argv = grub_malloc (sizeof (char *) * (*argc + 1));
797*4882a593Smuzhiyun+  *argv = grub_calloc (*argc + 1, sizeof (char *));
798*4882a593Smuzhiyun   if (!*argv)
799*4882a593Smuzhiyun     {
800*4882a593Smuzhiyun       grub_free (args);
801*4882a593Smuzhiyundiff --git a/grub-core/kern/uboot/uboot.c b/grub-core/kern/uboot/uboot.c
802*4882a593Smuzhiyunindex be4816fe6..aac8f9ae1 100644
803*4882a593Smuzhiyun--- a/grub-core/kern/uboot/uboot.c
804*4882a593Smuzhiyun+++ b/grub-core/kern/uboot/uboot.c
805*4882a593Smuzhiyun@@ -133,7 +133,7 @@ grub_uboot_dev_enum (void)
806*4882a593Smuzhiyun     return num_devices;
807*4882a593Smuzhiyun
808*4882a593Smuzhiyun   max_devices = 2;
809*4882a593Smuzhiyun-  enum_devices = grub_malloc (sizeof(struct device_info) * max_devices);
810*4882a593Smuzhiyun+  enum_devices = grub_calloc (max_devices, sizeof(struct device_info));
811*4882a593Smuzhiyun   if (!enum_devices)
812*4882a593Smuzhiyun     return 0;
813*4882a593Smuzhiyun
814*4882a593Smuzhiyundiff --git a/grub-core/lib/libgcrypt/cipher/ac.c b/grub-core/lib/libgcrypt/cipher/ac.c
815*4882a593Smuzhiyunindex f5e946a2d..63f6fcd11 100644
816*4882a593Smuzhiyun--- a/grub-core/lib/libgcrypt/cipher/ac.c
817*4882a593Smuzhiyun+++ b/grub-core/lib/libgcrypt/cipher/ac.c
818*4882a593Smuzhiyun@@ -185,7 +185,7 @@ ac_data_mpi_copy (gcry_ac_mpi_t *data_mpis, unsigned int data_mpis_n,
819*4882a593Smuzhiyun   gcry_mpi_t mpi;
820*4882a593Smuzhiyun   char *label;
821*4882a593Smuzhiyun
822*4882a593Smuzhiyun-  data_mpis_new = gcry_malloc (sizeof (*data_mpis_new) * data_mpis_n);
823*4882a593Smuzhiyun+  data_mpis_new = gcry_calloc (data_mpis_n, sizeof (*data_mpis_new));
824*4882a593Smuzhiyun   if (! data_mpis_new)
825*4882a593Smuzhiyun     {
826*4882a593Smuzhiyun       err = gcry_error_from_errno (errno);
827*4882a593Smuzhiyun@@ -572,7 +572,7 @@ _gcry_ac_data_to_sexp (gcry_ac_data_t data, gcry_sexp_t *sexp,
828*4882a593Smuzhiyun     }
829*4882a593Smuzhiyun
830*4882a593Smuzhiyun   /* Add MPI list.  */
831*4882a593Smuzhiyun-  arg_list = gcry_malloc (sizeof (*arg_list) * (data_n + 1));
832*4882a593Smuzhiyun+  arg_list = gcry_calloc (data_n + 1, sizeof (*arg_list));
833*4882a593Smuzhiyun   if (! arg_list)
834*4882a593Smuzhiyun     {
835*4882a593Smuzhiyun       err = gcry_error_from_errno (errno);
836*4882a593Smuzhiyun@@ -1283,7 +1283,7 @@ ac_data_construct (const char *identifier, int include_flags,
837*4882a593Smuzhiyun   /* We build a list of arguments to pass to
838*4882a593Smuzhiyun      gcry_sexp_build_array().  */
839*4882a593Smuzhiyun   data_length = _gcry_ac_data_length (data);
840*4882a593Smuzhiyun-  arg_list = gcry_malloc (sizeof (*arg_list) * (data_length * 2));
841*4882a593Smuzhiyun+  arg_list = gcry_calloc (data_length, sizeof (*arg_list) * 2);
842*4882a593Smuzhiyun   if (! arg_list)
843*4882a593Smuzhiyun     {
844*4882a593Smuzhiyun       err = gcry_error_from_errno (errno);
845*4882a593Smuzhiyun@@ -1593,7 +1593,7 @@ _gcry_ac_key_pair_generate (gcry_ac_handle_t handle, unsigned int nbits,
846*4882a593Smuzhiyun 	arg_list_n += 2;
847*4882a593Smuzhiyun
848*4882a593Smuzhiyun   /* Allocate list.  */
849*4882a593Smuzhiyun-  arg_list = gcry_malloc (sizeof (*arg_list) * arg_list_n);
850*4882a593Smuzhiyun+  arg_list = gcry_calloc (arg_list_n, sizeof (*arg_list));
851*4882a593Smuzhiyun   if (! arg_list)
852*4882a593Smuzhiyun     {
853*4882a593Smuzhiyun       err = gcry_error_from_errno (errno);
854*4882a593Smuzhiyundiff --git a/grub-core/lib/libgcrypt/cipher/primegen.c b/grub-core/lib/libgcrypt/cipher/primegen.c
855*4882a593Smuzhiyunindex 2788e349f..b12e79b19 100644
856*4882a593Smuzhiyun--- a/grub-core/lib/libgcrypt/cipher/primegen.c
857*4882a593Smuzhiyun+++ b/grub-core/lib/libgcrypt/cipher/primegen.c
858*4882a593Smuzhiyun@@ -383,7 +383,7 @@ prime_generate_internal (int need_q_factor,
859*4882a593Smuzhiyun     }
860*4882a593Smuzhiyun
861*4882a593Smuzhiyun   /* Allocate an array to track pool usage. */
862*4882a593Smuzhiyun-  pool_in_use = gcry_malloc (n * sizeof *pool_in_use);
863*4882a593Smuzhiyun+  pool_in_use = gcry_calloc (n, sizeof *pool_in_use);
864*4882a593Smuzhiyun   if (!pool_in_use)
865*4882a593Smuzhiyun     {
866*4882a593Smuzhiyun       err = gpg_err_code_from_errno (errno);
867*4882a593Smuzhiyun@@ -765,7 +765,7 @@ gen_prime (unsigned int nbits, int secret, int randomlevel,
868*4882a593Smuzhiyun   if (nbits < 16)
869*4882a593Smuzhiyun     log_fatal ("can't generate a prime with less than %d bits\n", 16);
870*4882a593Smuzhiyun
871*4882a593Smuzhiyun-  mods = gcry_xmalloc( no_of_small_prime_numbers * sizeof *mods );
872*4882a593Smuzhiyun+  mods = gcry_xcalloc( no_of_small_prime_numbers, sizeof *mods);
873*4882a593Smuzhiyun   /* Make nbits fit into gcry_mpi_t implementation. */
874*4882a593Smuzhiyun   val_2  = mpi_alloc_set_ui( 2 );
875*4882a593Smuzhiyun   val_3 = mpi_alloc_set_ui( 3);
876*4882a593Smuzhiyundiff --git a/grub-core/lib/libgcrypt/cipher/pubkey.c b/grub-core/lib/libgcrypt/cipher/pubkey.c
877*4882a593Smuzhiyunindex 910982141..ca087ad75 100644
878*4882a593Smuzhiyun--- a/grub-core/lib/libgcrypt/cipher/pubkey.c
879*4882a593Smuzhiyun+++ b/grub-core/lib/libgcrypt/cipher/pubkey.c
880*4882a593Smuzhiyun@@ -2941,7 +2941,7 @@ gcry_pk_encrypt (gcry_sexp_t *r_ciph, gcry_sexp_t s_data, gcry_sexp_t s_pkey)
881*4882a593Smuzhiyun        * array to a format string, so we have to do it this way :-(.  */
882*4882a593Smuzhiyun       /* FIXME: There is now such a format specifier, so we can
883*4882a593Smuzhiyun          change the code to be more clear. */
884*4882a593Smuzhiyun-      arg_list = malloc (nelem * sizeof *arg_list);
885*4882a593Smuzhiyun+      arg_list = calloc (nelem, sizeof *arg_list);
886*4882a593Smuzhiyun       if (!arg_list)
887*4882a593Smuzhiyun         {
888*4882a593Smuzhiyun           rc = gpg_err_code_from_syserror ();
889*4882a593Smuzhiyun@@ -3233,7 +3233,7 @@ gcry_pk_sign (gcry_sexp_t *r_sig, gcry_sexp_t s_hash, gcry_sexp_t s_skey)
890*4882a593Smuzhiyun         }
891*4882a593Smuzhiyun       strcpy (p, "))");
892*4882a593Smuzhiyun
893*4882a593Smuzhiyun-      arg_list = malloc (nelem * sizeof *arg_list);
894*4882a593Smuzhiyun+      arg_list = calloc (nelem, sizeof *arg_list);
895*4882a593Smuzhiyun       if (!arg_list)
896*4882a593Smuzhiyun         {
897*4882a593Smuzhiyun           rc = gpg_err_code_from_syserror ();
898*4882a593Smuzhiyundiff --git a/grub-core/lib/priority_queue.c b/grub-core/lib/priority_queue.c
899*4882a593Smuzhiyunindex 659be0b7f..7d5e7c05a 100644
900*4882a593Smuzhiyun--- a/grub-core/lib/priority_queue.c
901*4882a593Smuzhiyun+++ b/grub-core/lib/priority_queue.c
902*4882a593Smuzhiyun@@ -92,7 +92,7 @@ grub_priority_queue_new (grub_size_t elsize,
903*4882a593Smuzhiyun {
904*4882a593Smuzhiyun   struct grub_priority_queue *ret;
905*4882a593Smuzhiyun   void *els;
906*4882a593Smuzhiyun-  els = grub_malloc (elsize * 8);
907*4882a593Smuzhiyun+  els = grub_calloc (8, elsize);
908*4882a593Smuzhiyun   if (!els)
909*4882a593Smuzhiyun     return 0;
910*4882a593Smuzhiyun   ret = (struct grub_priority_queue *) grub_malloc (sizeof (*ret));
911*4882a593Smuzhiyundiff --git a/grub-core/lib/reed_solomon.c b/grub-core/lib/reed_solomon.c
912*4882a593Smuzhiyunindex ee9fa7b4f..467305b46 100644
913*4882a593Smuzhiyun--- a/grub-core/lib/reed_solomon.c
914*4882a593Smuzhiyun+++ b/grub-core/lib/reed_solomon.c
915*4882a593Smuzhiyun@@ -20,6 +20,7 @@
916*4882a593Smuzhiyun #include <stdio.h>
917*4882a593Smuzhiyun #include <string.h>
918*4882a593Smuzhiyun #include <stdlib.h>
919*4882a593Smuzhiyun+#define xcalloc calloc
920*4882a593Smuzhiyun #define xmalloc malloc
921*4882a593Smuzhiyun #define grub_memset memset
922*4882a593Smuzhiyun #define grub_memcpy memcpy
923*4882a593Smuzhiyun@@ -158,11 +159,9 @@ rs_encode (gf_single_t *data, grub_size_t s, grub_size_t rs)
924*4882a593Smuzhiyun   gf_single_t *rs_polynomial;
925*4882a593Smuzhiyun   int i, j;
926*4882a593Smuzhiyun   gf_single_t *m;
927*4882a593Smuzhiyun-  m = xmalloc ((s + rs) * sizeof (gf_single_t));
928*4882a593Smuzhiyun+  m = xcalloc (s + rs, sizeof (gf_single_t));
929*4882a593Smuzhiyun   grub_memcpy (m, data, s * sizeof (gf_single_t));
930*4882a593Smuzhiyun-  grub_memset (m + s, 0, rs * sizeof (gf_single_t));
931*4882a593Smuzhiyun-  rs_polynomial = xmalloc ((rs + 1) * sizeof (gf_single_t));
932*4882a593Smuzhiyun-  grub_memset (rs_polynomial, 0, (rs + 1) * sizeof (gf_single_t));
933*4882a593Smuzhiyun+  rs_polynomial = xcalloc (rs + 1, sizeof (gf_single_t));
934*4882a593Smuzhiyun   rs_polynomial[rs] = 1;
935*4882a593Smuzhiyun   /* Multiply with X - a^r */
936*4882a593Smuzhiyun   for (j = 0; j < rs; j++)
937*4882a593Smuzhiyundiff --git a/grub-core/lib/relocator.c b/grub-core/lib/relocator.c
938*4882a593Smuzhiyunindex ea3ebc719..5847aac36 100644
939*4882a593Smuzhiyun--- a/grub-core/lib/relocator.c
940*4882a593Smuzhiyun+++ b/grub-core/lib/relocator.c
941*4882a593Smuzhiyun@@ -495,9 +495,9 @@ malloc_in_range (struct grub_relocator *rel,
942*4882a593Smuzhiyun   }
943*4882a593Smuzhiyun #endif
944*4882a593Smuzhiyun
945*4882a593Smuzhiyun-  eventt = grub_malloc (maxevents * sizeof (events[0]));
946*4882a593Smuzhiyun+  eventt = grub_calloc (maxevents, sizeof (events[0]));
947*4882a593Smuzhiyun   counter = grub_malloc ((DIGITSORT_MASK + 2) * sizeof (counter[0]));
948*4882a593Smuzhiyun-  events = grub_malloc (maxevents * sizeof (events[0]));
949*4882a593Smuzhiyun+  events = grub_calloc (maxevents, sizeof (events[0]));
950*4882a593Smuzhiyun   if (!events || !eventt || !counter)
951*4882a593Smuzhiyun     {
952*4882a593Smuzhiyun       grub_dprintf ("relocator", "events or counter allocation failed %d\n",
953*4882a593Smuzhiyun@@ -963,7 +963,7 @@ malloc_in_range (struct grub_relocator *rel,
954*4882a593Smuzhiyun #endif
955*4882a593Smuzhiyun     unsigned cural = 0;
956*4882a593Smuzhiyun     int oom = 0;
957*4882a593Smuzhiyun-    res->subchunks = grub_malloc (sizeof (res->subchunks[0]) * nallocs);
958*4882a593Smuzhiyun+    res->subchunks = grub_calloc (nallocs, sizeof (res->subchunks[0]));
959*4882a593Smuzhiyun     if (!res->subchunks)
960*4882a593Smuzhiyun       oom = 1;
961*4882a593Smuzhiyun     res->nsubchunks = nallocs;
962*4882a593Smuzhiyun@@ -1562,8 +1562,8 @@ grub_relocator_prepare_relocs (struct grub_relocator *rel, grub_addr_t addr,
963*4882a593Smuzhiyun 	    count[(chunk->src & 0xff) + 1]++;
964*4882a593Smuzhiyun 	  }
965*4882a593Smuzhiyun     }
966*4882a593Smuzhiyun-    from = grub_malloc (nchunks * sizeof (sorted[0]));
967*4882a593Smuzhiyun-    to = grub_malloc (nchunks * sizeof (sorted[0]));
968*4882a593Smuzhiyun+    from = grub_calloc (nchunks, sizeof (sorted[0]));
969*4882a593Smuzhiyun+    to = grub_calloc (nchunks, sizeof (sorted[0]));
970*4882a593Smuzhiyun     if (!from || !to)
971*4882a593Smuzhiyun       {
972*4882a593Smuzhiyun 	grub_free (from);
973*4882a593Smuzhiyundiff --git a/grub-core/lib/zstd/fse_decompress.c b/grub-core/lib/zstd/fse_decompress.c
974*4882a593Smuzhiyunindex 72bbead5b..2227b84bc 100644
975*4882a593Smuzhiyun--- a/grub-core/lib/zstd/fse_decompress.c
976*4882a593Smuzhiyun+++ b/grub-core/lib/zstd/fse_decompress.c
977*4882a593Smuzhiyun@@ -82,7 +82,7 @@
978*4882a593Smuzhiyun FSE_DTable* FSE_createDTable (unsigned tableLog)
979*4882a593Smuzhiyun {
980*4882a593Smuzhiyun     if (tableLog > FSE_TABLELOG_ABSOLUTE_MAX) tableLog = FSE_TABLELOG_ABSOLUTE_MAX;
981*4882a593Smuzhiyun-    return (FSE_DTable*)malloc( FSE_DTABLE_SIZE_U32(tableLog) * sizeof (U32) );
982*4882a593Smuzhiyun+    return (FSE_DTable*)calloc( FSE_DTABLE_SIZE_U32(tableLog), sizeof (U32) );
983*4882a593Smuzhiyun }
984*4882a593Smuzhiyun
985*4882a593Smuzhiyun void FSE_freeDTable (FSE_DTable* dt)
986*4882a593Smuzhiyundiff --git a/grub-core/loader/arm/linux.c b/grub-core/loader/arm/linux.c
987*4882a593Smuzhiyunindex 51684914c..d70c17486 100644
988*4882a593Smuzhiyun--- a/grub-core/loader/arm/linux.c
989*4882a593Smuzhiyun+++ b/grub-core/loader/arm/linux.c
990*4882a593Smuzhiyun@@ -78,7 +78,7 @@ linux_prepare_atag (void *target_atag)
991*4882a593Smuzhiyun
992*4882a593Smuzhiyun   /* some place for cmdline, initrd and terminator.  */
993*4882a593Smuzhiyun   tmp_size = get_atag_size (atag_orig) + 20 + (arg_size) / 4;
994*4882a593Smuzhiyun-  tmp_atag = grub_malloc (tmp_size * sizeof (grub_uint32_t));
995*4882a593Smuzhiyun+  tmp_atag = grub_calloc (tmp_size, sizeof (grub_uint32_t));
996*4882a593Smuzhiyun   if (!tmp_atag)
997*4882a593Smuzhiyun     return grub_errno;
998*4882a593Smuzhiyun
999*4882a593Smuzhiyundiff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
1000*4882a593Smuzhiyunindex cd92ea3f2..daf8c6b54 100644
1001*4882a593Smuzhiyun--- a/grub-core/loader/efi/chainloader.c
1002*4882a593Smuzhiyun+++ b/grub-core/loader/efi/chainloader.c
1003*4882a593Smuzhiyun@@ -116,7 +116,7 @@ copy_file_path (grub_efi_file_path_device_path_t *fp,
1004*4882a593Smuzhiyun   fp->header.type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE;
1005*4882a593Smuzhiyun   fp->header.subtype = GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE;
1006*4882a593Smuzhiyun
1007*4882a593Smuzhiyun-  path_name = grub_malloc (len * GRUB_MAX_UTF16_PER_UTF8 * sizeof (*path_name));
1008*4882a593Smuzhiyun+  path_name = grub_calloc (len, GRUB_MAX_UTF16_PER_UTF8 * sizeof (*path_name));
1009*4882a593Smuzhiyun   if (!path_name)
1010*4882a593Smuzhiyun     return;
1011*4882a593Smuzhiyun
1012*4882a593Smuzhiyundiff --git a/grub-core/loader/i386/bsdXX.c b/grub-core/loader/i386/bsdXX.c
1013*4882a593Smuzhiyunindex af6741d15..a8d8bf7da 100644
1014*4882a593Smuzhiyun--- a/grub-core/loader/i386/bsdXX.c
1015*4882a593Smuzhiyun+++ b/grub-core/loader/i386/bsdXX.c
1016*4882a593Smuzhiyun@@ -48,7 +48,7 @@ read_headers (grub_file_t file, const char *filename, Elf_Ehdr *e, char **shdr)
1017*4882a593Smuzhiyun   if (e->e_ident[EI_CLASS] != SUFFIX (ELFCLASS))
1018*4882a593Smuzhiyun     return grub_error (GRUB_ERR_BAD_OS, N_("invalid arch-dependent ELF magic"));
1019*4882a593Smuzhiyun
1020*4882a593Smuzhiyun-  *shdr = grub_malloc ((grub_uint32_t) e->e_shnum * e->e_shentsize);
1021*4882a593Smuzhiyun+  *shdr = grub_calloc (e->e_shnum, e->e_shentsize);
1022*4882a593Smuzhiyun   if (! *shdr)
1023*4882a593Smuzhiyun     return grub_errno;
1024*4882a593Smuzhiyun
1025*4882a593Smuzhiyundiff --git a/grub-core/loader/i386/xnu.c b/grub-core/loader/i386/xnu.c
1026*4882a593Smuzhiyunindex e64ed08f5..b7d176b5d 100644
1027*4882a593Smuzhiyun--- a/grub-core/loader/i386/xnu.c
1028*4882a593Smuzhiyun+++ b/grub-core/loader/i386/xnu.c
1029*4882a593Smuzhiyun@@ -295,7 +295,7 @@ grub_xnu_devprop_add_property_utf8 (struct grub_xnu_devprop_device_descriptor *d
1030*4882a593Smuzhiyun     return grub_errno;
1031*4882a593Smuzhiyun
1032*4882a593Smuzhiyun   len = grub_strlen (name);
1033*4882a593Smuzhiyun-  utf16 = grub_malloc (sizeof (grub_uint16_t) * len);
1034*4882a593Smuzhiyun+  utf16 = grub_calloc (len, sizeof (grub_uint16_t));
1035*4882a593Smuzhiyun   if (!utf16)
1036*4882a593Smuzhiyun     {
1037*4882a593Smuzhiyun       grub_free (utf8);
1038*4882a593Smuzhiyun@@ -331,7 +331,7 @@ grub_xnu_devprop_add_property_utf16 (struct grub_xnu_devprop_device_descriptor *
1039*4882a593Smuzhiyun   grub_uint16_t *utf16;
1040*4882a593Smuzhiyun   grub_err_t err;
1041*4882a593Smuzhiyun
1042*4882a593Smuzhiyun-  utf16 = grub_malloc (sizeof (grub_uint16_t) * namelen);
1043*4882a593Smuzhiyun+  utf16 = grub_calloc (namelen, sizeof (grub_uint16_t));
1044*4882a593Smuzhiyun   if (!utf16)
1045*4882a593Smuzhiyun     return grub_errno;
1046*4882a593Smuzhiyun   grub_memcpy (utf16, name, sizeof (grub_uint16_t) * namelen);
1047*4882a593Smuzhiyundiff --git a/grub-core/loader/macho.c b/grub-core/loader/macho.c
1048*4882a593Smuzhiyunindex 085f9c689..05710c48e 100644
1049*4882a593Smuzhiyun--- a/grub-core/loader/macho.c
1050*4882a593Smuzhiyun+++ b/grub-core/loader/macho.c
1051*4882a593Smuzhiyun@@ -97,7 +97,7 @@ grub_macho_file (grub_file_t file, const char *filename, int is_64bit)
1052*4882a593Smuzhiyun       if (grub_file_seek (macho->file, sizeof (struct grub_macho_fat_header))
1053*4882a593Smuzhiyun 	  == (grub_off_t) -1)
1054*4882a593Smuzhiyun 	goto fail;
1055*4882a593Smuzhiyun-      archs = grub_malloc (sizeof (struct grub_macho_fat_arch) * narchs);
1056*4882a593Smuzhiyun+      archs = grub_calloc (narchs, sizeof (struct grub_macho_fat_arch));
1057*4882a593Smuzhiyun       if (!archs)
1058*4882a593Smuzhiyun 	goto fail;
1059*4882a593Smuzhiyun       if (grub_file_read (macho->file, archs,
1060*4882a593Smuzhiyundiff --git a/grub-core/loader/multiboot_elfxx.c b/grub-core/loader/multiboot_elfxx.c
1061*4882a593Smuzhiyunindex 70cd1db51..cc6853692 100644
1062*4882a593Smuzhiyun--- a/grub-core/loader/multiboot_elfxx.c
1063*4882a593Smuzhiyun+++ b/grub-core/loader/multiboot_elfxx.c
1064*4882a593Smuzhiyun@@ -217,7 +217,7 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
1065*4882a593Smuzhiyun     {
1066*4882a593Smuzhiyun       grub_uint8_t *shdr, *shdrptr;
1067*4882a593Smuzhiyun
1068*4882a593Smuzhiyun-      shdr = grub_malloc ((grub_uint32_t) ehdr->e_shnum * ehdr->e_shentsize);
1069*4882a593Smuzhiyun+      shdr = grub_calloc (ehdr->e_shnum, ehdr->e_shentsize);
1070*4882a593Smuzhiyun       if (!shdr)
1071*4882a593Smuzhiyun 	return grub_errno;
1072*4882a593Smuzhiyun
1073*4882a593Smuzhiyundiff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c
1074*4882a593Smuzhiyunindex 7f74d1d6f..77d7060e1 100644
1075*4882a593Smuzhiyun--- a/grub-core/loader/xnu.c
1076*4882a593Smuzhiyun+++ b/grub-core/loader/xnu.c
1077*4882a593Smuzhiyun@@ -800,7 +800,7 @@ grub_cmd_xnu_mkext (grub_command_t cmd __attribute__ ((unused)),
1078*4882a593Smuzhiyun   if (grub_be_to_cpu32 (head.magic) == GRUB_MACHO_FAT_MAGIC)
1079*4882a593Smuzhiyun     {
1080*4882a593Smuzhiyun       narchs = grub_be_to_cpu32 (head.nfat_arch);
1081*4882a593Smuzhiyun-      archs = grub_malloc (sizeof (struct grub_macho_fat_arch) * narchs);
1082*4882a593Smuzhiyun+      archs = grub_calloc (narchs, sizeof (struct grub_macho_fat_arch));
1083*4882a593Smuzhiyun       if (! archs)
1084*4882a593Smuzhiyun 	{
1085*4882a593Smuzhiyun 	  grub_file_close (file);
1086*4882a593Smuzhiyundiff --git a/grub-core/mmap/mmap.c b/grub-core/mmap/mmap.c
1087*4882a593Smuzhiyunindex 6a31cbae3..57b4e9a72 100644
1088*4882a593Smuzhiyun--- a/grub-core/mmap/mmap.c
1089*4882a593Smuzhiyun+++ b/grub-core/mmap/mmap.c
1090*4882a593Smuzhiyun@@ -143,9 +143,9 @@ grub_mmap_iterate (grub_memory_hook_t hook, void *hook_data)
1091*4882a593Smuzhiyun
1092*4882a593Smuzhiyun   /* Initialize variables. */
1093*4882a593Smuzhiyun   ctx.scanline_events = (struct grub_mmap_scan *)
1094*4882a593Smuzhiyun-    grub_malloc (sizeof (struct grub_mmap_scan) * 2 * mmap_num);
1095*4882a593Smuzhiyun+    grub_calloc (mmap_num, sizeof (struct grub_mmap_scan) * 2);
1096*4882a593Smuzhiyun
1097*4882a593Smuzhiyun-  present = grub_zalloc (sizeof (present[0]) * current_priority);
1098*4882a593Smuzhiyun+  present = grub_calloc (current_priority, sizeof (present[0]));
1099*4882a593Smuzhiyun
1100*4882a593Smuzhiyun   if (! ctx.scanline_events || !present)
1101*4882a593Smuzhiyun     {
1102*4882a593Smuzhiyundiff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c
1103*4882a593Smuzhiyunindex 04cfbb045..653957200 100644
1104*4882a593Smuzhiyun--- a/grub-core/net/bootp.c
1105*4882a593Smuzhiyun+++ b/grub-core/net/bootp.c
1106*4882a593Smuzhiyun@@ -766,7 +766,7 @@ grub_cmd_bootp (struct grub_command *cmd __attribute__ ((unused)),
1107*4882a593Smuzhiyun   if (ncards == 0)
1108*4882a593Smuzhiyun     return grub_error (GRUB_ERR_NET_NO_CARD, N_("no network card found"));
1109*4882a593Smuzhiyun
1110*4882a593Smuzhiyun-  ifaces = grub_zalloc (ncards * sizeof (ifaces[0]));
1111*4882a593Smuzhiyun+  ifaces = grub_calloc (ncards, sizeof (ifaces[0]));
1112*4882a593Smuzhiyun   if (!ifaces)
1113*4882a593Smuzhiyun     return grub_errno;
1114*4882a593Smuzhiyun
1115*4882a593Smuzhiyundiff --git a/grub-core/net/dns.c b/grub-core/net/dns.c
1116*4882a593Smuzhiyunindex 5d9afe093..e332d5eb4 100644
1117*4882a593Smuzhiyun--- a/grub-core/net/dns.c
1118*4882a593Smuzhiyun+++ b/grub-core/net/dns.c
1119*4882a593Smuzhiyun@@ -285,8 +285,8 @@ recv_hook (grub_net_udp_socket_t sock __attribute__ ((unused)),
1120*4882a593Smuzhiyun       ptr++;
1121*4882a593Smuzhiyun       ptr += 4;
1122*4882a593Smuzhiyun     }
1123*4882a593Smuzhiyun-  *data->addresses = grub_malloc (sizeof ((*data->addresses)[0])
1124*4882a593Smuzhiyun-				 * grub_be_to_cpu16 (head->ancount));
1125*4882a593Smuzhiyun+  *data->addresses = grub_calloc (grub_be_to_cpu16 (head->ancount),
1126*4882a593Smuzhiyun+				  sizeof ((*data->addresses)[0]));
1127*4882a593Smuzhiyun   if (!*data->addresses)
1128*4882a593Smuzhiyun     {
1129*4882a593Smuzhiyun       grub_errno = GRUB_ERR_NONE;
1130*4882a593Smuzhiyun@@ -406,8 +406,8 @@ recv_hook (grub_net_udp_socket_t sock __attribute__ ((unused)),
1131*4882a593Smuzhiyun       dns_cache[h].addresses = 0;
1132*4882a593Smuzhiyun       dns_cache[h].name = grub_strdup (data->oname);
1133*4882a593Smuzhiyun       dns_cache[h].naddresses = *data->naddresses;
1134*4882a593Smuzhiyun-      dns_cache[h].addresses = grub_malloc (*data->naddresses
1135*4882a593Smuzhiyun-					    * sizeof (dns_cache[h].addresses[0]));
1136*4882a593Smuzhiyun+      dns_cache[h].addresses = grub_calloc (*data->naddresses,
1137*4882a593Smuzhiyun+					    sizeof (dns_cache[h].addresses[0]));
1138*4882a593Smuzhiyun       dns_cache[h].limit_time = grub_get_time_ms () + 1000 * ttl_all;
1139*4882a593Smuzhiyun       if (!dns_cache[h].addresses || !dns_cache[h].name)
1140*4882a593Smuzhiyun 	{
1141*4882a593Smuzhiyun@@ -479,7 +479,7 @@ grub_net_dns_lookup (const char *name,
1142*4882a593Smuzhiyun 	}
1143*4882a593Smuzhiyun     }
1144*4882a593Smuzhiyun
1145*4882a593Smuzhiyun-  sockets = grub_malloc (sizeof (sockets[0]) * n_servers);
1146*4882a593Smuzhiyun+  sockets = grub_calloc (n_servers, sizeof (sockets[0]));
1147*4882a593Smuzhiyun   if (!sockets)
1148*4882a593Smuzhiyun     return grub_errno;
1149*4882a593Smuzhiyun
1150*4882a593Smuzhiyundiff --git a/grub-core/net/net.c b/grub-core/net/net.c
1151*4882a593Smuzhiyunindex d5d726a31..38f19dfc9 100644
1152*4882a593Smuzhiyun--- a/grub-core/net/net.c
1153*4882a593Smuzhiyun+++ b/grub-core/net/net.c
1154*4882a593Smuzhiyun@@ -333,8 +333,8 @@ grub_cmd_ipv6_autoconf (struct grub_command *cmd __attribute__ ((unused)),
1155*4882a593Smuzhiyun     ncards++;
1156*4882a593Smuzhiyun   }
1157*4882a593Smuzhiyun
1158*4882a593Smuzhiyun-  ifaces = grub_zalloc (ncards * sizeof (ifaces[0]));
1159*4882a593Smuzhiyun-  slaacs = grub_zalloc (ncards * sizeof (slaacs[0]));
1160*4882a593Smuzhiyun+  ifaces = grub_calloc (ncards, sizeof (ifaces[0]));
1161*4882a593Smuzhiyun+  slaacs = grub_calloc (ncards, sizeof (slaacs[0]));
1162*4882a593Smuzhiyun   if (!ifaces || !slaacs)
1163*4882a593Smuzhiyun     {
1164*4882a593Smuzhiyun       grub_free (ifaces);
1165*4882a593Smuzhiyundiff --git a/grub-core/normal/charset.c b/grub-core/normal/charset.c
1166*4882a593Smuzhiyunindex b0ab47d73..d57fb72fa 100644
1167*4882a593Smuzhiyun--- a/grub-core/normal/charset.c
1168*4882a593Smuzhiyun+++ b/grub-core/normal/charset.c
1169*4882a593Smuzhiyun@@ -203,7 +203,7 @@ grub_utf8_to_ucs4_alloc (const char *msg, grub_uint32_t **unicode_msg,
1170*4882a593Smuzhiyun {
1171*4882a593Smuzhiyun   grub_size_t msg_len = grub_strlen (msg);
1172*4882a593Smuzhiyun
1173*4882a593Smuzhiyun-  *unicode_msg = grub_malloc (msg_len * sizeof (grub_uint32_t));
1174*4882a593Smuzhiyun+  *unicode_msg = grub_calloc (msg_len, sizeof (grub_uint32_t));
1175*4882a593Smuzhiyun
1176*4882a593Smuzhiyun   if (!*unicode_msg)
1177*4882a593Smuzhiyun     return -1;
1178*4882a593Smuzhiyun@@ -488,7 +488,7 @@ grub_unicode_aglomerate_comb (const grub_uint32_t *in, grub_size_t inlen,
1179*4882a593Smuzhiyun 	    }
1180*4882a593Smuzhiyun 	  else
1181*4882a593Smuzhiyun 	    {
1182*4882a593Smuzhiyun-	      n = grub_malloc (sizeof (n[0]) * (out->ncomb + 1));
1183*4882a593Smuzhiyun+	      n = grub_calloc (out->ncomb + 1, sizeof (n[0]));
1184*4882a593Smuzhiyun 	      if (!n)
1185*4882a593Smuzhiyun 		{
1186*4882a593Smuzhiyun 		  grub_errno = GRUB_ERR_NONE;
1187*4882a593Smuzhiyun@@ -842,7 +842,7 @@ grub_bidi_line_logical_to_visual (const grub_uint32_t *logical,
1188*4882a593Smuzhiyun       }							\
1189*4882a593Smuzhiyun   }
1190*4882a593Smuzhiyun
1191*4882a593Smuzhiyun-  visual = grub_malloc (sizeof (visual[0]) * logical_len);
1192*4882a593Smuzhiyun+  visual = grub_calloc (logical_len, sizeof (visual[0]));
1193*4882a593Smuzhiyun   if (!visual)
1194*4882a593Smuzhiyun     return -1;
1195*4882a593Smuzhiyun
1196*4882a593Smuzhiyun@@ -1165,8 +1165,8 @@ grub_bidi_logical_to_visual (const grub_uint32_t *logical,
1197*4882a593Smuzhiyun {
1198*4882a593Smuzhiyun   const grub_uint32_t *line_start = logical, *ptr;
1199*4882a593Smuzhiyun   struct grub_unicode_glyph *visual_ptr;
1200*4882a593Smuzhiyun-  *visual_out = visual_ptr = grub_malloc (3 * sizeof (visual_ptr[0])
1201*4882a593Smuzhiyun-					  * (logical_len + 2));
1202*4882a593Smuzhiyun+  *visual_out = visual_ptr = grub_calloc (logical_len + 2,
1203*4882a593Smuzhiyun+					  3 * sizeof (visual_ptr[0]));
1204*4882a593Smuzhiyun   if (!visual_ptr)
1205*4882a593Smuzhiyun     return -1;
1206*4882a593Smuzhiyun   for (ptr = logical; ptr <= logical + logical_len; ptr++)
1207*4882a593Smuzhiyundiff --git a/grub-core/normal/cmdline.c b/grub-core/normal/cmdline.c
1208*4882a593Smuzhiyunindex c037d5050..c57242e2e 100644
1209*4882a593Smuzhiyun--- a/grub-core/normal/cmdline.c
1210*4882a593Smuzhiyun+++ b/grub-core/normal/cmdline.c
1211*4882a593Smuzhiyun@@ -41,7 +41,7 @@ grub_err_t
1212*4882a593Smuzhiyun grub_set_history (int newsize)
1213*4882a593Smuzhiyun {
1214*4882a593Smuzhiyun   grub_uint32_t **old_hist_lines = hist_lines;
1215*4882a593Smuzhiyun-  hist_lines = grub_malloc (sizeof (grub_uint32_t *) * newsize);
1216*4882a593Smuzhiyun+  hist_lines = grub_calloc (newsize, sizeof (grub_uint32_t *));
1217*4882a593Smuzhiyun
1218*4882a593Smuzhiyun   /* Copy the old lines into the new buffer.  */
1219*4882a593Smuzhiyun   if (old_hist_lines)
1220*4882a593Smuzhiyun@@ -114,7 +114,7 @@ static void
1221*4882a593Smuzhiyun grub_history_set (int pos, grub_uint32_t *s, grub_size_t len)
1222*4882a593Smuzhiyun {
1223*4882a593Smuzhiyun   grub_free (hist_lines[pos]);
1224*4882a593Smuzhiyun-  hist_lines[pos] = grub_malloc ((len + 1) * sizeof (grub_uint32_t));
1225*4882a593Smuzhiyun+  hist_lines[pos] = grub_calloc (len + 1, sizeof (grub_uint32_t));
1226*4882a593Smuzhiyun   if (!hist_lines[pos])
1227*4882a593Smuzhiyun     {
1228*4882a593Smuzhiyun       grub_print_error ();
1229*4882a593Smuzhiyun@@ -349,7 +349,7 @@ grub_cmdline_get (const char *prompt_translated)
1230*4882a593Smuzhiyun   char *ret;
1231*4882a593Smuzhiyun   unsigned nterms;
1232*4882a593Smuzhiyun
1233*4882a593Smuzhiyun-  buf = grub_malloc (max_len * sizeof (grub_uint32_t));
1234*4882a593Smuzhiyun+  buf = grub_calloc (max_len, sizeof (grub_uint32_t));
1235*4882a593Smuzhiyun   if (!buf)
1236*4882a593Smuzhiyun     return 0;
1237*4882a593Smuzhiyun
1238*4882a593Smuzhiyun@@ -377,7 +377,7 @@ grub_cmdline_get (const char *prompt_translated)
1239*4882a593Smuzhiyun     FOR_ACTIVE_TERM_OUTPUTS(cur)
1240*4882a593Smuzhiyun       nterms++;
1241*4882a593Smuzhiyun
1242*4882a593Smuzhiyun-    cl_terms = grub_malloc (sizeof (cl_terms[0]) * nterms);
1243*4882a593Smuzhiyun+    cl_terms = grub_calloc (nterms, sizeof (cl_terms[0]));
1244*4882a593Smuzhiyun     if (!cl_terms)
1245*4882a593Smuzhiyun       {
1246*4882a593Smuzhiyun 	grub_free (buf);
1247*4882a593Smuzhiyun@@ -385,7 +385,7 @@ grub_cmdline_get (const char *prompt_translated)
1248*4882a593Smuzhiyun       }
1249*4882a593Smuzhiyun     cl_term_cur = cl_terms;
1250*4882a593Smuzhiyun
1251*4882a593Smuzhiyun-    unicode_msg = grub_malloc (msg_len * sizeof (grub_uint32_t));
1252*4882a593Smuzhiyun+    unicode_msg = grub_calloc (msg_len, sizeof (grub_uint32_t));
1253*4882a593Smuzhiyun     if (!unicode_msg)
1254*4882a593Smuzhiyun       {
1255*4882a593Smuzhiyun 	grub_free (buf);
1256*4882a593Smuzhiyun@@ -495,7 +495,7 @@ grub_cmdline_get (const char *prompt_translated)
1257*4882a593Smuzhiyun 		grub_uint32_t *insert;
1258*4882a593Smuzhiyun
1259*4882a593Smuzhiyun 		insertlen = grub_strlen (insertu8);
1260*4882a593Smuzhiyun-		insert = grub_malloc ((insertlen + 1) * sizeof (grub_uint32_t));
1261*4882a593Smuzhiyun+		insert = grub_calloc (insertlen + 1, sizeof (grub_uint32_t));
1262*4882a593Smuzhiyun 		if (!insert)
1263*4882a593Smuzhiyun 		  {
1264*4882a593Smuzhiyun 		    grub_free (insertu8);
1265*4882a593Smuzhiyun@@ -602,7 +602,7 @@ grub_cmdline_get (const char *prompt_translated)
1266*4882a593Smuzhiyun
1267*4882a593Smuzhiyun 	      grub_free (kill_buf);
1268*4882a593Smuzhiyun
1269*4882a593Smuzhiyun-	      kill_buf = grub_malloc ((n + 1) * sizeof(grub_uint32_t));
1270*4882a593Smuzhiyun+	      kill_buf = grub_calloc (n + 1, sizeof (grub_uint32_t));
1271*4882a593Smuzhiyun 	      if (grub_errno)
1272*4882a593Smuzhiyun 		{
1273*4882a593Smuzhiyun 		  grub_print_error ();
1274*4882a593Smuzhiyundiff --git a/grub-core/normal/menu_entry.c b/grub-core/normal/menu_entry.c
1275*4882a593Smuzhiyunindex cdf3590a3..1993995be 100644
1276*4882a593Smuzhiyun--- a/grub-core/normal/menu_entry.c
1277*4882a593Smuzhiyun+++ b/grub-core/normal/menu_entry.c
1278*4882a593Smuzhiyun@@ -95,8 +95,8 @@ init_line (struct screen *screen, struct line *linep)
1279*4882a593Smuzhiyun {
1280*4882a593Smuzhiyun   linep->len = 0;
1281*4882a593Smuzhiyun   linep->max_len = 80;
1282*4882a593Smuzhiyun-  linep->buf = grub_malloc ((linep->max_len + 1) * sizeof (linep->buf[0]));
1283*4882a593Smuzhiyun-  linep->pos = grub_zalloc (screen->nterms * sizeof (linep->pos[0]));
1284*4882a593Smuzhiyun+  linep->buf = grub_calloc (linep->max_len + 1, sizeof (linep->buf[0]));
1285*4882a593Smuzhiyun+  linep->pos = grub_calloc (screen->nterms, sizeof (linep->pos[0]));
1286*4882a593Smuzhiyun   if (! linep->buf || !linep->pos)
1287*4882a593Smuzhiyun     {
1288*4882a593Smuzhiyun       grub_free (linep->buf);
1289*4882a593Smuzhiyun@@ -287,7 +287,7 @@ update_screen (struct screen *screen, struct per_term_screen *term_screen,
1290*4882a593Smuzhiyun 	  pos = linep->pos + (term_screen - screen->terms);
1291*4882a593Smuzhiyun
1292*4882a593Smuzhiyun 	  if (!*pos)
1293*4882a593Smuzhiyun-	    *pos = grub_zalloc ((linep->len + 1) * sizeof (**pos));
1294*4882a593Smuzhiyun+	    *pos = grub_calloc (linep->len + 1, sizeof (**pos));
1295*4882a593Smuzhiyun
1296*4882a593Smuzhiyun 	  if (i == region_start || linep == screen->lines + screen->line
1297*4882a593Smuzhiyun 	      || (i > region_start && mode == ALL_LINES))
1298*4882a593Smuzhiyun@@ -471,7 +471,7 @@ insert_string (struct screen *screen, const char *s, int update)
1299*4882a593Smuzhiyun
1300*4882a593Smuzhiyun 	  /* Insert the string.  */
1301*4882a593Smuzhiyun 	  current_linep = screen->lines + screen->line;
1302*4882a593Smuzhiyun-	  unicode_msg = grub_malloc ((p - s) * sizeof (grub_uint32_t));
1303*4882a593Smuzhiyun+	  unicode_msg = grub_calloc (p - s, sizeof (grub_uint32_t));
1304*4882a593Smuzhiyun
1305*4882a593Smuzhiyun 	  if (!unicode_msg)
1306*4882a593Smuzhiyun 	    return 0;
1307*4882a593Smuzhiyun@@ -1023,7 +1023,7 @@ complete (struct screen *screen, int continuous, int update)
1308*4882a593Smuzhiyun   if (completion_buffer.buf)
1309*4882a593Smuzhiyun     {
1310*4882a593Smuzhiyun       buflen = grub_strlen (completion_buffer.buf);
1311*4882a593Smuzhiyun-      ucs4 = grub_malloc (sizeof (grub_uint32_t) * (buflen + 1));
1312*4882a593Smuzhiyun+      ucs4 = grub_calloc (buflen + 1, sizeof (grub_uint32_t));
1313*4882a593Smuzhiyun
1314*4882a593Smuzhiyun       if (!ucs4)
1315*4882a593Smuzhiyun 	{
1316*4882a593Smuzhiyun@@ -1268,7 +1268,7 @@ grub_menu_entry_run (grub_menu_entry_t entry)
1317*4882a593Smuzhiyun   for (i = 0; i < (unsigned) screen->num_lines; i++)
1318*4882a593Smuzhiyun     {
1319*4882a593Smuzhiyun       grub_free (screen->lines[i].pos);
1320*4882a593Smuzhiyun-      screen->lines[i].pos = grub_zalloc (screen->nterms * sizeof (screen->lines[i].pos[0]));
1321*4882a593Smuzhiyun+      screen->lines[i].pos = grub_calloc (screen->nterms, sizeof (screen->lines[i].pos[0]));
1322*4882a593Smuzhiyun       if (! screen->lines[i].pos)
1323*4882a593Smuzhiyun 	{
1324*4882a593Smuzhiyun 	  grub_print_error ();
1325*4882a593Smuzhiyun@@ -1278,7 +1278,7 @@ grub_menu_entry_run (grub_menu_entry_t entry)
1326*4882a593Smuzhiyun 	}
1327*4882a593Smuzhiyun     }
1328*4882a593Smuzhiyun
1329*4882a593Smuzhiyun-  screen->terms = grub_zalloc (screen->nterms * sizeof (screen->terms[0]));
1330*4882a593Smuzhiyun+  screen->terms = grub_calloc (screen->nterms, sizeof (screen->terms[0]));
1331*4882a593Smuzhiyun   if (!screen->terms)
1332*4882a593Smuzhiyun     {
1333*4882a593Smuzhiyun       grub_print_error ();
1334*4882a593Smuzhiyundiff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
1335*4882a593Smuzhiyunindex e22bb91f6..18240e76c 100644
1336*4882a593Smuzhiyun--- a/grub-core/normal/menu_text.c
1337*4882a593Smuzhiyun+++ b/grub-core/normal/menu_text.c
1338*4882a593Smuzhiyun@@ -78,7 +78,7 @@ grub_print_message_indented_real (const char *msg, int margin_left,
1339*4882a593Smuzhiyun   grub_size_t msg_len = grub_strlen (msg) + 2;
1340*4882a593Smuzhiyun   int ret = 0;
1341*4882a593Smuzhiyun
1342*4882a593Smuzhiyun-  unicode_msg = grub_malloc (msg_len * sizeof (grub_uint32_t));
1343*4882a593Smuzhiyun+  unicode_msg = grub_calloc (msg_len, sizeof (grub_uint32_t));
1344*4882a593Smuzhiyun
1345*4882a593Smuzhiyun   if (!unicode_msg)
1346*4882a593Smuzhiyun     return 0;
1347*4882a593Smuzhiyun@@ -211,7 +211,7 @@ print_entry (int y, int highlight, grub_menu_entry_t entry,
1348*4882a593Smuzhiyun
1349*4882a593Smuzhiyun   title = entry ? entry->title : "";
1350*4882a593Smuzhiyun   title_len = grub_strlen (title);
1351*4882a593Smuzhiyun-  unicode_title = grub_malloc (title_len * sizeof (*unicode_title));
1352*4882a593Smuzhiyun+  unicode_title = grub_calloc (title_len, sizeof (*unicode_title));
1353*4882a593Smuzhiyun   if (! unicode_title)
1354*4882a593Smuzhiyun     /* XXX How to show this error?  */
1355*4882a593Smuzhiyun     return;
1356*4882a593Smuzhiyundiff --git a/grub-core/normal/term.c b/grub-core/normal/term.c
1357*4882a593Smuzhiyunindex a1e5c5a0d..cc8c173b6 100644
1358*4882a593Smuzhiyun--- a/grub-core/normal/term.c
1359*4882a593Smuzhiyun+++ b/grub-core/normal/term.c
1360*4882a593Smuzhiyun@@ -264,7 +264,7 @@ grub_term_save_pos (void)
1361*4882a593Smuzhiyun   FOR_ACTIVE_TERM_OUTPUTS(cur)
1362*4882a593Smuzhiyun     cnt++;
1363*4882a593Smuzhiyun
1364*4882a593Smuzhiyun-  ret = grub_malloc (cnt * sizeof (ret[0]));
1365*4882a593Smuzhiyun+  ret = grub_calloc (cnt, sizeof (ret[0]));
1366*4882a593Smuzhiyun   if (!ret)
1367*4882a593Smuzhiyun     return NULL;
1368*4882a593Smuzhiyun
1369*4882a593Smuzhiyun@@ -1013,7 +1013,7 @@ grub_xnputs (const char *str, grub_size_t msg_len)
1370*4882a593Smuzhiyun
1371*4882a593Smuzhiyun   grub_error_push ();
1372*4882a593Smuzhiyun
1373*4882a593Smuzhiyun-  unicode_str = grub_malloc (msg_len * sizeof (grub_uint32_t));
1374*4882a593Smuzhiyun+  unicode_str = grub_calloc (msg_len, sizeof (grub_uint32_t));
1375*4882a593Smuzhiyun
1376*4882a593Smuzhiyun   grub_error_pop ();
1377*4882a593Smuzhiyun
1378*4882a593Smuzhiyundiff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
1379*4882a593Smuzhiyunindex 90d92d3ad..5b41ad022 100644
1380*4882a593Smuzhiyun--- a/grub-core/osdep/linux/getroot.c
1381*4882a593Smuzhiyun+++ b/grub-core/osdep/linux/getroot.c
1382*4882a593Smuzhiyun@@ -168,7 +168,7 @@ grub_util_raid_getmembers (const char *name, int bootable)
1383*4882a593Smuzhiyun   if (ret != 0)
1384*4882a593Smuzhiyun     grub_util_error (_("ioctl GET_ARRAY_INFO error: %s"), strerror (errno));
1385*4882a593Smuzhiyun
1386*4882a593Smuzhiyun-  devicelist = xmalloc ((info.nr_disks + 1) * sizeof (char *));
1387*4882a593Smuzhiyun+  devicelist = xcalloc (info.nr_disks + 1, sizeof (char *));
1388*4882a593Smuzhiyun
1389*4882a593Smuzhiyun   for (i = 0, j = 0; j < info.nr_disks; i++)
1390*4882a593Smuzhiyun     {
1391*4882a593Smuzhiyun@@ -241,7 +241,7 @@ grub_find_root_devices_from_btrfs (const char *dir)
1392*4882a593Smuzhiyun       return NULL;
1393*4882a593Smuzhiyun     }
1394*4882a593Smuzhiyun
1395*4882a593Smuzhiyun-  ret = xmalloc ((fsi.num_devices + 1) * sizeof (ret[0]));
1396*4882a593Smuzhiyun+  ret = xcalloc (fsi.num_devices + 1, sizeof (ret[0]));
1397*4882a593Smuzhiyun
1398*4882a593Smuzhiyun   for (i = 1; i <= fsi.max_id && j < fsi.num_devices; i++)
1399*4882a593Smuzhiyun     {
1400*4882a593Smuzhiyun@@ -396,7 +396,7 @@ grub_find_root_devices_from_mountinfo (const char *dir, char **relroot)
1401*4882a593Smuzhiyun   if (relroot)
1402*4882a593Smuzhiyun     *relroot = NULL;
1403*4882a593Smuzhiyun
1404*4882a593Smuzhiyun-  entries = xmalloc (entry_max * sizeof (*entries));
1405*4882a593Smuzhiyun+  entries = xcalloc (entry_max, sizeof (*entries));
1406*4882a593Smuzhiyun
1407*4882a593Smuzhiyun again:
1408*4882a593Smuzhiyun   fp = grub_util_fopen ("/proc/self/mountinfo", "r");
1409*4882a593Smuzhiyundiff --git a/grub-core/osdep/unix/config.c b/grub-core/osdep/unix/config.c
1410*4882a593Smuzhiyunindex 65effa9f3..7d6325138 100644
1411*4882a593Smuzhiyun--- a/grub-core/osdep/unix/config.c
1412*4882a593Smuzhiyun+++ b/grub-core/osdep/unix/config.c
1413*4882a593Smuzhiyun@@ -89,7 +89,7 @@ grub_util_load_config (struct grub_util_config *cfg)
1414*4882a593Smuzhiyun   argv[0] = "sh";
1415*4882a593Smuzhiyun   argv[1] = "-c";
1416*4882a593Smuzhiyun
1417*4882a593Smuzhiyun-  script = xmalloc (4 * strlen (cfgfile) + 300);
1418*4882a593Smuzhiyun+  script = xcalloc (4, strlen (cfgfile) + 300);
1419*4882a593Smuzhiyun
1420*4882a593Smuzhiyun   ptr = script;
1421*4882a593Smuzhiyun   memcpy (ptr, ". '", 3);
1422*4882a593Smuzhiyundiff --git a/grub-core/osdep/windows/getroot.c b/grub-core/osdep/windows/getroot.c
1423*4882a593Smuzhiyunindex 661d95461..eada663b2 100644
1424*4882a593Smuzhiyun--- a/grub-core/osdep/windows/getroot.c
1425*4882a593Smuzhiyun+++ b/grub-core/osdep/windows/getroot.c
1426*4882a593Smuzhiyun@@ -59,7 +59,7 @@ grub_get_mount_point (const TCHAR *path)
1427*4882a593Smuzhiyun
1428*4882a593Smuzhiyun   for (ptr = path; *ptr; ptr++);
1429*4882a593Smuzhiyun   allocsize = (ptr - path + 10) * 2;
1430*4882a593Smuzhiyun-  out = xmalloc (allocsize * sizeof (out[0]));
1431*4882a593Smuzhiyun+  out = xcalloc (allocsize, sizeof (out[0]));
1432*4882a593Smuzhiyun
1433*4882a593Smuzhiyun   /* When pointing to EFI system partition GetVolumePathName fails
1434*4882a593Smuzhiyun      for ESP root and returns abberant information for everything
1435*4882a593Smuzhiyundiff --git a/grub-core/osdep/windows/hostdisk.c b/grub-core/osdep/windows/hostdisk.c
1436*4882a593Smuzhiyunindex 355100789..0be327394 100644
1437*4882a593Smuzhiyun--- a/grub-core/osdep/windows/hostdisk.c
1438*4882a593Smuzhiyun+++ b/grub-core/osdep/windows/hostdisk.c
1439*4882a593Smuzhiyun@@ -111,7 +111,7 @@ grub_util_get_windows_path_real (const char *path)
1440*4882a593Smuzhiyun
1441*4882a593Smuzhiyun   while (1)
1442*4882a593Smuzhiyun     {
1443*4882a593Smuzhiyun-      fpa = xmalloc (alloc * sizeof (fpa[0]));
1444*4882a593Smuzhiyun+      fpa = xcalloc (alloc, sizeof (fpa[0]));
1445*4882a593Smuzhiyun
1446*4882a593Smuzhiyun       len = GetFullPathName (tpath, alloc, fpa, NULL);
1447*4882a593Smuzhiyun       if (len >= alloc)
1448*4882a593Smuzhiyun@@ -399,7 +399,7 @@ grub_util_fd_opendir (const char *name)
1449*4882a593Smuzhiyun   for (l = 0; name_windows[l]; l++);
1450*4882a593Smuzhiyun   for (l--; l >= 0 && (name_windows[l] == '\\' || name_windows[l] == '/'); l--);
1451*4882a593Smuzhiyun   l++;
1452*4882a593Smuzhiyun-  pattern = xmalloc ((l + 3) * sizeof (pattern[0]));
1453*4882a593Smuzhiyun+  pattern = xcalloc (l + 3, sizeof (pattern[0]));
1454*4882a593Smuzhiyun   memcpy (pattern, name_windows, l * sizeof (pattern[0]));
1455*4882a593Smuzhiyun   pattern[l] = '\\';
1456*4882a593Smuzhiyun   pattern[l + 1] = '*';
1457*4882a593Smuzhiyundiff --git a/grub-core/osdep/windows/init.c b/grub-core/osdep/windows/init.c
1458*4882a593Smuzhiyunindex e8ffd62c6..6297de632 100644
1459*4882a593Smuzhiyun--- a/grub-core/osdep/windows/init.c
1460*4882a593Smuzhiyun+++ b/grub-core/osdep/windows/init.c
1461*4882a593Smuzhiyun@@ -161,7 +161,7 @@ grub_util_host_init (int *argc __attribute__ ((unused)),
1462*4882a593Smuzhiyun   LPWSTR *targv;
1463*4882a593Smuzhiyun
1464*4882a593Smuzhiyun   targv = CommandLineToArgvW (tcmdline, argc);
1465*4882a593Smuzhiyun-  *argv = xmalloc ((*argc + 1) * sizeof (argv[0]));
1466*4882a593Smuzhiyun+  *argv = xcalloc (*argc + 1, sizeof (argv[0]));
1467*4882a593Smuzhiyun
1468*4882a593Smuzhiyun   for (i = 0; i < *argc; i++)
1469*4882a593Smuzhiyun     (*argv)[i] = grub_util_tchar_to_utf8 (targv[i]);
1470*4882a593Smuzhiyundiff --git a/grub-core/osdep/windows/platform.c b/grub-core/osdep/windows/platform.c
1471*4882a593Smuzhiyunindex 7eb53fe01..1ef86bf58 100644
1472*4882a593Smuzhiyun--- a/grub-core/osdep/windows/platform.c
1473*4882a593Smuzhiyun+++ b/grub-core/osdep/windows/platform.c
1474*4882a593Smuzhiyun@@ -225,8 +225,8 @@ grub_install_register_efi (grub_device_t efidir_grub_dev,
1475*4882a593Smuzhiyun     grub_util_error ("%s", _("no EFI routines are available when running in BIOS mode"));
1476*4882a593Smuzhiyun
1477*4882a593Smuzhiyun   distrib8_len = grub_strlen (efi_distributor);
1478*4882a593Smuzhiyun-  distributor16 = xmalloc ((distrib8_len + 1) * GRUB_MAX_UTF16_PER_UTF8
1479*4882a593Smuzhiyun-			   * sizeof (grub_uint16_t));
1480*4882a593Smuzhiyun+  distributor16 = xcalloc (distrib8_len + 1,
1481*4882a593Smuzhiyun+			   GRUB_MAX_UTF16_PER_UTF8 * sizeof (grub_uint16_t));
1482*4882a593Smuzhiyun   distrib16_len = grub_utf8_to_utf16 (distributor16, distrib8_len * GRUB_MAX_UTF16_PER_UTF8,
1483*4882a593Smuzhiyun 				      (const grub_uint8_t *) efi_distributor,
1484*4882a593Smuzhiyun 				      distrib8_len, 0);
1485*4882a593Smuzhiyundiff --git a/grub-core/osdep/windows/relpath.c b/grub-core/osdep/windows/relpath.c
1486*4882a593Smuzhiyunindex cb0861744..478e8ef14 100644
1487*4882a593Smuzhiyun--- a/grub-core/osdep/windows/relpath.c
1488*4882a593Smuzhiyun+++ b/grub-core/osdep/windows/relpath.c
1489*4882a593Smuzhiyun@@ -72,7 +72,7 @@ grub_make_system_path_relative_to_its_root (const char *path)
1490*4882a593Smuzhiyun       if (dirwindows[0] && dirwindows[1] == ':')
1491*4882a593Smuzhiyun 	offset = 2;
1492*4882a593Smuzhiyun     }
1493*4882a593Smuzhiyun-  ret = xmalloc (sizeof (ret[0]) * (flen - offset + 2));
1494*4882a593Smuzhiyun+  ret = xcalloc (flen - offset + 2, sizeof (ret[0]));
1495*4882a593Smuzhiyun   if (dirwindows[offset] != '\\'
1496*4882a593Smuzhiyun       && dirwindows[offset] != '/'
1497*4882a593Smuzhiyun       && dirwindows[offset])
1498*4882a593Smuzhiyundiff --git a/grub-core/partmap/gpt.c b/grub-core/partmap/gpt.c
1499*4882a593Smuzhiyunindex 103f6796f..72a2e37cd 100644
1500*4882a593Smuzhiyun--- a/grub-core/partmap/gpt.c
1501*4882a593Smuzhiyun+++ b/grub-core/partmap/gpt.c
1502*4882a593Smuzhiyun@@ -199,7 +199,7 @@ gpt_partition_map_embed (struct grub_disk *disk, unsigned int *nsectors,
1503*4882a593Smuzhiyun   *nsectors = ctx.len;
1504*4882a593Smuzhiyun   if (*nsectors > max_nsectors)
1505*4882a593Smuzhiyun     *nsectors = max_nsectors;
1506*4882a593Smuzhiyun-  *sectors = grub_malloc (*nsectors * sizeof (**sectors));
1507*4882a593Smuzhiyun+  *sectors = grub_calloc (*nsectors, sizeof (**sectors));
1508*4882a593Smuzhiyun   if (!*sectors)
1509*4882a593Smuzhiyun     return grub_errno;
1510*4882a593Smuzhiyun   for (i = 0; i < *nsectors; i++)
1511*4882a593Smuzhiyundiff --git a/grub-core/partmap/msdos.c b/grub-core/partmap/msdos.c
1512*4882a593Smuzhiyunindex 7b8e45076..ee3f24982 100644
1513*4882a593Smuzhiyun--- a/grub-core/partmap/msdos.c
1514*4882a593Smuzhiyun+++ b/grub-core/partmap/msdos.c
1515*4882a593Smuzhiyun@@ -337,7 +337,7 @@ pc_partition_map_embed (struct grub_disk *disk, unsigned int *nsectors,
1516*4882a593Smuzhiyun       avail_nsectors = *nsectors;
1517*4882a593Smuzhiyun       if (*nsectors > max_nsectors)
1518*4882a593Smuzhiyun 	*nsectors = max_nsectors;
1519*4882a593Smuzhiyun-      *sectors = grub_malloc (*nsectors * sizeof (**sectors));
1520*4882a593Smuzhiyun+      *sectors = grub_calloc (*nsectors, sizeof (**sectors));
1521*4882a593Smuzhiyun       if (!*sectors)
1522*4882a593Smuzhiyun 	return grub_errno;
1523*4882a593Smuzhiyun       for (i = 0; i < *nsectors; i++)
1524*4882a593Smuzhiyundiff --git a/grub-core/script/execute.c b/grub-core/script/execute.c
1525*4882a593Smuzhiyunindex ee299fd0e..c8d6806fe 100644
1526*4882a593Smuzhiyun--- a/grub-core/script/execute.c
1527*4882a593Smuzhiyun+++ b/grub-core/script/execute.c
1528*4882a593Smuzhiyun@@ -553,7 +553,7 @@ gettext_append (struct grub_script_argv *result, const char *orig_str)
1529*4882a593Smuzhiyun   for (iptr = orig_str; *iptr; iptr++)
1530*4882a593Smuzhiyun     if (*iptr == '$')
1531*4882a593Smuzhiyun       dollar_cnt++;
1532*4882a593Smuzhiyun-  ctx.allowed_strings = grub_malloc (sizeof (ctx.allowed_strings[0]) * dollar_cnt);
1533*4882a593Smuzhiyun+  ctx.allowed_strings = grub_calloc (dollar_cnt, sizeof (ctx.allowed_strings[0]));
1534*4882a593Smuzhiyun
1535*4882a593Smuzhiyun   if (parse_string (orig_str, gettext_save_allow, &ctx, 0))
1536*4882a593Smuzhiyun     goto fail;
1537*4882a593Smuzhiyundiff --git a/grub-core/tests/fake_input.c b/grub-core/tests/fake_input.c
1538*4882a593Smuzhiyunindex 2d6085298..b5eb516be 100644
1539*4882a593Smuzhiyun--- a/grub-core/tests/fake_input.c
1540*4882a593Smuzhiyun+++ b/grub-core/tests/fake_input.c
1541*4882a593Smuzhiyun@@ -49,7 +49,7 @@ grub_terminal_input_fake_sequence (int *seq_in, int nseq_in)
1542*4882a593Smuzhiyun     saved = grub_term_inputs;
1543*4882a593Smuzhiyun   if (seq)
1544*4882a593Smuzhiyun     grub_free (seq);
1545*4882a593Smuzhiyun-  seq = grub_malloc (nseq_in * sizeof (seq[0]));
1546*4882a593Smuzhiyun+  seq = grub_calloc (nseq_in, sizeof (seq[0]));
1547*4882a593Smuzhiyun   if (!seq)
1548*4882a593Smuzhiyun     return;
1549*4882a593Smuzhiyun
1550*4882a593Smuzhiyundiff --git a/grub-core/tests/video_checksum.c b/grub-core/tests/video_checksum.c
1551*4882a593Smuzhiyunindex 74d5b65e5..44d081069 100644
1552*4882a593Smuzhiyun--- a/grub-core/tests/video_checksum.c
1553*4882a593Smuzhiyun+++ b/grub-core/tests/video_checksum.c
1554*4882a593Smuzhiyun@@ -336,7 +336,7 @@ grub_video_capture_write_bmp (const char *fname,
1555*4882a593Smuzhiyun     {
1556*4882a593Smuzhiyun     case 4:
1557*4882a593Smuzhiyun       {
1558*4882a593Smuzhiyun-	grub_uint8_t *buffer = xmalloc (mode_info->width * 3);
1559*4882a593Smuzhiyun+	grub_uint8_t *buffer = xcalloc (3, mode_info->width);
1560*4882a593Smuzhiyun 	grub_uint32_t rmask = ((1 << mode_info->red_mask_size) - 1);
1561*4882a593Smuzhiyun 	grub_uint32_t gmask = ((1 << mode_info->green_mask_size) - 1);
1562*4882a593Smuzhiyun 	grub_uint32_t bmask = ((1 << mode_info->blue_mask_size) - 1);
1563*4882a593Smuzhiyun@@ -367,7 +367,7 @@ grub_video_capture_write_bmp (const char *fname,
1564*4882a593Smuzhiyun       }
1565*4882a593Smuzhiyun     case 3:
1566*4882a593Smuzhiyun       {
1567*4882a593Smuzhiyun-	grub_uint8_t *buffer = xmalloc (mode_info->width * 3);
1568*4882a593Smuzhiyun+	grub_uint8_t *buffer = xcalloc (3, mode_info->width);
1569*4882a593Smuzhiyun 	grub_uint32_t rmask = ((1 << mode_info->red_mask_size) - 1);
1570*4882a593Smuzhiyun 	grub_uint32_t gmask = ((1 << mode_info->green_mask_size) - 1);
1571*4882a593Smuzhiyun 	grub_uint32_t bmask = ((1 << mode_info->blue_mask_size) - 1);
1572*4882a593Smuzhiyun@@ -407,7 +407,7 @@ grub_video_capture_write_bmp (const char *fname,
1573*4882a593Smuzhiyun       }
1574*4882a593Smuzhiyun     case 2:
1575*4882a593Smuzhiyun       {
1576*4882a593Smuzhiyun-	grub_uint8_t *buffer = xmalloc (mode_info->width * 3);
1577*4882a593Smuzhiyun+	grub_uint8_t *buffer = xcalloc (3, mode_info->width);
1578*4882a593Smuzhiyun 	grub_uint16_t rmask = ((1 << mode_info->red_mask_size) - 1);
1579*4882a593Smuzhiyun 	grub_uint16_t gmask = ((1 << mode_info->green_mask_size) - 1);
1580*4882a593Smuzhiyun 	grub_uint16_t bmask = ((1 << mode_info->blue_mask_size) - 1);
1581*4882a593Smuzhiyundiff --git a/grub-core/video/capture.c b/grub-core/video/capture.c
1582*4882a593Smuzhiyunindex 4f83c7441..4d3195e01 100644
1583*4882a593Smuzhiyun--- a/grub-core/video/capture.c
1584*4882a593Smuzhiyun+++ b/grub-core/video/capture.c
1585*4882a593Smuzhiyun@@ -89,7 +89,7 @@ grub_video_capture_start (const struct grub_video_mode_info *mode_info,
1586*4882a593Smuzhiyun   framebuffer.mode_info = *mode_info;
1587*4882a593Smuzhiyun   framebuffer.mode_info.blit_format = grub_video_get_blit_format (&framebuffer.mode_info);
1588*4882a593Smuzhiyun
1589*4882a593Smuzhiyun-  framebuffer.ptr = grub_malloc (framebuffer.mode_info.height * framebuffer.mode_info.pitch);
1590*4882a593Smuzhiyun+  framebuffer.ptr = grub_calloc (framebuffer.mode_info.height, framebuffer.mode_info.pitch);
1591*4882a593Smuzhiyun   if (!framebuffer.ptr)
1592*4882a593Smuzhiyun     return grub_errno;
1593*4882a593Smuzhiyun
1594*4882a593Smuzhiyundiff --git a/grub-core/video/emu/sdl.c b/grub-core/video/emu/sdl.c
1595*4882a593Smuzhiyunindex a2f639f66..0ebab6f57 100644
1596*4882a593Smuzhiyun--- a/grub-core/video/emu/sdl.c
1597*4882a593Smuzhiyun+++ b/grub-core/video/emu/sdl.c
1598*4882a593Smuzhiyun@@ -172,7 +172,7 @@ grub_video_sdl_set_palette (unsigned int start, unsigned int count,
1599*4882a593Smuzhiyun       if (start + count > mode_info.number_of_colors)
1600*4882a593Smuzhiyun 	count = mode_info.number_of_colors - start;
1601*4882a593Smuzhiyun
1602*4882a593Smuzhiyun-      tmp = grub_malloc (count * sizeof (tmp[0]));
1603*4882a593Smuzhiyun+      tmp = grub_calloc (count, sizeof (tmp[0]));
1604*4882a593Smuzhiyun       for (i = 0; i < count; i++)
1605*4882a593Smuzhiyun 	{
1606*4882a593Smuzhiyun 	  tmp[i].r = palette_data[i].r;
1607*4882a593Smuzhiyundiff --git a/grub-core/video/i386/pc/vga.c b/grub-core/video/i386/pc/vga.c
1608*4882a593Smuzhiyunindex 01f47112d..b2f776c99 100644
1609*4882a593Smuzhiyun--- a/grub-core/video/i386/pc/vga.c
1610*4882a593Smuzhiyun+++ b/grub-core/video/i386/pc/vga.c
1611*4882a593Smuzhiyun@@ -127,7 +127,7 @@ grub_video_vga_setup (unsigned int width, unsigned int height,
1612*4882a593Smuzhiyun
1613*4882a593Smuzhiyun   vga_height = height ? : 480;
1614*4882a593Smuzhiyun
1615*4882a593Smuzhiyun-  framebuffer.temporary_buffer = grub_malloc (vga_height * VGA_WIDTH);
1616*4882a593Smuzhiyun+  framebuffer.temporary_buffer = grub_calloc (vga_height, VGA_WIDTH);
1617*4882a593Smuzhiyun   framebuffer.front_page = 0;
1618*4882a593Smuzhiyun   framebuffer.back_page = 0;
1619*4882a593Smuzhiyun   if (!framebuffer.temporary_buffer)
1620*4882a593Smuzhiyundiff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c
1621*4882a593Smuzhiyunindex 777e71334..61bd64537 100644
1622*4882a593Smuzhiyun--- a/grub-core/video/readers/png.c
1623*4882a593Smuzhiyun+++ b/grub-core/video/readers/png.c
1624*4882a593Smuzhiyun@@ -309,7 +309,7 @@ grub_png_decode_image_header (struct grub_png_data *data)
1625*4882a593Smuzhiyun   if (data->is_16bit || data->is_gray || data->is_palette)
1626*4882a593Smuzhiyun #endif
1627*4882a593Smuzhiyun     {
1628*4882a593Smuzhiyun-      data->image_data = grub_malloc (data->image_height * data->row_bytes);
1629*4882a593Smuzhiyun+      data->image_data = grub_calloc (data->image_height, data->row_bytes);
1630*4882a593Smuzhiyun       if (grub_errno)
1631*4882a593Smuzhiyun         return grub_errno;
1632*4882a593Smuzhiyun
1633*4882a593Smuzhiyundiff --git a/include/grub/unicode.h b/include/grub/unicode.h
1634*4882a593Smuzhiyunindex a0403e91f..4de986a85 100644
1635*4882a593Smuzhiyun--- a/include/grub/unicode.h
1636*4882a593Smuzhiyun+++ b/include/grub/unicode.h
1637*4882a593Smuzhiyun@@ -293,7 +293,7 @@ grub_unicode_glyph_dup (const struct grub_unicode_glyph *in)
1638*4882a593Smuzhiyun   grub_memcpy (out, in, sizeof (*in));
1639*4882a593Smuzhiyun   if (in->ncomb > ARRAY_SIZE (out->combining_inline))
1640*4882a593Smuzhiyun     {
1641*4882a593Smuzhiyun-      out->combining_ptr = grub_malloc (in->ncomb * sizeof (out->combining_ptr[0]));
1642*4882a593Smuzhiyun+      out->combining_ptr = grub_calloc (in->ncomb, sizeof (out->combining_ptr[0]));
1643*4882a593Smuzhiyun       if (!out->combining_ptr)
1644*4882a593Smuzhiyun 	{
1645*4882a593Smuzhiyun 	  grub_free (out);
1646*4882a593Smuzhiyun@@ -315,7 +315,7 @@ grub_unicode_set_glyph (struct grub_unicode_glyph *out,
1647*4882a593Smuzhiyun   grub_memcpy (out, in, sizeof (*in));
1648*4882a593Smuzhiyun   if (in->ncomb > ARRAY_SIZE (out->combining_inline))
1649*4882a593Smuzhiyun     {
1650*4882a593Smuzhiyun-      out->combining_ptr = grub_malloc (in->ncomb * sizeof (out->combining_ptr[0]));
1651*4882a593Smuzhiyun+      out->combining_ptr = grub_calloc (in->ncomb, sizeof (out->combining_ptr[0]));
1652*4882a593Smuzhiyun       if (!out->combining_ptr)
1653*4882a593Smuzhiyun 	return;
1654*4882a593Smuzhiyun       grub_memcpy (out->combining_ptr, in->combining_ptr,
1655*4882a593Smuzhiyundiff --git a/util/getroot.c b/util/getroot.c
1656*4882a593Smuzhiyunindex 847406fba..a5eaa64fd 100644
1657*4882a593Smuzhiyun--- a/util/getroot.c
1658*4882a593Smuzhiyun+++ b/util/getroot.c
1659*4882a593Smuzhiyun@@ -200,7 +200,7 @@ make_device_name (const char *drive)
1660*4882a593Smuzhiyun   char *ret, *ptr;
1661*4882a593Smuzhiyun   const char *iptr;
1662*4882a593Smuzhiyun
1663*4882a593Smuzhiyun-  ret = xmalloc (strlen (drive) * 2);
1664*4882a593Smuzhiyun+  ret = xcalloc (2, strlen (drive));
1665*4882a593Smuzhiyun   ptr = ret;
1666*4882a593Smuzhiyun   for (iptr = drive; *iptr; iptr++)
1667*4882a593Smuzhiyun     {
1668*4882a593Smuzhiyundiff --git a/util/grub-file.c b/util/grub-file.c
1669*4882a593Smuzhiyunindex 50c18b683..b2e7dd69f 100644
1670*4882a593Smuzhiyun--- a/util/grub-file.c
1671*4882a593Smuzhiyun+++ b/util/grub-file.c
1672*4882a593Smuzhiyun@@ -54,7 +54,7 @@ main (int argc, char *argv[])
1673*4882a593Smuzhiyun
1674*4882a593Smuzhiyun   grub_util_host_init (&argc, &argv);
1675*4882a593Smuzhiyun
1676*4882a593Smuzhiyun-  argv2 = xmalloc (argc * sizeof (argv2[0]));
1677*4882a593Smuzhiyun+  argv2 = xcalloc (argc, sizeof (argv2[0]));
1678*4882a593Smuzhiyun
1679*4882a593Smuzhiyun   if (argc == 2 && strcmp (argv[1], "--version") == 0)
1680*4882a593Smuzhiyun     {
1681*4882a593Smuzhiyundiff --git a/util/grub-fstest.c b/util/grub-fstest.c
1682*4882a593Smuzhiyunindex f14e02d97..57246af7c 100644
1683*4882a593Smuzhiyun--- a/util/grub-fstest.c
1684*4882a593Smuzhiyun+++ b/util/grub-fstest.c
1685*4882a593Smuzhiyun@@ -650,7 +650,7 @@ argp_parser (int key, char *arg, struct argp_state *state)
1686*4882a593Smuzhiyun   if (args_count < num_disks)
1687*4882a593Smuzhiyun     {
1688*4882a593Smuzhiyun       if (args_count == 0)
1689*4882a593Smuzhiyun-	images = xmalloc (num_disks * sizeof (images[0]));
1690*4882a593Smuzhiyun+	images = xcalloc (num_disks, sizeof (images[0]));
1691*4882a593Smuzhiyun       images[args_count] = grub_canonicalize_file_name (arg);
1692*4882a593Smuzhiyun       args_count++;
1693*4882a593Smuzhiyun       return 0;
1694*4882a593Smuzhiyun@@ -734,7 +734,7 @@ main (int argc, char *argv[])
1695*4882a593Smuzhiyun
1696*4882a593Smuzhiyun   grub_util_host_init (&argc, &argv);
1697*4882a593Smuzhiyun
1698*4882a593Smuzhiyun-  args = xmalloc (argc * sizeof (args[0]));
1699*4882a593Smuzhiyun+  args = xcalloc (argc, sizeof (args[0]));
1700*4882a593Smuzhiyun
1701*4882a593Smuzhiyun   argp_parse (&argp, argc, argv, 0, 0, 0);
1702*4882a593Smuzhiyun
1703*4882a593Smuzhiyundiff --git a/util/grub-install-common.c b/util/grub-install-common.c
1704*4882a593Smuzhiyunindex ca0ac612a..0295d40f5 100644
1705*4882a593Smuzhiyun--- a/util/grub-install-common.c
1706*4882a593Smuzhiyun+++ b/util/grub-install-common.c
1707*4882a593Smuzhiyun@@ -286,7 +286,7 @@ handle_install_list (struct install_list *il, const char *val,
1708*4882a593Smuzhiyun       il->n_entries++;
1709*4882a593Smuzhiyun     }
1710*4882a593Smuzhiyun   il->n_alloc = il->n_entries + 1;
1711*4882a593Smuzhiyun-  il->entries = xmalloc (il->n_alloc * sizeof (il->entries[0]));
1712*4882a593Smuzhiyun+  il->entries = xcalloc (il->n_alloc, sizeof (il->entries[0]));
1713*4882a593Smuzhiyun   ptr = val;
1714*4882a593Smuzhiyun   for (ce = il->entries; ; ce++)
1715*4882a593Smuzhiyun     {
1716*4882a593Smuzhiyundiff --git a/util/grub-install.c b/util/grub-install.c
1717*4882a593Smuzhiyunindex 8a55ad4b8..a82725f29 100644
1718*4882a593Smuzhiyun--- a/util/grub-install.c
1719*4882a593Smuzhiyun+++ b/util/grub-install.c
1720*4882a593Smuzhiyun@@ -626,7 +626,7 @@ device_map_check_duplicates (const char *dev_map)
1721*4882a593Smuzhiyun   if (! fp)
1722*4882a593Smuzhiyun     return;
1723*4882a593Smuzhiyun
1724*4882a593Smuzhiyun-  d = xmalloc (alloced * sizeof (d[0]));
1725*4882a593Smuzhiyun+  d = xcalloc (alloced, sizeof (d[0]));
1726*4882a593Smuzhiyun
1727*4882a593Smuzhiyun   while (fgets (buf, sizeof (buf), fp))
1728*4882a593Smuzhiyun     {
1729*4882a593Smuzhiyun@@ -1260,7 +1260,7 @@ main (int argc, char *argv[])
1730*4882a593Smuzhiyun       ndev++;
1731*4882a593Smuzhiyun     }
1732*4882a593Smuzhiyun
1733*4882a593Smuzhiyun-  grub_drives = xmalloc (sizeof (grub_drives[0]) * (ndev + 1));
1734*4882a593Smuzhiyun+  grub_drives = xcalloc (ndev + 1, sizeof (grub_drives[0]));
1735*4882a593Smuzhiyun
1736*4882a593Smuzhiyun   for (curdev = grub_devices, curdrive = grub_drives; *curdev; curdev++,
1737*4882a593Smuzhiyun        curdrive++)
1738*4882a593Smuzhiyundiff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
1739*4882a593Smuzhiyunindex bc087c2b5..d97d0e7be 100644
1740*4882a593Smuzhiyun--- a/util/grub-mkimagexx.c
1741*4882a593Smuzhiyun+++ b/util/grub-mkimagexx.c
1742*4882a593Smuzhiyun@@ -2294,10 +2294,8 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
1743*4882a593Smuzhiyun 		      + grub_host_to_target16 (e->e_shstrndx) * smd.section_entsize);
1744*4882a593Smuzhiyun   smd.strtab = (char *) e + grub_host_to_target_addr (s->sh_offset);
1745*4882a593Smuzhiyun
1746*4882a593Smuzhiyun-  smd.addrs = xmalloc (sizeof (*smd.addrs) * smd.num_sections);
1747*4882a593Smuzhiyun-  memset (smd.addrs, 0, sizeof (*smd.addrs) * smd.num_sections);
1748*4882a593Smuzhiyun-  smd.vaddrs = xmalloc (sizeof (*smd.vaddrs) * smd.num_sections);
1749*4882a593Smuzhiyun-  memset (smd.vaddrs, 0, sizeof (*smd.vaddrs) * smd.num_sections);
1750*4882a593Smuzhiyun+  smd.addrs = xcalloc (smd.num_sections, sizeof (*smd.addrs));
1751*4882a593Smuzhiyun+  smd.vaddrs = xcalloc (smd.num_sections, sizeof (*smd.vaddrs));
1752*4882a593Smuzhiyun
1753*4882a593Smuzhiyun   SUFFIX (locate_sections) (e, kernel_path, &smd, layout, image_target);
1754*4882a593Smuzhiyun
1755*4882a593Smuzhiyundiff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c
1756*4882a593Smuzhiyunindex ce2cbc4f1..51831027f 100644
1757*4882a593Smuzhiyun--- a/util/grub-mkrescue.c
1758*4882a593Smuzhiyun+++ b/util/grub-mkrescue.c
1759*4882a593Smuzhiyun@@ -441,8 +441,8 @@ main (int argc, char *argv[])
1760*4882a593Smuzhiyun   xorriso = xstrdup ("xorriso");
1761*4882a593Smuzhiyun   label_font = grub_util_path_concat (2, pkgdatadir, "unicode.pf2");
1762*4882a593Smuzhiyun
1763*4882a593Smuzhiyun-  argp_argv = xmalloc (sizeof (argp_argv[0]) * argc);
1764*4882a593Smuzhiyun-  xorriso_tail_argv = xmalloc (sizeof (argp_argv[0]) * argc);
1765*4882a593Smuzhiyun+  argp_argv = xcalloc (argc, sizeof (argp_argv[0]));
1766*4882a593Smuzhiyun+  xorriso_tail_argv = xcalloc (argc, sizeof (argp_argv[0]));
1767*4882a593Smuzhiyun
1768*4882a593Smuzhiyun   xorriso_tail_argc = 0;
1769*4882a593Smuzhiyun   /* Program name */
1770*4882a593Smuzhiyundiff --git a/util/grub-mkstandalone.c b/util/grub-mkstandalone.c
1771*4882a593Smuzhiyunindex 4907d44c0..edf309717 100644
1772*4882a593Smuzhiyun--- a/util/grub-mkstandalone.c
1773*4882a593Smuzhiyun+++ b/util/grub-mkstandalone.c
1774*4882a593Smuzhiyun@@ -296,7 +296,7 @@ main (int argc, char *argv[])
1775*4882a593Smuzhiyun   grub_util_host_init (&argc, &argv);
1776*4882a593Smuzhiyun   grub_util_disable_fd_syncs ();
1777*4882a593Smuzhiyun
1778*4882a593Smuzhiyun-  files = xmalloc ((argc + 1) * sizeof (files[0]));
1779*4882a593Smuzhiyun+  files = xcalloc (argc + 1, sizeof (files[0]));
1780*4882a593Smuzhiyun
1781*4882a593Smuzhiyun   argp_parse (&argp, argc, argv, 0, 0, 0);
1782*4882a593Smuzhiyun
1783*4882a593Smuzhiyundiff --git a/util/grub-pe2elf.c b/util/grub-pe2elf.c
1784*4882a593Smuzhiyunindex 0d4084a10..11331294f 100644
1785*4882a593Smuzhiyun--- a/util/grub-pe2elf.c
1786*4882a593Smuzhiyun+++ b/util/grub-pe2elf.c
1787*4882a593Smuzhiyun@@ -100,9 +100,9 @@ write_section_data (FILE* fp, const char *name, char *image,
1788*4882a593Smuzhiyun   char *pe_strtab = (image + pe_chdr->symtab_offset
1789*4882a593Smuzhiyun 		     + pe_chdr->num_symbols * sizeof (struct grub_pe32_symbol));
1790*4882a593Smuzhiyun
1791*4882a593Smuzhiyun-  section_map = xmalloc ((2 * pe_chdr->num_sections + 5) * sizeof (int));
1792*4882a593Smuzhiyun+  section_map = xcalloc (2 * pe_chdr->num_sections + 5, sizeof (int));
1793*4882a593Smuzhiyun   section_map[0] = 0;
1794*4882a593Smuzhiyun-  shdr = xmalloc ((2 * pe_chdr->num_sections + 5) * sizeof (shdr[0]));
1795*4882a593Smuzhiyun+  shdr = xcalloc (2 * pe_chdr->num_sections + 5, sizeof (shdr[0]));
1796*4882a593Smuzhiyun   idx = 1;
1797*4882a593Smuzhiyun   idx_reloc = pe_chdr->num_sections + 1;
1798*4882a593Smuzhiyun
1799*4882a593Smuzhiyun@@ -233,7 +233,7 @@ write_reloc_section (FILE* fp, const char *name, char *image,
1800*4882a593Smuzhiyun
1801*4882a593Smuzhiyun       pe_sec = pe_shdr + shdr[i].sh_link;
1802*4882a593Smuzhiyun       pe_rel = (struct grub_pe32_reloc *) (image + pe_sec->relocations_offset);
1803*4882a593Smuzhiyun-      rel = (elf_reloc_t *) xmalloc (pe_sec->num_relocations * sizeof (elf_reloc_t));
1804*4882a593Smuzhiyun+      rel = (elf_reloc_t *) xcalloc (pe_sec->num_relocations, sizeof (elf_reloc_t));
1805*4882a593Smuzhiyun       num_rels = 0;
1806*4882a593Smuzhiyun       modified = 0;
1807*4882a593Smuzhiyun
1808*4882a593Smuzhiyun@@ -365,12 +365,10 @@ write_symbol_table (FILE* fp, const char *name, char *image,
1809*4882a593Smuzhiyun   pe_symtab = (struct grub_pe32_symbol *) (image + pe_chdr->symtab_offset);
1810*4882a593Smuzhiyun   pe_strtab = (char *) (pe_symtab + pe_chdr->num_symbols);
1811*4882a593Smuzhiyun
1812*4882a593Smuzhiyun-  symtab = (Elf_Sym *) xmalloc ((pe_chdr->num_symbols + 1) *
1813*4882a593Smuzhiyun-				sizeof (Elf_Sym));
1814*4882a593Smuzhiyun-  memset (symtab, 0, (pe_chdr->num_symbols + 1) * sizeof (Elf_Sym));
1815*4882a593Smuzhiyun+  symtab = (Elf_Sym *) xcalloc (pe_chdr->num_symbols + 1, sizeof (Elf_Sym));
1816*4882a593Smuzhiyun   num_syms = 1;
1817*4882a593Smuzhiyun
1818*4882a593Smuzhiyun-  symtab_map = (int *) xmalloc (pe_chdr->num_symbols * sizeof (int));
1819*4882a593Smuzhiyun+  symtab_map = (int *) xcalloc (pe_chdr->num_symbols, sizeof (int));
1820*4882a593Smuzhiyun
1821*4882a593Smuzhiyun   for (i = 0; i < (int) pe_chdr->num_symbols;
1822*4882a593Smuzhiyun        i += pe_symtab->num_aux + 1, pe_symtab += pe_symtab->num_aux + 1)
1823*4882a593Smuzhiyundiff --git a/util/grub-probe.c b/util/grub-probe.c
1824*4882a593Smuzhiyunindex 81d27eead..cbe6ed94c 100644
1825*4882a593Smuzhiyun--- a/util/grub-probe.c
1826*4882a593Smuzhiyun+++ b/util/grub-probe.c
1827*4882a593Smuzhiyun@@ -361,8 +361,8 @@ probe (const char *path, char **device_names, char delim)
1828*4882a593Smuzhiyun       grub_util_pull_device (*curdev);
1829*4882a593Smuzhiyun       ndev++;
1830*4882a593Smuzhiyun     }
1831*4882a593Smuzhiyun-
1832*4882a593Smuzhiyun-  drives_names = xmalloc (sizeof (drives_names[0]) * (ndev + 1));
1833*4882a593Smuzhiyun+
1834*4882a593Smuzhiyun+  drives_names = xcalloc (ndev + 1, sizeof (drives_names[0]));
1835*4882a593Smuzhiyun
1836*4882a593Smuzhiyun   for (curdev = device_names, curdrive = drives_names; *curdev; curdev++,
1837*4882a593Smuzhiyun        curdrive++)
1838*4882a593Smuzhiyun--
1839*4882a593Smuzhiyun2.26.2
1840*4882a593Smuzhiyun
1841