#include "file.h"
#include "magic.h"
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <time.h>
Include dependency graph for softmagic.c:
Go to the source code of this file.
Defines | |
#define | DO_CVT(fld, cast) |
#define | REG_STARTEND 0 |
Functions | |
static const char * | rcsid (const char *p) |
static int | match (struct magic_set *ms, struct magic *magic, uint32_t nmagic, const unsigned char *s, size_t nbytes) |
static int | mget (struct magic_set *ms, const unsigned char *s, struct magic *m, size_t nbytes, unsigned int cont_level) |
static int | magiccheck (struct magic_set *ms, struct magic *m) |
static int32_t | mprint (struct magic_set *ms, struct magic *m) |
static void | mdebug (uint32_t offset, const char *str, size_t len) |
static int | mcopy (struct magic_set *ms, union VALUETYPE *p, int type, int indir, const unsigned char *s, uint32_t offset, size_t nbytes, size_t linecnt) |
static int | mconvert (struct magic_set *ms, struct magic *m) |
static int | print_sep (struct magic_set *ms, int firstline) |
static void | cvt_8 (union VALUETYPE *p, const struct magic *m) |
static void | cvt_16 (union VALUETYPE *p, const struct magic *m) |
static void | cvt_32 (union VALUETYPE *p, const struct magic *m) |
static void | cvt_64 (union VALUETYPE *p, const struct magic *m) |
int | file_softmagic (struct magic_set *ms, const unsigned char *buf, size_t nbytes) |
int | file_check_mem (struct magic_set *ms, unsigned int level) |
static int | check_fmt (struct magic_set *ms, struct magic *m) |
char * | strndup (const char *, size_t) |
static uint64_t | file_strncmp (const char *s1, const char *s2, size_t len, uint32_t flags) |
static uint64_t | file_strncmp16 (const char *a, const char *b, size_t len, uint32_t flags) |
#define DO_CVT | ( | fld, | |||
cast | ) |
Value:
if (m->num_mask) \ switch (m->mask_op & FILE_OPS_MASK) { \ case FILE_OPAND: \ p->fld &= cast m->num_mask; \ break; \ case FILE_OPOR: \ p->fld |= cast m->num_mask; \ break; \ case FILE_OPXOR: \ p->fld ^= cast m->num_mask; \ break; \ case FILE_OPADD: \ p->fld += cast m->num_mask; \ break; \ case FILE_OPMINUS: \ p->fld -= cast m->num_mask; \ break; \ case FILE_OPMULTIPLY: \ p->fld *= cast m->num_mask; \ break; \ case FILE_OPDIVIDE: \ p->fld /= cast m->num_mask; \ break; \ case FILE_OPMODULO: \ p->fld %= cast m->num_mask; \ break; \ } \ if (m->mask_op & FILE_OPINVERSE) \ p->fld = ~p->fld \
Definition at line 537 of file softmagic.c.
#define REG_STARTEND 0 |
Referenced by magiccheck().
Definition at line 311 of file softmagic.c.
References magic::desc, and file_magerror().
Referenced by mprint().
static void cvt_16 | ( | union VALUETYPE * | p, | |
const struct magic * | m | |||
) | [static] |
static void cvt_32 | ( | union VALUETYPE * | p, | |
const struct magic * | m | |||
) | [static] |
static void cvt_64 | ( | union VALUETYPE * | p, | |
const struct magic * | m | |||
) | [static] |
static void cvt_8 | ( | union VALUETYPE * | p, | |
const struct magic * | m | |||
) | [static] |
int file_check_mem | ( | struct magic_set * | ms, | |
unsigned int | level | |||
) |
Definition at line 99 of file softmagic.c.
References magic_set::c, COND_NONE, file_oomem(), magic_set::cont::level_info::got_match, magic_set::cont::level_info::last_cond, magic_set::cont::level_info::last_match, magic_set::cont::len, and magic_set::cont::li.
int file_softmagic | ( | struct magic_set * | ms, | |
const unsigned char * | buf, | |||
size_t | nbytes | |||
) |
Definition at line 83 of file softmagic.c.
References mlist::magic, match(), magic_set::mlist, mlist::next, and mlist::nmagic.
Referenced by file_buffer().
static uint64_t file_strncmp | ( | const char * | s1, | |
const char * | s2, | |||
size_t | len, | |||
uint32_t | flags | |||
) | [static] |
Definition at line 1362 of file softmagic.c.
References STRING_COMPACT_BLANK, STRING_COMPACT_OPTIONAL_BLANK, STRING_IGNORE_LOWERCASE, and STRING_IGNORE_UPPERCASE.
Referenced by file_strncmp16(), and magiccheck().
static uint64_t file_strncmp16 | ( | const char * | a, | |
const char * | b, | |||
size_t | len, | |||
uint32_t | flags | |||
) | [static] |
Definition at line 1440 of file softmagic.c.
References FILE_BEDATE, FILE_BELDATE, FILE_BELONG, FILE_BEQDATE, FILE_BEQLDATE, FILE_BEQUAD, FILE_BESHORT, FILE_BESTRING16, FILE_BYTE, FILE_DATE, FILE_DEFAULT, FILE_LDATE, FILE_LEDATE, FILE_LELDATE, FILE_LELONG, FILE_LEQDATE, FILE_LEQLDATE, FILE_LEQUAD, FILE_LESHORT, FILE_LESTRING16, FILE_LONG, file_magerror(), FILE_MEDATE, FILE_MELDATE, FILE_MELONG, FILE_PSTRING, FILE_QDATE, FILE_QLDATE, FILE_QUAD, FILE_REGEX, FILE_SEARCH, FILE_SHORT, file_signextend(), FILE_STRING, file_strncmp(), file_strncmp16(), magic::flag, magic_set::flags, MAGIC_DEBUG, MIN, magic_set::ms_value, magic::offset, magic_set::offset, magic::VALUETYPE::q, REG_STARTEND, magic::reln, magic_set::rm_len, magic_set::s, magic::VALUETYPE::s, magic_set::s_len, magic_set::search, STRING_IGNORE_CASE, magic::type, UNSIGNED, magic::vallen, and magic::value.
Referenced by match().
static int match | ( | struct magic_set * | ms, | |
struct magic * | magic, | |||
uint32_t | nmagic, | |||
const unsigned char * | s, | |||
size_t | nbytes | |||
) | [static] |
Definition at line 148 of file softmagic.c.
References magic_set::c, cond(), COND_ELIF, COND_ELSE, file_check_mem(), FILE_DEFAULT, file_printf(), magic_set::flags, magic_set::cont::level_info::last_match, magic_set::cont::li, magic_set::line, magic, MAGIC_CONTINUE, magiccheck(), mget(), mprint(), magic_set::cont::level_info::off, OFFADD, magic_set::offset, and print_sep().
Referenced by file_softmagic(), readLine(), and rpmalAllSatisfiesDepend().
Definition at line 598 of file softmagic.c.
References cvt_16(), cvt_32(), cvt_64(), cvt_8(), FILE_BEDATE, FILE_BELDATE, FILE_BELONG, FILE_BEQDATE, FILE_BEQLDATE, FILE_BEQUAD, FILE_BESHORT, FILE_BESTRING16, FILE_BYTE, FILE_DATE, FILE_DEFAULT, FILE_LDATE, FILE_LEDATE, FILE_LELDATE, FILE_LELONG, FILE_LEQDATE, FILE_LEQLDATE, FILE_LEQUAD, FILE_LESHORT, FILE_LESTRING16, FILE_LONG, file_magerror(), FILE_MEDATE, FILE_MELDATE, FILE_MELONG, FILE_PSTRING, FILE_QDATE, FILE_QLDATE, FILE_QUAD, FILE_REGEX, FILE_SEARCH, FILE_SHORT, FILE_STRING, magic_set::ms_value, and magic::type.
Referenced by mget().
static int mcopy | ( | struct magic_set * | ms, | |
union VALUETYPE * | p, | |||
int | type, | |||
int | indir, | |||
const unsigned char * | s, | |||
uint32_t | offset, | |||
size_t | nbytes, | |||
size_t | linecnt | |||
) | [static] |
Definition at line 712 of file softmagic.c.
References FILE_BESTRING16, FILE_LESTRING16, file_magerror(), FILE_PSTRING, FILE_REGEX, FILE_SEARCH, FILE_STRING, magic_set::offset, magic_set::rm_len, magic_set::s, magic_set::s_len, and magic_set::search.
Referenced by mget().
static void mdebug | ( | uint32_t | offset, | |
const char * | str, | |||
size_t | len | |||
) | [static] |
static int mget | ( | struct magic_set * | ms, | |
const unsigned char * | s, | |||
struct magic * | m, | |||
size_t | nbytes, | |||
unsigned int | cont_level | |||
) | [static] |
Definition at line 817 of file softmagic.c.
References magic_set::c, FILE_BEDATE, FILE_BELDATE, FILE_BELONG, FILE_BESHORT, FILE_BYTE, FILE_DATE, FILE_DEFAULT, FILE_LDATE, FILE_LEDATE, FILE_LELDATE, FILE_LELONG, FILE_LESHORT, FILE_LONG, file_mdump(), FILE_MEDATE, FILE_MELDATE, FILE_MELONG, FILE_OPADD, FILE_OPAND, FILE_OPDIVIDE, FILE_OPINDIRECT, FILE_OPINVERSE, FILE_OPMINUS, FILE_OPMODULO, FILE_OPMULTIPLY, FILE_OPOR, FILE_OPS_MASK, FILE_OPXOR, FILE_PSTRING, FILE_REGEX, FILE_SEARCH, FILE_SHORT, FILE_STRING, magic::flag, magic_set::flags, magic::in_offset, magic::in_op, magic::in_type, INDIR, INDIROFFADD, magic_set::cont::li, MAGIC_DEBUG, mconvert(), mcopy(), mdebug(), magic_set::ms_value, magic_set::cont::level_info::off, magic_set::offset, magic::type, and magic::vallen.
Referenced by match().
Definition at line 354 of file softmagic.c.
References check_fmt(), magic::desc, FILE_BEDATE, FILE_BELDATE, FILE_BELONG, FILE_BEQDATE, FILE_BEQLDATE, FILE_BEQUAD, FILE_BESHORT, FILE_BESTRING16, FILE_BYTE, FILE_DATE, FILE_DEFAULT, file_fmttime(), FILE_LDATE, FILE_LEDATE, FILE_LELDATE, FILE_LELONG, FILE_LEQDATE, FILE_LEQLDATE, FILE_LEQUAD, FILE_LESHORT, FILE_LESTRING16, FILE_LONG, file_magerror(), FILE_MEDATE, FILE_MELDATE, FILE_MELONG, file_oomem(), file_printf(), FILE_PSTRING, FILE_QDATE, FILE_QLDATE, FILE_QUAD, FILE_REGEX, FILE_SEARCH, FILE_SHORT, file_signextend(), FILE_STRING, magic_set::ms_value, magic_set::offset, REGEX_OFFSET_START, magic::reln, magic_set::rm_len, magic_set::s, magic::VALUETYPE::s, magic_set::search, snprintf(), strndup(), magic::type, magic::vallen, and magic::value.
Referenced by match().
static int print_sep | ( | struct magic_set * | ms, | |
int | firstline | |||
) | [static] |
static const char* rcsid | ( | const char * | p | ) | [static] |
Definition at line 41 of file softmagic.c.
char * strndup | ( | const char * | , | |
size_t | ||||
) |