Index: usr.sbin/bhyve/bhyverun.c =================================================================== --- usr.sbin/bhyve/bhyverun.c +++ usr.sbin/bhyve/bhyverun.c @@ -69,6 +69,7 @@ #include #include #include +#include #ifdef BHYVE_SNAPSHOT #include #include @@ -1077,6 +1078,16 @@ fbsdrun_addcpu(ctx, BSP, vcpu, rip); } +bool +is_valid_uuid(const char* uuid_str) +{ + uuid_t uuid; + uint32_t uuid_status; + + uuid_from_string(uuid_str, &uuid, &uuid_status); + return uuid_status == uuid_s_ok; +} + int main(int argc, char *argv[]) { @@ -1196,7 +1207,10 @@ rtc_localtime = 0; break; case 'U': - guest_uuid_str = optarg; + if (is_valid_uuid(optarg) == false) { + errx(EX_USAGE, "invalid UUID '%s'", optarg); + } + guest_uuid_str = optarg; break; case 'w': strictmsr = 0;