php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
softmagic.c File Reference
#include "file.h"
#include "magic.h"
#include <assert.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <limits.h>
#include <time.h>
#include "der.h"

Go to the source code of this file.

Macros

#define OFFSET_OOB(n, o, i)
 
#define BE64(p)
 
#define LE64(p)
 
#define LE32(p)
 
#define BE32(p)
 
#define ME32(p)
 
#define BE16(p)
 
#define LE16(p)
 
#define SEXT(s, v, p)
 
#define F(a, b, c)
 
#define FLT   (STRING_BINTEST | STRING_TEXTTEST)
 
#define PRINTER(value, format, stype, utype)
 
#define DO_CVT(fld, type)
 
#define DO_CVT2(fld, type)
 

Functions

file_private int match (struct magic_set *, struct magic *, size_t, const struct buffer *, size_t, int, int, int, uint16_t *, uint16_t *, int *, int *, int *, int *, int *)
 
file_private int mget (struct magic_set *, struct magic *, const struct buffer *, const unsigned char *, size_t, size_t, unsigned int, int, int, int, uint16_t *, uint16_t *, int *, int *, int *, int *, int *)
 
file_private int msetoffset (struct magic_set *, struct magic *, struct buffer *, const struct buffer *, size_t, unsigned int)
 
file_private int magiccheck (struct magic_set *, struct magic *)
 
file_private int mprint (struct magic_set *, struct magic *)
 
file_private int moffset (struct magic_set *, struct magic *, const struct buffer *, int32_t *)
 
file_private void mdebug (uint32_t, const char *, size_t)
 
file_private int mcopy (struct magic_set *, union VALUETYPE *, int, int, const unsigned char *, uint32_t, size_t, struct magic *)
 
file_private int mconvert (struct magic_set *, struct magic *, int)
 
file_private int print_sep (struct magic_set *, int)
 
file_private int handle_annotation (struct magic_set *, struct magic *, int)
 
file_private int cvt_8 (union VALUETYPE *, const struct magic *)
 
file_private int cvt_16 (union VALUETYPE *, const struct magic *)
 
file_private int cvt_32 (union VALUETYPE *, const struct magic *)
 
file_private int cvt_64 (union VALUETYPE *, const struct magic *)
 
file_protected int file_softmagic (struct magic_set *ms, const struct buffer *b, uint16_t *indir_count, uint16_t *name_count, int mode, int text)
 
file_private int check_fmt (struct magic_set *ms, const char *fmt)
 
char * strndup (const char *, size_t)
 
file_private uint32_t cvt_id3 (struct magic_set *ms, uint32_t v)
 
file_private int cvt_flip (int type, int flip)
 
file_private int cvt_float (union VALUETYPE *p, const struct magic *m)
 
file_private int cvt_double (union VALUETYPE *p, const struct magic *m)
 
file_private int do_ops (struct magic_set *ms, struct magic *m, uint32_t *rv, intmax_t lhs, intmax_t off)
 
file_private int save_cont (struct magic_set *ms, struct cont *c)
 
file_private void restore_cont (struct magic_set *ms, struct cont *c)
 
file_private uint64_t file_strncmp (const char *s1, const char *s2, size_t len, size_t maxlen, uint32_t flags)
 
file_private uint64_t file_strncmp16 (const char *a, const char *b, size_t len, size_t maxlen, uint32_t flags)
 

Macro Definition Documentation

◆ BE16

#define BE16 ( p)
Value:
((CAST(uint16_t, (p)->hs[0])<<8)|(CAST(uint16_t, (p)->hs[1])))
#define CAST(T, b)
Definition file.h:425
p
Definition session.c:1105

Definition at line 107 of file softmagic.c.

◆ BE32

#define BE32 ( p)
Value:
( \
(CAST(uint32_t, (p)->hl[0])<<24)| \
(CAST(uint32_t, (p)->hl[1])<<16)| \
(CAST(uint32_t, (p)->hl[2])<<8)| \
(CAST(uint32_t, (p)->hl[3])))

Definition at line 96 of file softmagic.c.

◆ BE64

#define BE64 ( p)
Value:
( \
(CAST(uint64_t, (p)->hq[0])<<56)| \
(CAST(uint64_t, (p)->hq[1])<<48)| \
(CAST(uint64_t, (p)->hq[2])<<40)| \
(CAST(uint64_t, (p)->hq[3])<<32)| \
(CAST(uint64_t, (p)->hq[4])<<24)| \
(CAST(uint64_t, (p)->hq[5])<<16)| \
(CAST(uint64_t, (p)->hq[6])<<8)| \
(CAST(uint64_t, (p)->hq[7])))

Definition at line 73 of file softmagic.c.

◆ DO_CVT

#define DO_CVT ( fld,
type )

Definition at line 1057 of file softmagic.c.

◆ DO_CVT2

#define DO_CVT2 ( fld,
type )
Value:
if (m->num_mask) \
switch (m->mask_op & FILE_OPS_MASK) { \
case FILE_OPADD: \
p->fld += CAST(type, m->num_mask); \
break; \
case FILE_OPMINUS: \
p->fld -= CAST(type, m->num_mask); \
break; \
p->fld *= CAST(type, m->num_mask); \
break; \
case FILE_OPDIVIDE: \
if (CAST(type, m->num_mask) == 0) \
return -1; \
p->fld /= CAST(type, m->num_mask); \
break; \
} \
zend_ffi_type * type
Definition ffi.c:3812
#define FILE_OPDIVIDE
Definition file.h:325
#define FILE_OPS_MASK
Definition file.h:327
#define FILE_OPADD
Definition file.h:322
#define FILE_OPMINUS
Definition file.h:323
#define FILE_OPMULTIPLY
Definition file.h:324

Definition at line 1120 of file softmagic.c.

◆ F

#define F ( a,
b,
c )
Value:
((b))

Definition at line 179 of file softmagic.c.

◆ FLT

◆ LE16

#define LE16 ( p)
Value:
((CAST(uint16_t, (p)->hs[1])<<8)|(CAST(uint16_t, (p)->hs[0])))

Definition at line 108 of file softmagic.c.

◆ LE32

#define LE32 ( p)
Value:
( \
(CAST(uint32_t, (p)->hl[3])<<24)| \
(CAST(uint32_t, (p)->hl[2])<<16)| \
(CAST(uint32_t, (p)->hl[1])<<8)| \
(CAST(uint32_t, (p)->hl[0])))

Definition at line 91 of file softmagic.c.

◆ LE64

#define LE64 ( p)
Value:
( \
(CAST(uint64_t, (p)->hq[7])<<56)| \
(CAST(uint64_t, (p)->hq[6])<<48)| \
(CAST(uint64_t, (p)->hq[5])<<40)| \
(CAST(uint64_t, (p)->hq[4])<<32)| \
(CAST(uint64_t, (p)->hq[3])<<24)| \
(CAST(uint64_t, (p)->hq[2])<<16)| \
(CAST(uint64_t, (p)->hq[1])<<8)| \
(CAST(uint64_t, (p)->hq[0])))

Definition at line 82 of file softmagic.c.

◆ ME32

#define ME32 ( p)
Value:
( \
(CAST(uint32_t, (p)->hl[1])<<24)| \
(CAST(uint32_t, (p)->hl[0])<<16)| \
(CAST(uint32_t, (p)->hl[3])<<8)| \
(CAST(uint32_t, (p)->hl[2])))

Definition at line 101 of file softmagic.c.

◆ OFFSET_OOB

#define OFFSET_OOB ( n,
o,
i )
Value:
((n) < CAST(uint32_t, (o)) || (i) > ((n) - (o)))
zend_long n
Definition ffi.c:4979

Definition at line 72 of file softmagic.c.

◆ PRINTER

#define PRINTER ( value,
format,
stype,
utype )
Value:
v = file_signextend(ms, m, CAST(uint64_t, value)); \
switch (check_fmt(ms, desc)) { \
case -1: \
return -1; \
case 1: \
if (m->flag & UNSIGNED) { \
(void)snprintf(buf, sizeof(buf), "%" format "u", \
CAST(utype, v)); \
} else { \
(void)snprintf(buf, sizeof(buf), "%" format "d", \
CAST(stype, v)); \
} \
if (file_printf(ms, F(ms, desc, "%s"), buf) == -1) \
return -1; \
break; \
default: \
if (m->flag & UNSIGNED) { \
if (file_printf(ms, F(ms, desc, "%" format "u"), \
CAST(utype, v)) == -1) \
return -1; \
} else { \
if (file_printf(ms, F(ms, desc, "%" format "d"), \
CAST(stype, v)) == -1) \
return -1; \
} \
break; \
} \
break
file_protected uint64_t file_signextend(struct magic_set *ms, struct magic *m, uint64_t v)
uint32_t v
Definition cdf.c:1237
zend_ffi_ctype_name_buf buf
Definition ffi.c:4685
#define F
Definition encoding.c:235
#define UNSIGNED
Definition file.h:209
file_protected int file_printf(struct magic_set *, const char *,...) __attribute__((__format__(__printf__
file_private int check_fmt(struct magic_set *ms, const char *fmt)
Definition softmagic.c:490
#define snprintf
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)
value

◆ SEXT

#define SEXT ( s,
v,
p )
Value:
((s) ? \
CAST(intmax_t, CAST(int##v##_t, p)) : \
CAST(intmax_t, CAST(uint##v##_t, p)))
char s[4]
Definition cdf.c:77

Definition at line 109 of file softmagic.c.

Function Documentation

◆ check_fmt()

file_private int check_fmt ( struct magic_set * ms,
const char * fmt )

Definition at line 490 of file softmagic.c.

◆ cvt_16()

file_private int cvt_16 ( union VALUETYPE * p,
const struct magic * m )

Definition at line 1100 of file softmagic.c.

◆ cvt_32()

file_private int cvt_32 ( union VALUETYPE * p,
const struct magic * m )

Definition at line 1107 of file softmagic.c.

◆ cvt_64()

file_private int cvt_64 ( union VALUETYPE * p,
const struct magic * m )

Definition at line 1114 of file softmagic.c.

◆ cvt_8()

file_private int cvt_8 ( union VALUETYPE * p,
const struct magic * m )

Definition at line 1093 of file softmagic.c.

◆ cvt_double()

file_private int cvt_double ( union VALUETYPE * p,
const struct magic * m )

Definition at line 1147 of file softmagic.c.

◆ cvt_flip()

file_private int cvt_flip ( int type,
int flip )

Definition at line 1008 of file softmagic.c.

◆ cvt_float()

file_private int cvt_float ( union VALUETYPE * p,
const struct magic * m )

Definition at line 1140 of file softmagic.c.

◆ cvt_id3()

file_private uint32_t cvt_id3 ( struct magic_set * ms,
uint32_t v )

Definition at line 996 of file softmagic.c.

◆ do_ops()

file_private int do_ops ( struct magic_set * ms,
struct magic * m,
uint32_t * rv,
intmax_t lhs,
intmax_t off )

Definition at line 1468 of file softmagic.c.

◆ file_softmagic()

file_protected int file_softmagic ( struct magic_set * ms,
const struct buffer * b,
uint16_t * indir_count,
uint16_t * name_count,
int mode,
int text )

Definition at line 119 of file softmagic.c.

◆ file_strncmp()

file_private uint64_t file_strncmp ( const char * s1,
const char * s2,
size_t len,
size_t maxlen,
uint32_t flags )

Definition at line 1993 of file softmagic.c.

◆ file_strncmp16()

file_private uint64_t file_strncmp16 ( const char * a,
const char * b,
size_t len,
size_t maxlen,
uint32_t flags )

Definition at line 2072 of file softmagic.c.

◆ handle_annotation()

file_private int handle_annotation ( struct magic_set * ms,
struct magic * m,
int firstline )

Definition at line 2473 of file softmagic.c.

◆ magiccheck()

file_private int magiccheck ( struct magic_set * ms,
struct magic * m )

Definition at line 2085 of file softmagic.c.

◆ match()

file_private int match ( struct magic_set * ms,
struct magic * magic,
size_t nmagic,
const struct buffer * b,
size_t offset,
int mode,
int text,
int flip,
uint16_t * indir_count,
uint16_t * name_count,
int * printed_something,
int * need_separator,
int * firstline,
int * returnval,
int * found_match )

Definition at line 212 of file softmagic.c.

◆ mconvert()

file_private int mconvert ( struct magic_set * ms,
struct magic * m,
int flip )

Definition at line 1159 of file softmagic.c.

◆ mcopy()

file_private int mcopy ( struct magic_set * ms,
union VALUETYPE * p,
int type,
int indir,
const unsigned char * s,
uint32_t offset,
size_t nbytes,
struct magic * m )

Definition at line 1331 of file softmagic.c.

◆ mdebug()

file_private void mdebug ( uint32_t offset,
const char * str,
size_t len )

Definition at line 1322 of file softmagic.c.

◆ mget()

file_private int mget ( struct magic_set * ms,
struct magic * m,
const struct buffer * b,
const unsigned char * s,
size_t nbytes,
size_t o,
unsigned int cont_level,
int mode,
int text,
int flip,
uint16_t * indir_count,
uint16_t * name_count,
int * printed_something,
int * need_separator,
int * firstline,
int * returnval,
int * found_match )

Definition at line 1593 of file softmagic.c.

◆ moffset()

file_private int moffset ( struct magic_set * ms,
struct magic * m,
const struct buffer * b,
int32_t * op )

Definition at line 843 of file softmagic.c.

◆ mprint()

file_private int mprint ( struct magic_set * ms,
struct magic * m )

Definition at line 592 of file softmagic.c.

◆ msetoffset()

file_private int msetoffset ( struct magic_set * ms,
struct magic * m,
struct buffer * bb,
const struct buffer * b,
size_t o,
unsigned int cont_level )

Definition at line 1521 of file softmagic.c.

◆ print_sep()

file_private int print_sep ( struct magic_set * ms,
int firstline )

Definition at line 2506 of file softmagic.c.

◆ restore_cont()

file_private void restore_cont ( struct magic_set * ms,
struct cont * c )

Definition at line 1586 of file softmagic.c.

◆ save_cont()

file_private int save_cont ( struct magic_set * ms,
struct cont * c )

Definition at line 1571 of file softmagic.c.

◆ strndup()

char * strndup ( const char * str,
size_t n )

Definition at line 521 of file softmagic.c.