MySQL single-statement guard: differential fuzzing and fail-closed gaps
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Read src-tauri/src/driver/mysql.rs, src-tauri/src/safety.rs, src-tauri/tests/mysql_compound.rs, and src/features/editor/splitStatements.ts, along with the linked plan notes. Start by running the existing MySQL compound tests and tracing how has_multiple_statements handles the listed gaps. Done means each gap is tested or documented as refused, and the optional differential fuzz harness finds no case where MySQL or MariaDB executes two statements while the guard accepts the input.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Context
MySQL always enables multi-statements, so the driver refuses any input its lexer sees as more than one statement (has_multiple_statements, plus executable comments read both ways and the session charset / sql_mode re-read). The guard is fail-closed but has never been fuzzed against the real server parser.
Source: docs/notes/plan-04-followups.md (R27 fuzzing, Task 8 fail-closed limits), docs/notes/plan-05-followups.md (Task 2 version digits).
To do
- Differential fuzzing: generate inputs (comments, quotes, executable comments, compound bodies, charsets, sql_modes) and compare
has_multiple_statementswith what MySQL 8 / MariaDB 11 actually run (e.g. a marker table written by a second statement). - Lexers read every digit after
/*!as the version, where MySQL reads 5–6 (fail-safe today). - Functional gaps of the fail-closed tracker: MariaDB
FOR … DO … END FORloops refused / mis-split by the frontend; unquotedendin an IF / WHILE condition refused; a(SELECT …)statement in a body refused; a label namedbeginrefused; Run on aDELIMITER ;line runs the previous statement; the separator-less second CREATE is tested in Rust only, not insplitStatements.
Acceptance criteria
- A fuzz harness under
src-tauri/tests/(ignored by default, documented how to run) with no case where the server runs two statements and the guard accepts the input - Each functional gap either accepted correctly with a test or documented as refused
-
pnpm test && pnpm lintgreen (andpnpm test:rustwhensrc-tauri/changes)
Files likely touched
- src-tauri/src/driver/mysql.rs, src-tauri/src/safety.rs, src-tauri/tests/mysql_compound.rs
- src/features/editor/splitStatements.ts
Related plan / spec
docs/notes/plan-04-followups.md#still-open-from-the-final-review-fix-wave-scope-excluded-them
- Lingua principale
- TypeScript
- Stelle
- 0
- Fork
- 0
- Merge medio
- 1h 19m
- PR unite (30g)
- 28
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Cemoche/tablemax
-
area:frontend size:S status:ready type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
area:backend size:S status:ready type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
area:infra good first issue size:S status:ready type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
area:docs good first issue size:S status:ready type:task
Difficoltà 1/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
area:infra size:S status:ready type:task
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Cemoche/tablemax
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
endora-commerce/endora-commerce#397 ·
I maintainer di solito rispondono entro 1 giorno
-
level/task
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
wazuh/wazuh-dashboard-plugins#9472 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
I maintainer di solito rispondono entro 1 giorno
-
ready-for-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
xavxyz/bei-shan-lin-shui#57 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
opennextjs/opennextjs-cloudflare#1461 ·
I maintainer di solito rispondono entro 1 giorno