(userDataDir: string)
| 199 | * check for gstack). |
| 200 | */ |
| 201 | export function cleanSingletonLocks(userDataDir: string): void { |
| 202 | if (!path.isAbsolute(userDataDir)) { |
| 203 | console.warn(`[browse] cleanSingletonLocks: refusing relative path: ${userDataDir}`); |
| 204 | return; |
| 205 | } |
| 206 | const resolved = path.resolve(userDataDir); |
| 207 | const basename = path.basename(resolved); |
| 208 | const explicitProfile = process.env.CHROMIUM_PROFILE; |
| 209 | const explicitAbs = explicitProfile && path.isAbsolute(explicitProfile) |
| 210 | ? path.resolve(explicitProfile) |
| 211 | : null; |
| 212 | const isSafe = basename === 'chromium-profile' || (explicitAbs !== null && resolved === explicitAbs); |
| 213 | if (!isSafe) { |
| 214 | console.warn(`[browse] cleanSingletonLocks: refusing to clean unrecognized profile dir: ${resolved}`); |
| 215 | return; |
| 216 | } |
| 217 | for (const lockFile of ['SingletonLock', 'SingletonSocket', 'SingletonCookie']) { |
| 218 | safeUnlinkQuiet(path.join(resolved, lockFile)); |
| 219 | } |
| 220 | } |
no test coverage detected