diff --git a/src/xenia/emulator.cc b/src/xenia/emulator.cc index adc628563..22cd25220 100644 --- a/src/xenia/emulator.cc +++ b/src/xenia/emulator.cc @@ -545,7 +545,7 @@ X_STATUS Emulator::LaunchPath(const std::filesystem::path& path) { case FileSignatureType::LIVE: case FileSignatureType::CON: case FileSignatureType::PIRS: { - mount_result = MountPath(path, "\\Device\\Cdrom0"); + mount_result = MountPath(path, "\\Device\\Package_0"); return mount_result ? mount_result : LaunchStfsContainer(path); } break; case FileSignatureType::XISO: { diff --git a/src/xenia/kernel/xam/apps/xam_app.cc b/src/xenia/kernel/xam/apps/xam_app.cc index c76d3dcfe..5faf3b8f9 100644 --- a/src/xenia/kernel/xam/apps/xam_app.cc +++ b/src/xenia/kernel/xam/apps/xam_app.cc @@ -111,6 +111,17 @@ X_HRESULT XamApp::DispatchMessageSync(uint32_t message, uint32_t buffer_ptr, }* data = reinterpret_cast(buffer); assert_true(buffer_length == sizeof(XContentQueryVolumeDeviceType)); + std::string target; + if (!kernel_state_->file_system()->FindSymbolicLink( + std::string(data->root_name) + ':', target)) { + return X_E_INVALIDARG; + } + + // Only apply this check to XContent packages + if (!target.starts_with("\\Device\\Package_")) { + return X_E_INVALIDARG; + } + xe::be* device_type_ptr = memory_->TranslateVirtual*>( static_cast(data->device_type_ptr.get()));