Add strncat and strrchr to bounds checking

This commit is contained in:
herman ten brugge
2022-11-25 00:31:32 -06:00
parent f48efeef8c
commit 28fa4d3db6
6 changed files with 89 additions and 7 deletions

View File

@@ -156,8 +156,18 @@ int main()
#elif defined test_bcheck_125
strcat(&a[3], &a[0]);
#elif defined test_bcheck_126
strchr(&b[0], 'a');
strncat(&a[7], &a[0], 3);
#elif defined test_bcheck_127
strncat(&a[0], &b[3], 8);
#elif defined test_bcheck_128
strncat(&a[0], &a[4], 3);
#elif defined test_bcheck_129
strncat(&a[3], &a[0], 10);
#elif defined test_bcheck_130
strchr(&b[0], 'a');
#elif defined test_bcheck_131
strrchr(&b[0], 'a');
#elif defined test_bcheck_132
free(strdup(&b[0]));
#endif
}

View File

@@ -134,9 +134,29 @@
[returns 255]
[test_bcheck_126]
112_backtrace.c:159: at main: BCHECK: invalid pointer ........, size 0x? in strchr
112_backtrace.c:159: at main: BCHECK: invalid pointer ........, size 0x? in strncat dest
[returns 255]
[test_bcheck_127]
112_backtrace.c:161: at main: BCHECK: invalid pointer ........, size 0x? in strdup
112_backtrace.c:161: at main: BCHECK: invalid pointer ........, size 0x? in strncat dest
[returns 255]
[test_bcheck_128]
112_backtrace.c:163: at main: BCHECK: overlapping regions ........(0x?), ........(0x?) in strncat
[returns 255]
[test_bcheck_129]
112_backtrace.c:165: at main: BCHECK: overlapping regions ........(0x?), ........(0x?) in strncat
[returns 255]
[test_bcheck_130]
112_backtrace.c:167: at main: BCHECK: invalid pointer ........, size 0x? in strchr
[returns 255]
[test_bcheck_131]
112_backtrace.c:169: at main: BCHECK: invalid pointer ........, size 0x? in strrchr
[returns 255]
[test_bcheck_132]
112_backtrace.c:171: at main: BCHECK: invalid pointer ........, size 0x? in strdup
[returns 255]

View File

@@ -60,12 +60,20 @@ main (void)
r = (__builtin_memcmp (p, str, sizeof(str)));
printf(" 11:%d", !r);
r = (__builtin_strchr(p, 'z') != &p[25]);
tmp[0] = '\0';
p = __builtin_strncat(tmp, str, __builtin_strlen(str));
r = (__builtin_memcmp (p, str, sizeof(str)));
printf(" 12:%d", !r);
r = (__builtin_strchr(p, 'z') != &p[25]);
printf(" 13:%d", !r);
r = (__builtin_strrchr(p, 'z') != &p[25]);
printf(" 14:%d", !r);
p = __builtin_strdup (str);
r = (__builtin_memcmp (p, str, sizeof(str)));
printf(" 13:%d", !r);
printf(" 15:%d", !r);
__builtin_free(p);
p = __builtin_malloc (100);

View File

@@ -1,4 +1,4 @@
BOUNDS OFF:
1:1 2:1 3:1 4:1 5:1 6:1 7:1 8:1 9:1 10:1 11:1 12:1 13:1
1:1 2:1 3:1 4:1 5:1 6:1 7:1 8:1 9:1 10:1 11:1 12:1 13:1 14:1 15:1
BOUNDS ON:
1:1 2:1 3:1 4:1 5:1 6:1 7:1 8:1 9:1 10:1 11:1 12:1 13:1
1:1 2:1 3:1 4:1 5:1 6:1 7:1 8:1 9:1 10:1 11:1 12:1 13:1 14:1 15:1