diff options
author | Christophe Grenier <[email protected]> | 2013-03-10 16:04:34 +0100 |
---|---|---|
committer | Christophe Grenier <[email protected]> | 2013-03-10 16:04:34 +0100 |
commit | 1f0ee68f006e2a1d8a370705c4b583681496aeb2 (patch) | |
tree | a2383973d7a42c9f318b1cc8af7cd914f697f1d0 | |
parent | 50f8149eff7dc6a58c55409797aeb3360aa3ff97 (diff) |
PhotoRec: stricter .nsf check
-rw-r--r-- | src/file_nsf.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/src/file_nsf.c b/src/file_nsf.c index 67d07be9..ade09e2a 100644 --- a/src/file_nsf.c +++ b/src/file_nsf.c @@ -31,7 +31,6 @@ #include "filegen.h" static void register_header_check_nsf(file_stat_t *file_stat); -static int header_check_nsf(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 file_hint_t file_hint_nsf= { .extension="nsf", @@ -43,22 +42,21 @@ const file_hint_t file_hint_nsf= { .register_header_check=®ister_header_check_nsf }; -static const unsigned char nsf_header[6]= { - 0x1a, 0x00, 0x00, 0x04, 0x00, 0x00 -}; +static int header_check_nsf(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) +{ + /* I hope it's a valid check */ + if(buffer[0x10]!=0x25 || buffer[0x11]!=0x85) + return 0; + reset_file_recovery(file_recovery_new); + file_recovery_new->extension=file_hint_nsf.extension; + return 1; +} static void register_header_check_nsf(file_stat_t *file_stat) { + static const unsigned char nsf_header[6]= { + 0x1a, 0x00, 0x00, 0x04, 0x00, 0x00 + }; register_header_check(0, nsf_header, sizeof(nsf_header), &header_check_nsf, file_stat); } -static int header_check_nsf(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) -{ - if(memcmp(buffer, nsf_header, sizeof(nsf_header))==0) - { - reset_file_recovery(file_recovery_new); - file_recovery_new->extension=file_hint_nsf.extension; - return 1; - } - return 0; -} |