Skip to content

C Secure Functions

Using secure functions to prevent common security vulnerabilities.

1. String Functions

c
// Instead of strcpy
strncpy(dest, src, sizeof(dest) - 1);
dest[sizeof(dest) - 1] = '\0';

// Instead of strcat
strncat(dest, src, sizeof(dest) - strlen(dest) - 1);

// Instead of sprintf
snprintf(buffer, sizeof(buffer), "Value: %d", value);

2. Input Functions

c
// Instead of gets (dangerous)
fgets(buffer, sizeof(buffer), stdin);

// Remove newline if present
buffer[strcspn(buffer, "\n")] = '\0';

3. Memory Functions

c
// Instead of memcpy for overlapping regions
memmove(dest, src, size);

4. Bounds Checking

c
// Always check array bounds
if (index >= 0 && index < array_size) {
    array[index] = value;
}

5. Integer Overflow

c
// Check for overflow
if (a > INT_MAX - b) {
    // Handle overflow
}

6. Best Practices

  • Use functions with size parameters
  • Validate all inputs
  • Check return values
  • Use compiler security flags

Content is for learning and research only.