Skip to content

Commit b489d86

Browse files
committed
fix: move lock release inside critical section to close TOCTOU window
At two call sites, _release_message_lock was called outside the async with block, followed by an await (save_query_log). Moving the pop inside the lock prevents a concurrent coroutine from creating a new lock for the same msg_id during the yield. Co-authored-by: Isaac
1 parent 19d51bd commit b489d86

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

backend/app/api/genie_clone_routes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ async def _process_genie_background(
292292
"sql_query": sql_query,
293293
"result": actual_result,
294294
}
295-
_release_message_lock(msg_id)
295+
_release_message_lock(msg_id)
296296

297297
# Save query log
298298
try:
@@ -465,7 +465,7 @@ async def _handle_query(
465465
async with _get_message_lock(msg_id):
466466
_synthetic_messages[msg_id] = response
467467
_synthetic_messages[att_id] = {"sql_query": sql_query, "token": token, "space_id": space_id}
468-
_release_message_lock(msg_id)
468+
_release_message_lock(msg_id)
469469

470470
# Save query log
471471
try:

0 commit comments

Comments
 (0)