summaryrefslogtreecommitdiffstats
path: root/src/file_qbb.c
diff options
context:
space:
mode:
authorChristophe Grenier <grenier@cgsecurity.org>2014-07-26 22:35:09 +0200
committerChristophe Grenier <grenier@cgsecurity.org>2014-07-26 22:35:09 +0200
commit23c4c598f497cb074209f5030cc4f5543e848c1b (patch)
treed1408f132767374ac7f222dc747652afa6a8563a /src/file_qbb.c
parent43c7045c0b583f1c9a3d38e7e5ebf678681b5318 (diff)
PhotoRec: code clean in src/file_qbb.c
Diffstat (limited to 'src/file_qbb.c')
-rw-r--r--src/file_qbb.c75
1 files changed, 38 insertions, 37 deletions
diff --git a/src/file_qbb.c b/src/file_qbb.c
index d387e07..b579ab2 100644
--- a/src/file_qbb.c
+++ b/src/file_qbb.c
@@ -32,9 +32,6 @@
static void register_header_check_qbb(file_stat_t *file_stat);
-static int header_check_qbb(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 data_check_t data_check_qbb(const unsigned char *buffer, const unsigned int buffer_size, file_recovery_t *file_recovery);
-static void file_check_qbb(file_recovery_t *file_recovery);
const file_hint_t file_hint_qbb= {
.extension="qbb",
@@ -43,35 +40,39 @@ const file_hint_t file_hint_qbb= {
.max_filesize=PHOTOREC_MAX_FILE_SIZE,
.recover=1,
.enable_by_default=1,
- .register_header_check=&register_header_check_qbb
+ .register_header_check=&register_header_check_qbb
};
-static const unsigned char qbb_header[10]= {0x45, 0x86, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, 0x00};
-static const unsigned char qbw_header[4]= {0x56, 0x00, 0x00, 0x00};
-static const unsigned char qbw2_header[4]= {0x5e, 0xba, 0x7a, 0xda};
+static data_check_t data_check_qbb(const unsigned char *buffer, const unsigned int buffer_size, file_recovery_t *file_recovery)
+{
+ if(file_recovery->file_size + buffer_size / 2 > file_recovery->calculated_file_size+512)
+ {
+ return DC_STOP;
+ }
+ return DC_CONTINUE;
+}
-static void register_header_check_qbb(file_stat_t *file_stat)
+static void file_check_qbb(file_recovery_t *file_recovery)
{
- register_header_check(0, qbb_header,sizeof(qbb_header), &header_check_qbb, file_stat);
- register_header_check(4, qbw_header,sizeof(qbw_header), &header_check_qbb, file_stat);
- register_header_check(0x14, qbw2_header,sizeof(qbw2_header), &header_check_qbb, file_stat);
+ if(file_recovery->file_size < file_recovery->calculated_file_size)
+ file_recovery->file_size=0;
}
static int header_check_qbb(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, qbb_header, sizeof(qbb_header))==0)
- {
- reset_file_recovery(file_recovery_new);
- /* The filesize is bigger */
- file_recovery_new->calculated_file_size=(uint64_t)buffer[0x37] + (((uint64_t)buffer[0x37+1])<<8)+
- (((uint64_t)buffer[0x37+2])<<16) + (((uint64_t)buffer[0x37+3])<<24);
- file_recovery_new->extension=file_hint_qbb.extension;
- file_recovery_new->data_check=&data_check_qbb;
- file_recovery_new->file_check=&file_check_qbb;
- return 1;
- }
- if(buffer[4]==0x56 && buffer[5]==0x00 && buffer[6]==0x00 && buffer[7]==0x00 &&
- buffer[0x60]=='M' && buffer[0x61]=='A' && buffer[0x62]=='U' && buffer[0x63]=='I')
+ reset_file_recovery(file_recovery_new);
+ /* The filesize is bigger */
+ file_recovery_new->calculated_file_size=(uint64_t)buffer[0x37] + (((uint64_t)buffer[0x37+1])<<8)+
+ (((uint64_t)buffer[0x37+2])<<16) + (((uint64_t)buffer[0x37+3])<<24);
+ file_recovery_new->extension=file_hint_qbb.extension;
+ file_recovery_new->data_check=&data_check_qbb;
+ file_recovery_new->file_check=&file_check_qbb;
+ return 1;
+}
+
+static int header_check_qbw(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(buffer[0x60]=='M' && buffer[0x61]=='A' && buffer[0x62]=='U' && buffer[0x63]=='I')
{
reset_file_recovery(file_recovery_new);
file_recovery_new->extension="qbw";
@@ -81,8 +82,12 @@ static int header_check_qbb(const unsigned char *buffer, const unsigned int buff
file_recovery_new->file_check=&file_check_size;
return 1;
}
- if(memcmp(&buffer[0x14], qbw2_header, sizeof(qbw2_header))==0 &&
- memcmp(&buffer[0x87A], "Sybase", 6)==0)
+ return 0;
+}
+
+static int header_check_qbw2(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[0x87A], "Sybase", 6)==0)
{
reset_file_recovery(file_recovery_new);
file_recovery_new->extension="qbw";
@@ -91,17 +96,13 @@ static int header_check_qbb(const unsigned char *buffer, const unsigned int buff
return 0;
}
-static data_check_t data_check_qbb(const unsigned char *buffer, const unsigned int buffer_size, file_recovery_t *file_recovery)
-{
- if(file_recovery->file_size + buffer_size / 2 > file_recovery->calculated_file_size+512)
- {
- return DC_STOP;
- }
- return DC_CONTINUE;
-}
-static void file_check_qbb(file_recovery_t *file_recovery)
+static void register_header_check_qbb(file_stat_t *file_stat)
{
- if(file_recovery->file_size < file_recovery->calculated_file_size)
- file_recovery->file_size=0;
+ static const unsigned char qbb_header[10]= {0x45, 0x86, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, 0x00};
+ static const unsigned char qbw2_header[4]= {0x5e, 0xba, 0x7a, 0xda};
+ static const unsigned char qbw_header[4]= {0x56, 0x00, 0x00, 0x00};
+ register_header_check(0, qbb_header,sizeof(qbb_header), &header_check_qbb, file_stat);
+ register_header_check(4, qbw_header,sizeof(qbw_header), &header_check_qbw, file_stat);
+ register_header_check(0x14, qbw2_header,sizeof(qbw2_header), &header_check_qbw2, file_stat);
}