summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristophe Grenier <[email protected]>2014-07-26 22:36:01 +0200
committerChristophe Grenier <[email protected]>2014-07-26 22:36:01 +0200
commit09d486bc60f5128f6d6225e6c133545821e34f1f (patch)
treeaff54892da04b19019c7189c3e85e0332d2ab042
parent23c4c598f497cb074209f5030cc4f5543e848c1b (diff)
PhotoRec: define minimal size for .qxd
-rw-r--r--src/file_qxd.c45
1 files changed, 20 insertions, 25 deletions
diff --git a/src/file_qxd.c b/src/file_qxd.c
index 0a01a790..1b1a4887 100644
--- a/src/file_qxd.c
+++ b/src/file_qxd.c
@@ -41,37 +41,32 @@ const file_hint_t file_hint_qxd= {
.max_filesize=PHOTOREC_MAX_FILE_SIZE,
.recover=1,
.enable_by_default=1,
- .register_header_check=&register_header_check_qxd
+ .register_header_check=&register_header_check_qxd
};
-static const unsigned char qxd_header[4]={'X','P','R','3' };
-static const unsigned char qxp_header_be[6]={'I','I','X','P','R','3' };
-static const unsigned char qxp_header_le[6]={'M','M','X','P','R','3' };
-
-static void register_header_check_qxd(file_stat_t *file_stat)
+static int header_check_qxd(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)
{
- register_header_check(0, qxd_header,sizeof(qxd_header), &header_check_qxd, file_stat);
- register_header_check(2, qxp_header_be,sizeof(qxp_header_be), &header_check_qxd, file_stat);
- register_header_check(2, qxp_header_le,sizeof(qxp_header_le), &header_check_qxd, file_stat);
+ reset_file_recovery(file_recovery_new);
+ file_recovery_new->extension=file_hint_qxd.extension;
+ file_recovery_new->min_filesize=4;
+ return 1;
}
-static int header_check_qxd(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)
+static int header_check_qxp(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,qxd_header,sizeof(qxd_header))==0)
- {
- reset_file_recovery(file_recovery_new);
- file_recovery_new->extension=file_hint_qxd.extension;
- return 1;
- }
/* Intel or Mac QuarkXpress Document */
- if(memcmp(buffer+2,qxp_header_be,sizeof(qxp_header_be))==0 ||
- memcmp(buffer+2,qxp_header_le,sizeof(qxp_header_le))==0)
- {
- reset_file_recovery(file_recovery_new);
- file_recovery_new->extension="qxp";
- return 1;
- }
- return 0;
+ reset_file_recovery(file_recovery_new);
+ file_recovery_new->extension="qxp";
+ file_recovery_new->min_filesize=6;
+ return 1;
}
-
+static void register_header_check_qxd(file_stat_t *file_stat)
+{
+ static const unsigned char qxd_header[4]={'X','P','R','3' };
+ static const unsigned char qxp_header_be[6]={'I','I','X','P','R','3' };
+ static const unsigned char qxp_header_le[6]={'M','M','X','P','R','3' };
+ register_header_check(0, qxd_header,sizeof(qxd_header), &header_check_qxd, file_stat);
+ register_header_check(2, qxp_header_be,sizeof(qxp_header_be), &header_check_qxp, file_stat);
+ register_header_check(2, qxp_header_le,sizeof(qxp_header_le), &header_check_qxp, file_stat);
+}