chore: Add agentic coding tooling
This commit is contained in:
43
.crosslink/rules/c.md
Normal file
43
.crosslink/rules/c.md
Normal file
@@ -0,0 +1,43 @@
|
||||
### C Best Practices
|
||||
|
||||
#### Memory Safety
|
||||
- Always check return values of malloc/calloc
|
||||
- Free all allocated memory (use tools like valgrind)
|
||||
- Initialize all variables before use
|
||||
- Use sizeof() with the variable, not the type
|
||||
|
||||
```c
|
||||
// GOOD: Safe memory allocation
|
||||
int *arr = malloc(n * sizeof(*arr));
|
||||
if (arr == NULL) {
|
||||
return -1; // Handle allocation failure
|
||||
}
|
||||
// ... use arr ...
|
||||
free(arr);
|
||||
|
||||
// BAD: Unchecked allocation
|
||||
int *arr = malloc(n * sizeof(int));
|
||||
arr[0] = 1; // Crash if malloc failed
|
||||
```
|
||||
|
||||
#### Buffer Safety
|
||||
- Always bounds-check array access
|
||||
- Use `strncpy`/`snprintf` instead of `strcpy`/`sprintf`
|
||||
- Validate string lengths before copying
|
||||
|
||||
```c
|
||||
// GOOD: Safe string copy
|
||||
char dest[64];
|
||||
strncpy(dest, src, sizeof(dest) - 1);
|
||||
dest[sizeof(dest) - 1] = '\0';
|
||||
|
||||
// BAD: Buffer overflow risk
|
||||
char dest[64];
|
||||
strcpy(dest, src); // No bounds check
|
||||
```
|
||||
|
||||
#### Security
|
||||
- Never use `gets()` (use `fgets()`)
|
||||
- Validate all external input
|
||||
- Use constant-time comparison for secrets
|
||||
- Avoid integer overflow in size calculations
|
||||
Reference in New Issue
Block a user