Skip to content

fix(api): re-encode uploaded PNGs before storage (#5) - #76

Merged
leocagli merged 3 commits into
Bitcoindefi:mainfrom
martinextrabox-netizen:fix/png-upload-reencode
Sep 16, 2026
Merged

leocagli merged 3 commits into
Bitcoindefi:mainfrom
martinextrabox-netizen:fix/png-upload-reencode

Conversation

@martinextrabox-netizen

Copy link
Copy Markdown

Closes #5

Qué cambia

  • Decodifica y re-encodea cada PNG antes de calcular su checksum y guardarlo.
  • Rechaza archivos truncados, corruptos, con CRC inválido o dimensiones incoherentes.
  • Elimina chunks auxiliares y bytes anexados después de IEND, evitando almacenar payloads controlados por el usuario.
  • Deduplica sobre la salida canónica y conserva atribución, límites y almacenamiento existentes de feat(modo-construccion): subir PNG y pintarlos en el mapa, con borrador y revertir #33.
  • Añade pruebas unitarias y de repositorio para PNG falso, truncado, payload anexado, límites, deduplicación canónica y atribución.

Verificación

  • pnpm exec vitest run src/tests/png-validation.test.ts src/tests/world-builder-upload.test.ts — 7/7 pruebas pasan.
  • pnpm exec tsc --noEmit — sin errores.

El cambio es deliberadamente pequeño y se apoya en la implementación ya fusionada de #33; no duplica rutas ni crea un almacenamiento paralelo.

@martinextrabox-netizen

Copy link
Copy Markdown
Author

@leocagli La implementación asignada para #5 está lista para revisión. Volví a ejecutar el árbol exacto publicado: las 7 pruebas enfocadas pasan y tsc --noEmit termina sin errores. El PR es fusionable y se limita al re-encodeado/validación de PNG y sus pruebas.

@gitar-bot

gitar-bot Bot commented Sep 16, 2026 •

Copy link
Copy Markdown

Gitar is working

Gitar

@leocagli
leocagli merged commit 0683f86 into Bitcoindefi:main Sep 16, 2026
6 checks passed
@leocagli

Copy link
Copy Markdown
Collaborator

Revisado y mergeado. El enfoque es el correcto: se valida la cabecera antes de descomprimir (asi un archivo hostil no reserva una imagen enorme), pngjs verifica CRC y el flujo completo, y lo que se guarda es el PNG re-encodeado, no los bytes del usuario. El checksum sobre el contenido normalizado tambien evita duplicados por metadatos. Gracias.

EHFCEngineering07 pushed a commit to EHFCEngineering07/OpenAO-1 that referenced this pull request Sep 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Etapa 1: subida y almacenamiento de PNG para tiles

2 participants