Use the right struct with the PDF stats callbacks

pull/6/head
Shawn Webb 11 years ago
parent 930b93953b
commit 224d1c4de0
  1. 116
      libclamav/pdf.c
  2. 3
      libclamav/pdf.h

@ -79,39 +79,39 @@ static const char *pdf_nextlinestart(const char *ptr, size_t len);
static const char *pdf_nextobject(const char *ptr, size_t len);
/* PDF statistics callbacks and related */
struct pdf_action;
struct pdfname_action;
static void pdf_export_json(struct pdf_struct *);
static void ASCIIHexDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void ASCII85Decode_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void EmbeddedFile_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void FlateDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Image_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void LZWDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void RunLengthDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void CCITTFaxDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void JBIG2Decode_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void DCTDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void JPXDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Crypt_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Standard_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Sig_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void JavaScript_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void OpenAction_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Launch_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Page_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void ASCIIHexDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void ASCII85Decode_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void EmbeddedFile_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void FlateDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Image_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void LZWDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void RunLengthDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void CCITTFaxDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void JBIG2Decode_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void DCTDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void JPXDecode_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Crypt_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Standard_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Sig_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void JavaScript_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void OpenAction_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Launch_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Page_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void print_pdf_stats(struct pdf_struct *);
static void Author_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Creator_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Producer_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void CreationDate_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void ModificationDate_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Title_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Subject_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Keywords_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Pages_cb(struct pdf_struct *, struct pdf_obj *, struct pdf_action *);
static void Colors_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act);
static void Author_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Creator_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Producer_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void CreationDate_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void ModificationDate_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Title_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Subject_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Keywords_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Pages_cb(struct pdf_struct *, struct pdf_obj *, struct pdfname_action *);
static void Colors_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act);
/* End PDF statistics callbacks and related */
static int xrefCheck(const char *xref, const char *eof)
@ -1295,7 +1295,7 @@ struct pdfname_action {
enum pdf_objflags set_objflag;/* OBJ_DICT is noop */
enum objstate from_state;/* STATE_NONE is noop */
enum objstate to_state;
void (*pdf_stats_cb)(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act);
void (*pdf_stats_cb)(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act);
};
static struct pdfname_action pdfname_actions[] = {
@ -2776,7 +2776,7 @@ pdf_nextobject(const char *ptr, size_t len)
}
/* PDF statistics */
static void ASCIIHexDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void ASCIIHexDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2784,7 +2784,7 @@ static void ASCIIHexDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struc
pdf->stats.nasciihexdecode++;
}
static void ASCII85Decode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void ASCII85Decode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2792,7 +2792,7 @@ static void ASCII85Decode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct
pdf->stats.nascii85decode++;
}
static void EmbeddedFile_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void EmbeddedFile_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2800,7 +2800,7 @@ static void EmbeddedFile_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct
pdf->stats.nembeddedfile++;
}
static void FlateDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void FlateDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2808,7 +2808,7 @@ static void FlateDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct p
pdf->stats.nflate++;
}
static void Image_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Image_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2816,7 +2816,7 @@ static void Image_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_act
pdf->stats.nimage++;
}
static void LZWDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void LZWDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2824,7 +2824,7 @@ static void LZWDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf
pdf->stats.nlzw++;
}
static void RunLengthDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void RunLengthDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2832,7 +2832,7 @@ static void RunLengthDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, stru
pdf->stats.nrunlengthdecode++;
}
static void CCITTFaxDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void CCITTFaxDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2840,7 +2840,7 @@ static void CCITTFaxDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struc
pdf->stats.nfaxdecode++;
}
static void JBIG2Decode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void JBIG2Decode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
#if HAVE_JSON
struct json_object *pdfobj, *jbig2arr, *jbig2obj;
@ -2865,7 +2865,7 @@ static void JBIG2Decode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct p
#endif
}
static void DCTDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void DCTDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2873,7 +2873,7 @@ static void DCTDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf
pdf->stats.ndctdecode++;
}
static void JPXDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void JPXDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2881,7 +2881,7 @@ static void JPXDecode_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf
pdf->stats.njpxdecode++;
}
static void Crypt_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Crypt_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2889,7 +2889,7 @@ static void Crypt_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_act
pdf->stats.ncrypt++;
}
static void Standard_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Standard_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2897,7 +2897,7 @@ static void Standard_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_
pdf->stats.nstandard++;
}
static void Sig_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Sig_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2905,7 +2905,7 @@ static void Sig_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_actio
pdf->stats.nsigned++;
}
static void JavaScript_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void JavaScript_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
#if HAVE_JSON
struct json_object *pdfobj, *jbig2arr, *jbig2obj;
@ -2930,7 +2930,7 @@ static void JavaScript_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pd
#endif
}
static void OpenAction_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void OpenAction_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2938,7 +2938,7 @@ static void OpenAction_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pd
pdf->stats.nopenaction++;
}
static void Launch_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Launch_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2946,7 +2946,7 @@ static void Launch_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_ac
pdf->stats.nlaunch++;
}
static void Page_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Page_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
if (!(pdf))
return;
@ -2954,7 +2954,7 @@ static void Page_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_acti
pdf->stats.npage++;
}
static void Author_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Author_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
#if HAVE_JSON
if (!(pdf))
@ -2965,7 +2965,7 @@ static void Author_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_ac
#endif
}
static void Creator_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Creator_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
#if HAVE_JSON
if (!(pdf))
@ -2976,7 +2976,7 @@ static void Creator_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_a
#endif
}
static void ModificationDate_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void ModificationDate_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
#if HAVE_JSON
if (!(pdf))
@ -2987,7 +2987,7 @@ static void ModificationDate_cb(struct pdf_struct *pdf, struct pdf_obj *obj, str
#endif
}
static void CreationDate_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void CreationDate_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
#if HAVE_JSON
if (!(pdf))
@ -2998,7 +2998,7 @@ static void CreationDate_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct
#endif
}
static void Producer_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Producer_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
#if HAVE_JSON
if (!(pdf))
@ -3009,7 +3009,7 @@ static void Producer_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_
#endif
}
static void Title_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Title_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
#if HAVE_JSON
if (!(pdf))
@ -3020,7 +3020,7 @@ static void Title_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_act
#endif
}
static void Keywords_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Keywords_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
#if HAVE_JSON
if (!(pdf))
@ -3031,7 +3031,7 @@ static void Keywords_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_
#endif
}
static void Subject_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Subject_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
#if HAVE_JSON
if (!(pdf))
@ -3042,7 +3042,7 @@ static void Subject_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_a
#endif
}
static void Pages_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Pages_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
#if HAVE_JSON
struct pdf_array *array;
@ -3112,7 +3112,7 @@ cleanup:
#endif
}
static void Colors_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
static void Colors_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdfname_action *act)
{
#if HAVE_JSON
json_object *colorsobj, *pdfobj;

@ -136,6 +136,7 @@ struct pdf_struct {
#define PDF_EXTRACT_OBJ_SCAN 0x1
int cli_pdf(const char *dir, cli_ctx *ctx, off_t offset);
void pdf_parseobj(struct pdf_struct *pdf, struct pdf_obj *obj);
int pdf_extract_obj(struct pdf_struct *pdf, struct pdf_obj *obj, uint32_t flags);
int pdf_findobj(struct pdf_struct *pdf);
struct pdf_obj *find_obj(struct pdf_struct *pdf, struct pdf_obj *obj, uint32_t objid);
@ -146,5 +147,7 @@ struct pdf_dict *pdf_parse_dict(struct pdf_struct *pdf, struct pdf_obj *obj, siz
int is_object_reference(char *begin, char **endchar, uint32_t *id);
void pdf_free_dict(struct pdf_dict *dict);
void pdf_free_array(struct pdf_array *array);
void pdf_print_dict(struct pdf_dict *dict, unsigned long depth);
void pdf_print_array(struct pdf_array *array, unsigned long depth);
#endif

Loading…
Cancel
Save