Changeset View
Changeset View
Standalone View
Standalone View
head/stand/i386/loader/main.c
Show First 20 Lines • Show All 169 Lines • ▼ Show 20 Lines | #ifdef LOADER_ZFS_SUPPORT | ||||
archsw.arch_zfs_probe = i386_zfs_probe; | archsw.arch_zfs_probe = i386_zfs_probe; | ||||
#ifdef LOADER_GELI_SUPPORT | #ifdef LOADER_GELI_SUPPORT | ||||
if ((kargs->bootflags & KARGS_FLAGS_EXTARG) != 0) { | if ((kargs->bootflags & KARGS_FLAGS_EXTARG) != 0) { | ||||
zargs = (struct zfs_boot_args *)(kargs + 1); | zargs = (struct zfs_boot_args *)(kargs + 1); | ||||
if (zargs != NULL && zargs->size >= offsetof(struct zfs_boot_args, gelipw)) { | if (zargs != NULL && zargs->size >= offsetof(struct zfs_boot_args, gelipw)) { | ||||
if (zargs->size >= offsetof(struct zfs_boot_args, keybuf_sentinel) && | if (zargs->size >= offsetof(struct zfs_boot_args, keybuf_sentinel) && | ||||
zargs->keybuf_sentinel == KEYBUF_SENTINEL) { | zargs->keybuf_sentinel == KEYBUF_SENTINEL) { | ||||
geli_save_keybuf(zargs->keybuf); | geli_import_key_buffer(zargs->keybuf); | ||||
} | } | ||||
if (zargs->gelipw[0] != '\0') { | if (zargs->gelipw[0] != '\0') { | ||||
setenv("kern.geom.eli.passphrase", zargs->gelipw, 1); | setenv("kern.geom.eli.passphrase", zargs->gelipw, 1); | ||||
explicit_bzero(zargs->gelipw, sizeof(zargs->gelipw)); | explicit_bzero(zargs->gelipw, sizeof(zargs->gelipw)); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
#endif /* LOADER_GELI_SUPPORT */ | #endif /* LOADER_GELI_SUPPORT */ | ||||
#else /* !LOADER_ZFS_SUPPORT */ | #else /* !LOADER_ZFS_SUPPORT */ | ||||
#ifdef LOADER_GELI_SUPPORT | #ifdef LOADER_GELI_SUPPORT | ||||
if ((kargs->bootflags & KARGS_FLAGS_EXTARG) != 0) { | if ((kargs->bootflags & KARGS_FLAGS_EXTARG) != 0) { | ||||
gargs = (struct geli_boot_args *)(kargs + 1); | gargs = (struct geli_boot_args *)(kargs + 1); | ||||
if (gargs != NULL && gargs->size >= offsetof(struct geli_boot_args, gelipw)) { | if (gargs != NULL && gargs->size >= offsetof(struct geli_boot_args, gelipw)) { | ||||
if (gargs->keybuf_sentinel == KEYBUF_SENTINEL) { | if (gargs->keybuf_sentinel == KEYBUF_SENTINEL) { | ||||
geli_save_keybuf(gargs->keybuf); | geli_import_key_buffer(gargs->keybuf); | ||||
} | } | ||||
if (gargs->gelipw[0] != '\0') { | if (gargs->gelipw[0] != '\0') { | ||||
setenv("kern.geom.eli.passphrase", gargs->gelipw, 1); | setenv("kern.geom.eli.passphrase", gargs->gelipw, 1); | ||||
explicit_bzero(gargs->gelipw, sizeof(gargs->gelipw)); | explicit_bzero(gargs->gelipw, sizeof(gargs->gelipw)); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
#endif /* LOADER_GELI_SUPPORT */ | #endif /* LOADER_GELI_SUPPORT */ | ||||
▲ Show 20 Lines • Show All 205 Lines • Show Last 20 Lines |