Changeset View
Changeset View
Standalone View
Standalone View
sys/contrib/openzfs/lib/libefi/rdwr_efi.c
Show First 20 Lines • Show All 462 Lines • ▼ Show 20 Lines | efi_alloc_and_read(int fd, struct dk_gpt **vtoc) | ||||
rval = efi_read(fd, vptr); | rval = efi_read(fd, vptr); | ||||
if ((rval == VT_EINVAL) && vptr->efi_nparts > nparts) { | if ((rval == VT_EINVAL) && vptr->efi_nparts > nparts) { | ||||
void *tmp; | void *tmp; | ||||
length = (int) sizeof (struct dk_gpt) + | length = (int) sizeof (struct dk_gpt) + | ||||
(int) sizeof (struct dk_part) * (vptr->efi_nparts - 1); | (int) sizeof (struct dk_part) * (vptr->efi_nparts - 1); | ||||
nparts = vptr->efi_nparts; | nparts = vptr->efi_nparts; | ||||
if ((tmp = realloc(vptr, length)) == NULL) { | if ((tmp = realloc(vptr, length)) == NULL) { | ||||
/* cppcheck-suppress doubleFree */ | |||||
free(vptr); | free(vptr); | ||||
*vtoc = NULL; | *vtoc = NULL; | ||||
return (VT_ERROR); | return (VT_ERROR); | ||||
} else { | } else { | ||||
vptr = tmp; | vptr = tmp; | ||||
rval = efi_read(fd, vptr); | rval = efi_read(fd, vptr); | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,276 Lines • Show Last 20 Lines |