summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristophe Grenier <[email protected]>2021-02-22 22:25:56 +0100
committerChristophe Grenier <[email protected]>2021-02-22 22:25:56 +0100
commit6453c9b79b05d92730a391bdf76dc4341f872eab (patch)
tree2fa248ed4a5cf3aadb21b596a2fee03f3fe7f47c /src
parentd52487422276b5c8509721e05bdf851fadfe57f0 (diff)
src/file_icns.c: add frama-c annotations
Diffstat (limited to 'src')
-rw-r--r--src/file_icns.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/file_icns.c b/src/file_icns.c
index 22163694..ddc4dbe9 100644
--- a/src/file_icns.c
+++ b/src/file_icns.c
@@ -32,6 +32,7 @@
#include "filegen.h"
#include "common.h"
+/*@ requires \valid(file_stat); */
static void register_header_check_icns(file_stat_t *file_stat);
const file_hint_t file_hint_icns= {
@@ -56,6 +57,10 @@ struct icon_data
// uint8_t data[0];
};
+/*@
+ @ requires \valid_read(type + (0 .. 3));
+ @ assigns \nothing;
+ @*/
static int check_icon_type(const char *type)
{
/* https://en.wikipedia.org/wiki/Apple_Icon_Image_format */
@@ -97,6 +102,17 @@ static int check_icon_type(const char *type)
return 0;
}
+/*@
+ @ requires buffer_size >= sizeof(struct icns_header) + sizeof(struct icon_data);
+ @ requires \valid_read(buffer+(0..buffer_size-1));
+ @ requires valid_file_recovery(file_recovery);
+ @ requires \valid(file_recovery_new);
+ @ requires file_recovery_new->blocksize > 0;
+ @ requires separation: \separated(&file_hint_icns, buffer+(..), file_recovery, file_recovery_new);
+ @ ensures \result == 0 || \result == 1;
+ @ ensures \result!=0 ==> valid_file_recovery(file_recovery_new);
+ @ assigns *file_recovery_new;
+ @*/
static int header_check_icns(const unsigned char *buffer, const unsigned int buffer_size, const unsigned int safe_header_only, const file_recovery_t *file_recovery, file_recovery_t *file_recovery_new)
{
const struct icns_header *hdr=(const struct icns_header *)buffer;