repo.or.cz
/
smatch.git
/
search
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
first
·
prev
·
next
test_bit: add test_and_set_bit()
2018-11-28
Dan Carpenter
test_bit
:
add tes
t
_
an
d
_set_bit()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-11-28
Dan Carpen
t
er
d
ebug
:
intro
d
uce __smatch_mem()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-11-28
Dan Carpenter
d
b: don't s
a
ve st
r
u
c
t members for intege
r
s
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-11-28
Dan
Carpe
n
ter
implied: remove an un
n
ecessary
NULL check
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-11-28
Dan Car
p
e
n
t
er
nul
_
termi
n
a
tor
:
expor
t
the
is_nu
l
_termina
t
ed() fun
c
tion
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-11-28
Dan Ca
r
penter
k
p
a
tch: use git instead of try
i
ng to create
diffs by
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-11-28
Da
n
Carpe
n
t
er
st
r
uc
t
_a
s
signment:
handle u
n
ions as well
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-11-28
Dan Carpenter
mi
s
sing_break: tur
n
it off by default
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-11-28
Dan Carpen
t
er
fr
e
e_strict: fix some fa
l
se pos
i
tives
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-11-28
Dan Ca
r
p
e
n
t
er
Revert "
L
ook acros
s
the e
n
tire compile
l
i
n
e
f
or smatc
h
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-11-14
D
an Carpen
t
er
trinity: Proof of concept to auto-gener
a
te tri
n
i
t
y
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-11-01
D
an Car
p
enter
user_
d
ata: renam
e
to smatch_kernel_use
r
_
data
.
c
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-11-01
Da
n
Carpente
r
assigned_expr: rename to smatch_a
s
s
i
g
ned_e
x
pr
.
c
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-10-31
Dan Carpenter
smatch: mak
e
the --enable/disab
l
e
o
pti
o
ns
take str
i
ngs
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-10-31
D
an Carpent
e
r
smatch_nul_terminated: fix
c
ompile
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-10-31
Dan
C
a
r
pe
n
t
er
untrack
e
d_param:
fix a NULL dereferenc
e
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-10-30
Dan C
a
r
p
enter
uninitiali
z
e
d: fix
a
crashing bug parsin
g
"
return
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-10-23
Dan Carpenter
nul_terminator: track
w
hen string
s
h
a
v
e
a NUL
t
erminator
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-10-18
D
a
n
Carpenter
u
s
e
r_data2: fix a ty
p
e
issue
i
n caller_i
n
fo
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-10-18
Dan Carpenter
user_dat
a
: intege
r
s can't be dereferenced
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-10-18
Dan
C
arpenter
comp
a
r
i
son:
mak
e
a
b
uff
e
r
larger to m
a
ke GCC hap
p
y
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-10-18
Dan Carpenter
data_so
u
r
ce: track assignm
e
nts
better
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-10-18
Da
n
Carpenter
extra:
p
revent a divide by zer
o
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-10-18
D
an Carpenter
m
o
d
ification_
h
ooks: use the DB for
f
rob(&
f
oo);
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-10-18
Da
n
Carpenter
s
v
al:
introd
u
ce
s
val_bi
n
o
p
_overfl
o
w
s_no
_
sign()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-28
Dan Carpenter
extra: undo bogus unop changes
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-27
Dan Carpenter
array_
v
alues: fi
x
up and support two dimensional local
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-27
Dan Ca
r
penter
p
ara
m
_
set:
don't re
c
ord a param_se
t
for p++ c
h
ange
s
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-27
Dan C
a
rpenter
function_hooks
:
r
e-h
a
ck
around m
o
ving th
e
fake parameter
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-26
Dan Carpent
e
r
array_v
a
lues: store a
r
ray values of
struct member arrays
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-26
Dan C
a
r
p
enter
fun
c
tion_hooks: hack around fallout from
moving the
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-24
Dan Carpenter
c
o
mpari
s
o
n: don't return i
n
vali
d
p
arams
i
n get_mas
k
_c
o
mparison()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
D
a
n Carpenter
db: don't p
r
int "fai
l
ed to ope
n
"
w
a
rnings
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Dan Carpen
t
e
r
param_set: r
e
move s
o
m
e dead code
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Da
n
Carpenter
m
tag: temporarily
disable gener
a
ting mtag
for k
m
al
l
o
c()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Dan Carpenter
ex
p
r
essions
:
don't crash on invalid c
o
d
e
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Dan Carpenter
e
x
t
r
a: fix
a type bu
g
i
n
inserting info into caller_info
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Dan C
a
rpente
r
ke
r
n
e
l: don't
i
nsist that the pa
r
ameter is named
"erro
r
"
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Dan Carp
e
nt
e
r
extra: ex
p
ort is
_
impossible
_
variable()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Dan
C
arpenter
flow: fix a cr
a
shing bug
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Dan
C
arpent
e
r
fu
n
ction_hooks: do
t
h
e fake parameter a
s
signment
after
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Dan C
a
rpente
r
param_limit: fix ge
n
erify_mtag_range()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Dan Carp
e
nter
ex
t
r
a: clear_pointed_at_state
(
) is a
n
omod stat
e
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Da
n
Carp
e
nter
param_s
e
t: h
a
nd
l
e wh
e
n the s
t
ack
variab
l
e was modified
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Dan Ca
r
penter
parse_call_math: don't
s
ay the return
i
s
e
qual to a
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
D
a
n
Carp
e
nt
e
r
scope
:
fix is_outer_stmt(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Dan
Carpenter
sval:
h
a
ndle
casting to bool
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
Dan C
a
rpenter
array_values:
d
on't crash on
i
n
val
i
d
c
o
de
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-20
D
an Carpe
n
t
e
r
n
o_s
p
ec: record when functions have
a
b
arrier
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-14
Dan Carpe
n
ter
e
xtra/typ
e
:
fix
t
yp
e
o
f
retur
n
PARAM_AD
D
/SET
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-14
Dan
Carpenter
param_limit:
m
ake mtag limits more
gener
i
c
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-12
D
a
n
C
a
rpe
n
ter
param_set: do
n
't sav
e
if the
paren
t
is se
t
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-11
D
a
n Carpen
t
er
at
o
mic_inc_
d
ec: add a couple mor
e
f
unctions
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-11
D
an Carpenter
sig
n
ed_intege
r
_overflo
w
: ig
n
ore this for the kern
e
l
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-11
D
an Ca
r
penter
math: ha
n
dle condi
t
ionals like: "a = b?: c;"
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-11
Dan Carpenter
n
o
spe
c
: don't
f
ill the DB up wi
t
h garbage
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-11
Dan Carpenter
sizeof: fix NU
L
L dereference
parsing
inval
i
d
c
ode
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-11
Dan Carpent
e
r
string
s
: tru
n
ca
t
ing
la
r
g
e strings ca
u
ses SQL problems
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-11
Dan Carp
e
nte
r
ty
p
e
_val:
d
on't doub
l
e rec
o
rd
g
lobals
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-11
D
a
n
Carpenter
target: man ssize_
t
be
unsigned long ins
t
ead
o
f unsign
e
d
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-11
D
an Carpenter
extra: don't reset imp
o
ssible s
t
a
tes after
a
condition
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-10
Dan Carpen
t
er
ar
r
a
y: s
t
o
r
e poss
i
ble array val
u
es for simple arrays
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-06
Dan C
a
rp
e
nt
e
r
mtag:
H
ACK: return f
a
l
s
e
i
f
t
h
e
mtag is zero
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-06
Dan Carpenter
f
low: fake an assign statement f
o
r global initi
a
lize
r
s
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-06
Dan Carpenter
flow: tweak
how function timeouts happen
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-06
Dan
C
arp
e
nter
db: fix a
t
ype bug
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-09-06
Dan Carpen
t
e
r
sma
t
ch_flow: don't p
a
rse inline functi
o
ns after we
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-31
Dan
C
arp
e
n
t
er
m
tag: a
d
d s
t
ring inf
o
rmation
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-31
Dan Carpenter
flow: h
a
ndle __builtin
_
mul_overflow()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-29
Dan Carpenter
ker
n
el_
p
r
i
ntf: sile
n
ce
"
specifier is cast fr
o
m poi
n
ter
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-28
D
a
n
Ca
r
pente
r
nospec: turn
o
ff speculation a
t
rmb(), s
m
b_rmb
(
) and
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-28
Dan Car
p
enter
check_s
i
gned: ignore fake a
s
sig
n
m
e
nts
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-25
D
a
n Carpent
e
r
mtag_data: clear c
a
che at
s
ta
r
t of
fun
c
t
i
on
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-25
D
an Carpe
n
t
er
n
ospec
:
fix u
n
i
n
itial
i
zed p
o
i
n
ter crash
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-24
Dan
Carp
e
nter
h
e
lper: fake
c
a
l
l
s
are not equival
e
n
t
to anythi
n
g
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-24
Dan Carpent
e
r
comparison: h
a
ndle comparisons: if (
(
foo = f
r
o
b(
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-24
Dan Ca
r
p
e
nte
r
c
o
m
parison: impro
v
e "foo =
m
in(
.
.
.
);" as
s
ign
m
ent handling
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-24
Dan
Carpente
r
comparison: hack a
r
o
und som
e
ty
p
e bugs
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-24
Dan Carp
e
nter
mtag_data: remove
du
p
licate
mtag_da
t
a and random small
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-24
Dan Carpenter
container_of: fix
a
b
ug in get
_
share
d
_cnt()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-24
Dan Carpenter
check_check_de
r
e
f
: si
l
e
nc
e
s
ome false positives
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-18
Dan Carpe
n
ter
nospec: store fu
n
c
ti
o
ns that
r
eturn no
s
pec i
n
d
exes
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-15
Da
n
Carpent
e
r
nosp
e
c:
handle
C
ALL_NOSPEC
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-14
Dan C
a
rpenter
db: introduce the --db-file=/path
/
to/smatch_db
.
s
q
lit
e
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-13
Dan Carpen
t
er
user_
d
ata2: use functi
o
n
returns in points_t
o
_us
e
r_da
t
a()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-13
Dan Carpente
r
files: check for schema files
r
elative to the b
i
n
_
dir
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-13
Dan
Carpente
r
smatch
.
c: exp
o
rt bin_dir to everyone
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-10
Dan Carpente
r
core:
print the full p
a
th when --info is u
s
ed
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-08
Dan
C
arpent
e
r
u
s
er_data: improve how retur
n
ed data
i
s handled
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-08
D
an Carpenter
capped: set returned struct m
e
mbers to
capp
e
d
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-08-06
Dan Carpen
t
er
user_data: fix valid
a
ti
o
n test for r
e
tu
r
ne
d
struct
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-07-31
Dan Carpenter
implied: don't print so many "tur
n
ing o
f
f i
m
plications
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-07-31
Dan Carpenter
mtag: del
e
te some bogus
c
ode
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-07-31
Dan Carpenter
mtag_dat
a
: update mtag_data to use
get_mtag_a
d
d
r_sval()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-07-31
Dan Ca
r
penter
mtag: fix
ex
p
r_to_mtag_of
f
set()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-07-31
Dan
C
arpenter
mtag: introduce get_mtag
_
addr_sv
a
l(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-07-31
Dan
C
arp
e
nt
e
r
para
m
_
to_m
t
ag_data: rename "dat
a
_na
m
e" --> "name"
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-07-31
Dan Carpenter
m
tag
:
do
n
't set
the n
a
m
e
in expr_to_mtag_offset()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-07-31
Dan Carpen
t
er
mtag_data: cache DB
r
esults
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-07-31
Da
n
C
a
rpenter
e
xtra: m
o
ve get_ad
d
ress_r
l
() out
of get_ex
t
ra_state()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
next