MCPcopy Create free account
hub / github.com/cgsecurity/testdisk / pos_in_mem

Function pos_in_mem

src/file_zip.c:1396–1410  ·  view source on GitHub ↗

@ @ requires haystack_size > 0; @ requires needle_size > 0; @ requires \valid_read(haystack + (0 .. haystack_size-1)); @ requires \valid_read(needle + (0 .. needle_size-1)); @ assigns \nothing; @ ensures \result <= haystack_size; @*/

Source from the content-addressed store, hash-verified

1394 @ ensures \result <= haystack_size;
1395 @*/
1396static unsigned int pos_in_mem(const unsigned char *haystack, const unsigned int haystack_size, const unsigned char *needle, const unsigned int needle_size)
1397{
1398 unsigned int i;
1399 if(haystack_size < needle_size)
1400 return 0;
1401 /*@
1402 @ loop invariant 0 <= i <= haystack_size - needle_size + 1;
1403 @ loop assigns i;
1404 @ loop variant haystack_size - needle_size - i;
1405 @*/
1406 for(i=0; i <= haystack_size - needle_size; i++)
1407 if(memcmp(&haystack[i],needle,needle_size)==0)
1408 return (i+needle_size);
1409 return 0;
1410}
1411
1412/*@
1413 @ requires valid_register_header_check(file_stat);

Callers 1

header_check_zipFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected