Skip to content
Snippets Groups Projects
Commit 6badae9d authored by Andre Maroneze's avatar Andre Maroneze
Browse files

[Libc] fix spec of strncpy

parent 8dacf071
No related branches found
No related tags found
No related merge requests found
...@@ -354,7 +354,7 @@ extern char *strerror(int errnum); ...@@ -354,7 +354,7 @@ extern char *strerror(int errnum);
extern char *strcpy(char *restrict dest, const char *restrict src); extern char *strcpy(char *restrict dest, const char *restrict src);
/*@ /*@
@ requires valid_string_src: valid_read_string(src); @ requires valid_nstring_src: valid_read_nstring(src, n);
@ requires room_nstring: \valid(dest+(0 .. n-1)); @ requires room_nstring: \valid(dest+(0 .. n-1));
@ requires separation: @ requires separation:
@ \separated(dest+(0..n-1), src+(0..n-1)); @ \separated(dest+(0..n-1), src+(0..n-1));
......
...@@ -107,6 +107,19 @@ void test_strtok_r() { ...@@ -107,6 +107,19 @@ void test_strtok_r() {
} }
} }
void test_strncpy() {
char src[] = { 'a', 'b', 'c' };
char dst[3];
strncpy(dst,src,3);
char src2[3];
src2[0] = 'a';
src2[1] = 'b';
if (nondet) {
strncpy(dst,src2,3);
//@ assert unreachable: \false;
}
}
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
test_strcmp(); test_strcmp();
...@@ -125,5 +138,6 @@ int main(int argc, char **argv) ...@@ -125,5 +138,6 @@ int main(int argc, char **argv)
size_t r3 = strlcat(buf2, buf, 32); size_t r3 = strlcat(buf2, buf, 32);
char *strsig = strsignal(1); char *strsig = strsignal(1);
//@ assert valid_read_string(strsig); //@ assert valid_read_string(strsig);
test_strncpy();
return 0; return 0;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment