Copia local (nao fork, nao submodule) de safedeps, sca-audit, secrets-scan, code-review-security, api-security-review, web-security-review, cve-triage, patch-prioritization, dependency-scanning e hermaguard -- commit exato de origem e licenca de cada uma em skills/NOTICE.md. Elimina o passo de clone externo pro pilar de seguranca do wf-security-review: git clone deste repo ja traz tudo funcional. Corrige tambem o comando de instalacao pro Claude Code nos dois READMEs e no docs/SKILLS.md: Claude Code exige um diretorio por skill (skills/<nome>/SKILL.md), nao aceita os .md soltos que o comando antigo copiava -- confirmado testando a instalacao real.
12 lines
459 B
Diff
12 lines
459 B
Diff
--- a/app.py
|
|
+++ b/app.py
|
|
def withdraw(conn, user_id: int, amount: int):
|
|
row = conn.execute("SELECT balance FROM accounts WHERE id = ?", (user_id,)).fetchone()
|
|
- # single atomic guarded update
|
|
- cur = conn.execute("UPDATE accounts SET balance = balance - ? WHERE id = ? AND balance >= ?", (amount, user_id, amount))
|
|
- if cur.rowcount == 0:
|
|
- raise ValueError("insufficient funds")
|
|
- conn.commit()
|
|
- return
|
|
if row[0] < amount:
|