dscalzi / HeliosLauncher

☀ Custom launcher for modded minecraft written in Electron and Node.js
MIT License
830 stars 1.72k forks source link

Invalid classpath when username has .jar #353

Open taranovegor opened 3 months ago

taranovegor commented 3 months ago

If the username contains .jar, for example baton.jar the classpath will not be processed correctly and will be a string like C:\Users\baton.jar instead of C:\Users\baton.jar\...\asset.jar.

https://github.com/dscalzi/HeliosLauncher/blob/eb683f89ec14c333163d5a9afdf1d7bbd5d532ab/app/assets/js/processbuilder.js#L649-L660

Pretty freaky case, but it can happen...

dscalzi commented 3 months ago

Have you actually seen this happen?

taranovegor commented 3 months ago

Of course, here is more information about accident.

Console output:

[2024-05-16 22:33:48] [info] [ProcessBuilder]: Launch Arguments: [
  '-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump',
  '-Djava.library.path=C:\\Temp\\WCNatives\\8fc83e98c373294b92ab93bbcf1534b4',
  '-Djna.tmpdir=C:\\Temp\\WCNatives\\8fc83e98c373294b92ab93bbcf1534b4',
  '-Dorg.lwjgl.system.SharedLibraryExtractPath=C:\\Temp\\WCNatives\\8fc83e98c373294b92ab93bbcf1534b4',
  '-Dio.netty.native.workdir=C:\\Temp\\WCNatives\\8fc83e98c373294b92ab93bbcf1534b4',
  '-cp',
  'C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar;C:\\Users\\baton.jar',
  '-DFabricMcEmu= net.minecraft.client.main.Main ',
  '-Xmx3G',
  '-Xms3G',
  '-XX:+UnlockExperimentalVMOptions',
  '-XX:+UseG1GC',
  '-XX:G1NewSizePercent=20',
  '-XX:G1ReservePercent=20',
  '-XX:MaxGCPauseMillis=50',
  '-XX:G1HeapRegionSize=32M',
  'net.fabricmc.loader.impl.launch.knot.KnotClient',
  '--username',
  '***',
  '--version',
  'vanilla',
  '--gameDir',
  'C:\\Users\\baton.jar\\AppData\\Roaming\\.helioslauncher\\instances\\vanilla',
  '--assetsDir',
  'C:\\Users\\baton.jar\\AppData\\Roaming\\.helioslauncher\\common\\assets',
  '--assetIndex',
  '12',
  '--uuid',
  '***',
  '--accessToken',
  '***',
  '--clientId',
  '${clientid}',
  '--xuid',
  '${auth_xuid}',
  '--userType',
  'mojang',
  '--versionType',
  'release',
  '--width',
  1280,
  '--height',
  720,
  '--quickPlayMultiplayer',
  '127.0.0.1:25565'
]

The result of executing the _processClassPathList function: image

Codixer commented 3 months ago

I question why someone would even have .jar in their username for their OS, lol.