Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Buffer Overflows and Memory Safety | Writing Safe and Predictable Code
C Defensive Programming and Error Handling

bookBuffer Overflows and Memory Safety

Buffer overflows happen when you write more data to a buffer, such as an array, than it can hold. In C, arrays do not automatically check their bounds, so it is easy to accidentally overwrite memory beyond the end of an array. This can occur when using unsafe functions like strcpy or by writing to an array index that is outside its defined range.

main.c

main.c

copy
123456789101112131415161718192021222324252627
#include <stdio.h> #include <string.h> // Function that causes a buffer overflow void unsafe_copy(const char *input) { char buffer[8]; // Unsafe: does not check input length strcpy(buffer, input); printf("Buffer contents: %s\n", buffer); } // Corrected version that checks bounds void safe_copy(const char *input) { char buffer[8]; // Safe: copies only up to buffer size - 1 and null-terminates strncpy(buffer, input, sizeof(buffer) - 1); buffer[sizeof(buffer) - 1] = '\0'; printf("Buffer contents: %s\n", buffer); } int main() { printf("Unsafe copy (may overflow):\n"); unsafe_copy("This input is too long for the buffer!"); printf("\nSafe copy (prevents overflow):\n"); safe_copy("This input is too long for the buffer!"); return 0; }

The consequences of a buffer overflow can be serious. It may cause program crashes, unpredictable behavior, or security vulnerabilities. Attackers can exploit them to run malicious code or access sensitive data. These are some of the most dangerous bugs in C, as they are often hard to detect and fix.

To prevent them, always check buffer sizes and avoid writing past their limits. Use safer functions like strncpy instead of strcpy, and make sure to null-terminate strings. Validate input lengths and avoid hard-coded buffer sizes to keep your programs safe and reliable.

Note
Study More

To deepen your understanding of secure coding in C, consult resources such as the CERT C Coding Standard for secure coding.

question mark

What is a common consequence of a buffer overflow in C?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 2

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 12.5

bookBuffer Overflows and Memory Safety

Desliza para mostrar el menú

Buffer overflows happen when you write more data to a buffer, such as an array, than it can hold. In C, arrays do not automatically check their bounds, so it is easy to accidentally overwrite memory beyond the end of an array. This can occur when using unsafe functions like strcpy or by writing to an array index that is outside its defined range.

main.c

main.c

copy
123456789101112131415161718192021222324252627
#include <stdio.h> #include <string.h> // Function that causes a buffer overflow void unsafe_copy(const char *input) { char buffer[8]; // Unsafe: does not check input length strcpy(buffer, input); printf("Buffer contents: %s\n", buffer); } // Corrected version that checks bounds void safe_copy(const char *input) { char buffer[8]; // Safe: copies only up to buffer size - 1 and null-terminates strncpy(buffer, input, sizeof(buffer) - 1); buffer[sizeof(buffer) - 1] = '\0'; printf("Buffer contents: %s\n", buffer); } int main() { printf("Unsafe copy (may overflow):\n"); unsafe_copy("This input is too long for the buffer!"); printf("\nSafe copy (prevents overflow):\n"); safe_copy("This input is too long for the buffer!"); return 0; }

The consequences of a buffer overflow can be serious. It may cause program crashes, unpredictable behavior, or security vulnerabilities. Attackers can exploit them to run malicious code or access sensitive data. These are some of the most dangerous bugs in C, as they are often hard to detect and fix.

To prevent them, always check buffer sizes and avoid writing past their limits. Use safer functions like strncpy instead of strcpy, and make sure to null-terminate strings. Validate input lengths and avoid hard-coded buffer sizes to keep your programs safe and reliable.

Note
Study More

To deepen your understanding of secure coding in C, consult resources such as the CERT C Coding Standard for secure coding.

question mark

What is a common consequence of a buffer overflow in C?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 2
some-alt