Permalink
Please sign in to comment.
Browse files
Fix a buffer overflow in diff -r.
We were doing two 32-byte memset()s instead of two 16-byte memset()s. 'dir' referred to the instance (array of 2) and not the struct type. Add some test coverage for diff, including a case that hit this bug. The bug was found by running cp.test under AddressSanitizer, since it happens to use diff.
- Loading branch information...
Showing
with
33 additions
and 3 deletions.
- +30 −0 tests/diff.test
- +3 −3 toys/pending/diff.c
| @@ -0,0 +1,30 @@ | ||
| #!/bin/bash | ||
| #testing "name" "command" "result" "infile" "stdin" | ||
| seq 10 > left | ||
| seq 11 > right | ||
| expected='--- left | ||
| +++ right | ||
| @@ -8,3 +8,4 @@ | ||
| 8 | ||
| 9 | ||
| 10 | ||
| +11 | ||
| ' | ||
| # Hm this only gives unified diffs? | ||
| testing "simple" "diff left right" "$expected" "" "" | ||
| expected='--- tree1/file | ||
| +++ tree2/file | ||
| @@ -1 +1 @@ | ||
| -foo | ||
| +food | ||
| ' | ||
| mkdir -p tree1 tree2 | ||
| echo foo > tree1/file | ||
| echo food > tree2/file | ||
| testing "simple" "diff -r tree1 tree2 |tee out" "$expected" "" "" |
0 comments on commit
433296f