3 Commits

Author SHA1 Message Date
4b8ecc65c3 0.0.5
All checks were successful
Publish / lints (push) Successful in 25s
Publish / tests (push) Successful in 51s
Publish / Publishing (push) Successful in 1m9s
/ Misc Linters (push) Successful in 26s
/ Build App (push) Successful in 1m1s
2024-08-16 18:18:02 +02:00
3696bcade2 Change parameter order 2024-08-16 18:17:44 +02:00
dea401fec0 Add title
All checks were successful
/ Misc Linters (push) Successful in 22s
/ Build App (push) Successful in 50s
2024-08-16 18:08:49 +02:00
6 changed files with 10 additions and 9 deletions

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "fotochallenge",
"version": "0.0.4",
"version": "0.0.5",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "fotochallenge",
"version": "0.0.4",
"version": "0.0.5",
"devDependencies": {
"@sveltejs/adapter-auto": "^3.0.0",
"@sveltejs/adapter-node": "^5.2.0",

View File

@ -1,6 +1,6 @@
{
"name": "fotochallenge",
"version": "0.0.4",
"version": "0.0.5",
"private": true,
"scripts": {
"dev": "vite dev",

View File

@ -4,6 +4,7 @@
<meta charset="utf-8" />
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Gabi und Hannes Fotochallenge</title>
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover">

View File

@ -3,18 +3,18 @@ import { describe, it, expect } from 'vitest';
describe('safe path', () => {
it('reject names with ../', () => {
expect(safePath('../foobar', './uploads')).toBe(false);
expect(safePath('./uplodas', '../foobar')).toBe(false);
});
it('accept names with ./', () => {
expect(safePath('./foobar', './uploads')).toBe(true);
expect(safePath('./uplodas', './foobar')).toBe(true);
});
it('reject names with /', () => {
expect(safePath('foo/bar', './uploads')).toBe(false);
expect(safePath('./uplodas', 'foo/bar')).toBe(false);
});
it('accept happy path', () => {
expect(safePath('foobar', './uploads')).toBe(true);
expect(safePath('./uplodas', 'foobar')).toBe(true);
});
});

View File

@ -1,7 +1,7 @@
// place files you want to import through the `$lib` alias in this folder.
import path from 'path';
function safePath(name: string, basePath: string): boolean {
function safePath(basePath: string, name: string): boolean {
const fullPath = `${basePath}/${name}`;
const relative = path.relative(basePath, fullPath);
return (

View File

@ -36,7 +36,7 @@ export const actions = {
const name = formName as string;
if (!safePath(name, storagePath)) {
if (!safePath(storagePath, name)) {
return fail(400, { field: 'name', name: name, incorrect: true });
}
// const name = safePath(formName as string);