diff --git a/packages/hydrojudge/package.json b/packages/hydrojudge/package.json index 4a8aefa0b..b86e66423 100644 --- a/packages/hydrojudge/package.json +++ b/packages/hydrojudge/package.json @@ -1,7 +1,7 @@ { "name": "@hydrooj/hydrojudge", "bin": "bin/hydrojudge.js", - "version": "2.17.1", + "version": "2.17.2", "main": "package.json", "author": "undefined ", "repository": "https://github.com/hydro-dev/Hydro.git", diff --git a/packages/hydrojudge/src/judge/submit_answer.ts b/packages/hydrojudge/src/judge/submit_answer.ts index 940e2696f..67096be5c 100644 --- a/packages/hydrojudge/src/judge/submit_answer.ts +++ b/packages/hydrojudge/src/judge/submit_answer.ts @@ -35,7 +35,9 @@ function judgeCase(c: Case, sid: string) { return; } const chars = /[a-zA-Z0-9_.-]/; - const name = await readFile(c.input, 'utf-8').then((res) => res.trim().split('').filter((i) => chars.test(i)).join('')); + const name = (ctx.config.filename && /^[a-zA-Z0-9-_#.]+$/.test(ctx.config.filename)) + ? ctx.config.filename.replace('#', c.id.toString()) + : await readFile(c.input, 'utf-8').then((res) => res.trim().split('').filter((i) => chars.test(i)).join('')); let file = ctx.code; let status = STATUS.STATUS_ACCEPTED; let message: any = '';