Tecnología

Inicio

Cómo arreglar un desbordamiento de buffer

Un desbordamiento del búfer, o desbordamiento de memoria, es un problema en el que un programa de ordenador escribe más datos a una memoria intermedia que se ha asignado para ese búfer. Como resultado, los datos se escriben en una parte adyacente de la memoria, que podría sobrescribir otros datos. Esto puede provocar que el programa actúe de manera irregular, que puede causar que se caiga. También puede ser explotado para desencadenar la ejecución de un programa malicioso. Como tal, siempre es aconsejable evitar desbordamientos de búfer en un programa.

Instrucciones

1 Reducir su búsqueda. Usted puede hacer esto mediante la impresión de información de depuración y mediante la prevención de las porciones del programa se ejecute. desbordamientos de memoria pueden ser difíciles de localizar porque la evidencia no siempre es consistente. Sin embargo, si la evidencia que tiene desaparece cuando se impide que una parte del programa de funcionamiento, que es una buena indicación de que el problema está en esa porción.

2 Leer el código fuente. Una vez que haya reducido suficientemente su búsqueda, mirar a través del código fuente de algo que podría potencialmente causar un desbordamiento. A veces es en un bucle que escribe más allá de la longitud de una matriz. A veces es una concatenación de cadenas a una cadena más grande que el búfer asignado para esa cadena.

3 Solucionar el fallo. Si el problema estaba escribiendo más allá los límites de una matriz, asegúrese de que la causa que ocasionó que se ejecuta correctamente, o que la matriz se cambia el tamaño adecuadamente según sea necesario. Asegúrese de que todas las memorias intermedias de cadena son lo suficientemente grande como para contener las cadenas que puedan organizar.

4 Tomar medidas preventivas. Utilice funciones de comprobación de límites a fin de garantizar que la memoria no se sobrescribe. Dinámicamente cambiar el tamaño de las matrices según sea necesario. Realizar un seguimiento cuidadoso de toda la memoria escribe potencial para asegurarse de que nunca se escriben en el área de memoria incorrecto.

Consejos y advertencias

  • También hay programas de terceros que ayudan a analizar el código fuente y los programas en ejecución para los errores de memoria, incluyendo Valgrind, BoundsChecker, Purificar y Insure ++.