Print this page
10100 Illumos is confused about calloc() arguments

*** 22,31 **** --- 22,32 ---- /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright 2014 Toomas Soome <tsoome@me.com> * Copyright 2018 OmniOS Community Edition (OmniOSce) Association. + * Copyright (c) 2018, Joyent, Inc. */ #include <stdio.h> #include <stdlib.h> #include <errno.h>
*** 186,196 **** } length = sizeof (struct dk_gpt) + sizeof (struct dk_part) * (nparts - 1); ! if ((*vtoc = calloc(length, 1)) == NULL) return (-1); vptr = *vtoc; vptr->efi_version = EFI_VERSION_CURRENT; --- 187,197 ---- } length = sizeof (struct dk_gpt) + sizeof (struct dk_part) * (nparts - 1); ! if ((*vtoc = calloc(1, length)) == NULL) return (-1); vptr = *vtoc; vptr->efi_version = EFI_VERSION_CURRENT;
*** 227,237 **** int i; if (read_disk_info(fd, &capacity, &lbsize) != 0) return (VT_ERROR); ! if ((mbr = calloc(lbsize, 1)) == NULL) return (VT_ERROR); if ((ioctl(fd, DKIOCGMBOOT, (caddr_t)mbr)) == -1) { free(mbr); return (VT_ERROR); --- 228,238 ---- int i; if (read_disk_info(fd, &capacity, &lbsize) != 0) return (VT_ERROR); ! if ((mbr = calloc(1, lbsize)) == NULL) return (VT_ERROR); if ((ioctl(fd, DKIOCGMBOOT, (caddr_t)mbr)) == -1) { free(mbr); return (VT_ERROR);
*** 254,264 **** /* figure out the number of entries that would fit into 16K */ nparts = EFI_MIN_ARRAY_SIZE / sizeof (efi_gpe_t); length = (int) sizeof (struct dk_gpt) + (int) sizeof (struct dk_part) * (nparts - 1); ! if ((*vtoc = calloc(length, 1)) == NULL) return (VT_ERROR); (*vtoc)->efi_nparts = nparts; rval = efi_read(fd, *vtoc); --- 255,265 ---- /* figure out the number of entries that would fit into 16K */ nparts = EFI_MIN_ARRAY_SIZE / sizeof (efi_gpe_t); length = (int) sizeof (struct dk_gpt) + (int) sizeof (struct dk_part) * (nparts - 1); ! if ((*vtoc = calloc(1, length)) == NULL) return (VT_ERROR); (*vtoc)->efi_nparts = nparts; rval = efi_read(fd, *vtoc);
*** 421,431 **** label_len += disk_info.dki_lbsize; label_len &= ~(disk_info.dki_lbsize - 1); } } ! if ((dk_ioc.dki_data = calloc(label_len, 1)) == NULL) return (VT_ERROR); dk_ioc.dki_length = disk_info.dki_lbsize; user_length = vtoc->efi_nparts; efi = dk_ioc.dki_data; --- 422,432 ---- label_len += disk_info.dki_lbsize; label_len &= ~(disk_info.dki_lbsize - 1); } } ! if ((dk_ioc.dki_data = calloc(1, label_len)) == NULL) return (VT_ERROR); dk_ioc.dki_length = disk_info.dki_lbsize; user_length = vtoc->efi_nparts; efi = dk_ioc.dki_data;
*** 1018,1028 **** * Backup GPT header is located on the block after GUID * partition entry array. Here, we calculate the address * for backup GPT header. */ lba_backup_gpt_hdr = vtoc->efi_last_u_lba + 1 + nblocks; ! if ((dk_ioc.dki_data = calloc(dk_ioc.dki_length, 1)) == NULL) return (VT_ERROR); efi = dk_ioc.dki_data; /* stuff user's input into EFI struct */ --- 1019,1029 ---- * Backup GPT header is located on the block after GUID * partition entry array. Here, we calculate the address * for backup GPT header. */ lba_backup_gpt_hdr = vtoc->efi_last_u_lba + 1 + nblocks; ! if ((dk_ioc.dki_data = calloc(1, dk_ioc.dki_length)) == NULL) return (VT_ERROR); efi = dk_ioc.dki_data; /* stuff user's input into EFI struct */