diff --git a/Configuration/UTMQemuConfiguration+Arguments.swift b/Configuration/UTMQemuConfiguration+Arguments.swift index 48bc39218..78c278bb4 100644 --- a/Configuration/UTMQemuConfiguration+Arguments.swift +++ b/Configuration/UTMQemuConfiguration+Arguments.swift @@ -852,9 +852,16 @@ import Foundation } } + private func cleanupName(_ name: String) -> String { + let allowedCharacterSet = CharacterSet.alphanumerics.union(.whitespaces) + let filteredString = name.components(separatedBy: allowedCharacterSet.inverted) + .joined(separator: "") + return filteredString + } + @QEMUArgumentBuilder private var miscArguments: [QEMUArgument] { f("-name") - f(information.name) + f(cleanupName(information.name)) if qemu.isDisposable { f("-snapshot") } diff --git a/Managers/UTMVirtualMachine.m b/Managers/UTMVirtualMachine.m index a0f49cbaf..f0b4901ca 100644 --- a/Managers/UTMVirtualMachine.m +++ b/Managers/UTMVirtualMachine.m @@ -133,7 +133,7 @@ + (NSString *)virtualMachineName:(NSURL *)url { } + (NSURL *)virtualMachinePath:(NSString *)name inParentURL:(NSURL *)parent { - NSCharacterSet *illegalFileNameCharacters = [NSCharacterSet characterSetWithCharactersInString:@"/:\\?%*|\"<>"]; + NSCharacterSet *illegalFileNameCharacters = [NSCharacterSet characterSetWithCharactersInString:@",/:\\?%*|\"<>"]; name = [[name componentsSeparatedByCharactersInSet:illegalFileNameCharacters] componentsJoinedByString:@"-"]; return [[parent URLByAppendingPathComponent:name] URLByAppendingPathExtension:kUTMBundleExtension]; }