Skip to content

Harden database name handling#180

Merged
ecarreras merged 1 commit into
masterfrom
176/harden-database-names
May 4, 2026
Merged

Harden database name handling#180
ecarreras merged 1 commit into
masterfrom
176/harden-database-names

Conversation

@pilipilisbot
Copy link
Copy Markdown
Contributor

Objectiu

Endurir la gestió de noms de base de dades en OpenERPService.create_database() i OpenERPService.drop_database().

Refs #176

Canvis

  • Generació de BBDD temporal amb uuid4 en lloc de int(time.time()), evitant col·lisions dins el mateix segon.
  • Validació explícita de noms de BBDD amb whitelist compatible amb identificadors PostgreSQL:
    • ^[A-Za-z_][A-Za-z0-9_]*$
    • màxim 63 caràcters.
  • Quoting d'identificadors en CREATE DATABASE i DROP DATABASE.
  • pg_stat_activity.datname passa a usar paràmetre SQL en lloc de format string.
  • Validació també al setter db_name, cobrint valors via configuració/CLI.
  • Tests unitaris sense PostgreSQL real per generació, validació, SQL generat i rebuig de noms insegurs.

Validació

Executat correctament:

# Python 2.7.18
python -m unittest discover tests

# Python 3.11.15
python -m unittest discover tests

git diff --check

No he executat mamba spec perquè mamba no està instal·lat en aquest entorn local.

Nota: Python 3.12 sobre master encara queda bloquejat per #175 (imp eliminat). Aquesta PR no depèn funcionalment de PostgreSQL real per als tests afegits.

Validate database names, quote database identifiers and use a parameter for pg_stat_activity.datname.

Generate temporary database names with uuid4 to avoid one-second collisions.

Co-authored-by: Eduard Carreras <ecarreras@gisce.net>
@ecarreras ecarreras merged commit e4a50f5 into master May 4, 2026
2 checks passed
@ecarreras ecarreras deleted the 176/harden-database-names branch May 4, 2026 08:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement patch Patch auto version V_._.X

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants