summaryrefslogtreecommitdiffstats
path: root/src/filegen.h
diff options
context:
space:
mode:
authorChristophe Grenier <[email protected]>2020-09-12 16:19:07 +0200
committerChristophe Grenier <[email protected]>2020-09-12 16:19:07 +0200
commit12bb2ea5ae3f35dcc8c472d87d9319f8443b37df (patch)
treefe9969c0d10793bd41e78d1b5e3fb33979b60b97 /src/filegen.h
parenta7606a61fcf52be87294d4552618567fd7f2749c (diff)
PhotoRec: fix problems reported by frama-c
Diffstat (limited to 'src/filegen.h')
-rw-r--r--src/filegen.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/filegen.h b/src/filegen.h
index cfd9a72a..6dc76b41 100644
--- a/src/filegen.h
+++ b/src/filegen.h
@@ -24,6 +24,9 @@
#ifdef __cplusplus
extern "C" {
#endif
+#if defined(__FRAMAC__)
+#include "__fc_builtin.h"
+#endif
#include "list.h"
@@ -130,18 +133,22 @@ void file_allow_nl(file_recovery_t *file_recovery, const unsigned int nl_mode);
/*@
@ requires \valid(handle);
- @ requires footer_length > 0;
+ @ requires 0 < footer_length < 4096;
@ requires \valid_read((char *)footer+(0..footer_length-1));
+ @ requires \separated(handle, (char *)footer + (..), &errno, &Frama_C_entropy_source);
+ @ assigns *handle, errno, Frama_C_entropy_source;
@*/
uint64_t file_rsearch(FILE *handle, uint64_t offset, const void*footer, const unsigned int footer_length);
/*@
@ requires \valid(file_recovery);
@ requires \valid(file_recovery->handle);
- @ requires footer_length > 0;
+ @ requires 0 < footer_length < 4096;
@ requires \valid_read((char *)footer+(0..footer_length-1));
- @ requires \separated(file_recovery, file_recovery->handle);
+ @ requires \separated(file_recovery, file_recovery->handle, file_recovery->extension, &errno, &Frama_C_entropy_source);
@ ensures \valid(file_recovery->handle);
+ @ assigns *file_recovery->handle, errno, file_recovery->file_size;
+ @ assigns Frama_C_entropy_source;
@*/
void file_search_footer(file_recovery_t *file_recovery, const void*footer, const unsigned int footer_length, const unsigned int extra_length);