-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Detección problemática de rutas de fichero en cadenas #17
Comments
¿Alguna idea de por que hace eso? |
Je, pensaba que lo había explicado en el post original pero no. Lo hace para detectar a qué ficheros hace referencia el juego y deberían ser incluidos en el instalador. El compilador coge cada literal de cadena, le intenta hacer un fopen() y si no da error es que es un fichero existente y lo añade a una lista para que el creador de instalaciones lo incluya en el PAK. Por eso, si cargas un fichero con un nombre generado en tiempo de ejecución, como |
Estaría bien directamente quitar eso, y poder pasarle una lista de archivos en texto plano. Al menos eso funcionaria bien si solo hace falta para el instalador |
Madre mía vaya agujerazo de seguridad guapo... ahora estoy recordando expedientes X en la época con llamar a las cadenas con contenidos peculiares ("con/con" anyone?) |
Ya te digo, pantallazos azules por todas partes |
Watcom incluye una función llamada |
¿Qué os parecería meter algo de este estilo?
Ventajas:
Desventajas:
Otra opción sería poder pasarle un archivo que contenga esa lista, algo como:
|
Vale, se me acaban de ocurrir un par de cosas 😆:
¿Qué os parece? |
Yo veo mejor la solución de un fichero de texto con un compiler_options. Si no se usa esa opción, se mantiene el comportamiento original. Así no rompes la compatibilidad con DIV2 ni para generar los instaladores. |
Al compilar, DIV recorre TODAS LAS CADENAS en un PRG y trata de comprobar si son rutas a ficheros existentes (con
fopen
si no recuerdo mal). Esto puede provocar PROBLEMAS GORDOS en la mayoría de plataformas (si no todas).fopen
a lo loco en sistemas Unix puede explotar si intentas abrir una carpeta, un fichero de tipo especial, un dispositivo…Posible solución: usar
stat()
o un equivalente en lugar defopen()
???Y ya puestos, una mejora muy guapa sería dar libertad al usuario para decidir qué archivos se incluyen en la instalación de su juego y cuáles no. Eso lo dejamos para un futuro.
The text was updated successfully, but these errors were encountered: