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
debug: improve buf size debugging
2018-06-25
Dan
Carpe
n
ter
debug
:
improve buf size debu
g
ging
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
Dan C
a
rpenter
c
h
e
c
k
_signed: silenc
e
some false p
o
sitives copying
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpenter
che
c
k
_
sh
i
ft_to_zero: si
l
e
nce some fa
l
se p
o
siti
v
es
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
Da
n
C
a
rpenter
check_
s
izeof: fix a typo i
n
the warning
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
D
a
n
Carpe
n
ter
buf_size:
fix r
e
cording
g
l
obal sizes
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpenter
b
u
f_compa
r
ison: don
'
t save lin
k
s to liter
a
l sizes
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpe
n
ter
comparison: add s
o
me d
e
bug
o
utp
u
t
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpenter
db: don't
sp
l
it NULL and non-N
U
LL unnecessarily
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carp
e
nte
r
db: f
i
x a NUL
L
dere
f
erence
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
D
an Carpenter
d
b: se
t
the CAC
H
E_PAGES
size
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpenter
db
:
introd
u
ce the
cache_db
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpenter
db: cl
e
an up the code a
n
d
e
xport
some
m
ore f
u
nctions
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
D
a
n Carp
e
nter
e
xtra: us
e
PARAM_LIMIT to limi
t
b
in
o
ps
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpente
r
flow: n
e
st some inline st
a
tem
e
nts
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-22
Dan Car
p
enter
modif
i
catio
n
_
hook
s
: don'
t
allow multiple modification
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-21
Da
n
Carpenter
comp
a
r
ison: don't
save
c
omparisons to
oneself
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-18
D
a
n Ca
r
penter
comparison: add some
p
arenthesis
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-18
Dan
C
arpenter
valid
a
t
ion: fix up some failures
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-14
Dan Carp
e
n
t
er
compa
r
ison: fix filter_
b
y_comp
a
rison == fo
r
ranges
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-14
D
an Carp
e
n
ter
e
x
tra: just set sval assignm
e
nts dir
e
c
t
ly
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-13
Dan Carpenter
check_spect
r
e: ig
n
ore
m
asked
o
ff d
a
ta
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-13
Dan Ca
r
pente
r
spectre: use the new is_user_rl
(
) function
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-13
Dan Carpenter
user_dat
a
: s
i
le
n
ce some mo
r
e
nt
o
hl(foo[i]
)
;
f
alse posi
t
ives
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-13
Dan C
a
rpenter
u
s
er_data: silence some sscanf() false po
s
iti
v
es
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-13
D
a
n Carpenter
user_data: introduce is
_
user_dat
a
()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-13
D
an Carpenter
u
ser_
d
a
ta: cleanup get_user_rl()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-07
Dan Car
p
ente
r
compari
s
on: f
i
x a N
U
LL dere
f
erence
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-07
Dan Carp
e
nt
e
r
comparis
o
n
:
fix val
i
d
a
t
i
on tests and ad
d
a
new te
s
t
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-06
Dan Carpenter
extra: remove an unneeded __set_s
m
() i
n
db_
p
aram_limit_filt
e
r
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-06
Dan C
a
rpente
r
hel
p
e
r: strip ou
t
the
byte swap
s
in str
i
p
_
expr()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-06
Da
n
Carpenter
valid
a
tion/sm_
l
ocking3: fix function declarati
o
ns
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-06
D
an
C
arpenter
unkno
w
n_v
a
l
ue: clear t
h
e
-
>parent pointers
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-06
Dan Car
p
enter
rang
e
s:
i
m
p
rove str_to_co
m
par
i
s
on_a
r
g_helper()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-06
Dan Carpenter
comparison: use sma
t
ch_extra data
i
n g
e
t_comparison()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-06
Dan Carpenter
comparison: improve handling o
f
"if (++j == limit)"
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-06
Dan Carpenter
compari
s
on: h
a
ndle j++ var sym lists be
t
ter
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-06-06
Dan
Carpen
t
er
eq
u
i
v
:
t
y
pe
a
nd
implic
a
ti
o
n f
i
x
es
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-30
Dan Ca
r
penter
rang
e
s:
f
i
x == and != comp
a
risons
.
.
.
(0_0)
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-25
Dan Car
p
enter
return_to_param: fix parsi
n
g calls
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-23
Dan C
a
r
pe
n
t
e
r
validation: upd
a
te
t
ests
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-15
Dan Carpenter
db: make cal
l
_implies
rows unique
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-14
Dan
Carp
e
nter
f
low: remove the call_split_expr(
)
function
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-14
Dan
Carpenter
ex
t
r
a: handle comp
a
r
isons to ex
p
r
e
s
s
ion st
a
tements
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-14
Dan Ca
r
p
e
n
t
e
r
db
/
fill_db_caller
_
info
.
pl: don't perm
a
-ban fun
c
tions
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-14
D
an Carpen
t
er
db/fixup
_
k
e
rnel
.
sh: commit al
l
my stu
f
f
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-14
D
an
Carpen
t
e
r
function_ptrs: record
local pointer scope
c
o
rrectly
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-14
Dan Carpenter
real_abso
l
ute:
don't
s
a
ve single va
l
ue a
s
signs
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-14
Dan Carpente
r
sval: f
i
x a bug in sval_to
o
_lo
w
()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-14
D
a
n Carpenter
db: introduce db_ignore_s
t
ates()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-14
Dan
C
arpenter
d
b
/
u
ntracked_
p
a
r
a
m: mark paramet
e
rs untra
c
ked if we
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-05-14
Dan Ca
r
penter
flow: d
o
n't parse inline functions which aren't in
t
e
r
est
i
n
g
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-23
D
an
C
a
rpenter
db/cons
t
raint
s
_requir
e
d
.
s
c
hema: add m
i
s
sing semi-colon
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-20
Dan
Ca
r
pe
n
te
r
flow/expressions/f
u
nction_hooks: re-fix i
s
_
a
ssigned_call()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-20
Dan Carpenter
k
ernel:
hand
l
e
_
_
read_once_si
z
e(
)
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-20
Dan Carpenter
mat
h
:
fix a get_
v
alue
(
)
bug
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-19
Da
n
C
a
rpente
r
expressio
n
s:
m
ake
a
ssign_expression() take a
n
op arg
u
m
ent
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-18
Dan Carpente
r
spec
t
re
:
w
a
rn
about potential s
p
ectre
vulnerabilities
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-18
Dan Ca
r
penter
expr
e
ssions: don't set the -
>
p
a
rent to a fake expression
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-17
Dan C
a
r
pente
r
expression
s
: just
a
ll
o
cate zero_e
x
pr()
f
resh e
v
ery
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-16
Dan Carpe
n
ter
expression/sm
a
t
c
h_expressions
:
move
expr_set/get_
p
are
n
t
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-12
Dan
Carpenter
or_vs_and: tid
y
up whitespace
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-12
Dan Carpenter
or_vs_and:
m
i
n_t() uses the n
e
w min() code as well
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-11
D
a
n Carpenter
check_o
r
_
v
s_and: ignore th
e
kernel's mi
n
/max macros
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-11
Dan
Carpenter
flow/mat
h
: handle __builti
n
_choose
_
e
x
p
r
(
)
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-10
Dan Carpent
e
r
validation/overf
l
ow: change
"war
n
:
"
to
"erro
r
:"
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-10
Dan Car
p
enter
a
b
out_fn_ptr_
a
rg: don
'
t get in
t
o a re
c
ursive loop
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-09
Dan Carpente
r
h
e
lper:
a
d
d get_last_statem
e
n
t
_f
r
om
_
express
i
on_stmt
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-09
Dan Ca
r
p
enter
mem_trac
k
er: add a --mem option
t
o debug memory use
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-09
Dan Carpe
n
ter
expressi
o
ns: remove
s
o
m
e
unnecessary gotos
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-09
Dan Carpenter
hel
p
er
:
improve is_
e
r
r
or_return(
)
.
I
n
the kernel all
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-09
Da
n
Carpe
n
t
er
smatch_data/
s
mat
c
h
.
co
m
mon_functio
n
s: add
s
ome c
o
mmon
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-09
Dan Carpenter
smatch_data
/
ke
r
ne
l
.
ignored_macros: add AA
_
BUG()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-09
Dan Carpe
n
ter
s
m
at
c
h_da
t
a/
k
ernel
.
i
gn
o
re_uninitialized para
m
s: add
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-09
Dan Carpen
t
er
s
match_dat
a
/kernel
.
ignore_side
_
e
f
fects
a
dd rec
e
nt macros
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-09
Dan C
a
r
p
en
t
er
comp
a
riso
n
: handle expres
s
ion
statem
e
n
t
s better
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-09
Da
n
Carpen
t
er
comp
a
rison: rem
o
ve som
e
debug code
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-09
Dan Ca
r
penter
co
m
p
a
r
i
son: in
t
roduce impossibly
_
h
i
gh_comparison(
)
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-04-05
Da
n
Carpe
n
ter
ignore: fix
&
&
vs
|
|
t
y
po
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-29
Dan Carpenter
index_overflow: almost a re-write
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-26
Dan
Carpe
n
t
er
i
m
plied: improve handling of a
s
signment
s
in arg
u
ments
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-26
D
an Carpen
t
er
kernel_printf:
d
on't warn a
b
out void pointers
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-26
Dan Carp
e
nte
r
che
a
k_le
a
ks:
h
andle returning c
o
nditionals
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-26
Dan Carpenter
m
at
h
: introduce
a
new cache of recently u
s
ed cons
t
ants
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-26
D
an Carpen
t
e
r
math:
h
andle _
_
bu
i
ltin_constant_p() properly
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-26
D
an Carpenter
math:
a
l
l
o
cated some permanent range lists in rl
_
z
e
ro
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-26
Dan Carp
e
nter
conditions: Fix pars
i
ng foo = ({
.
.
.
label: _
_
ret; })
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-14
Da
n
C
a
rpent
e
r
f
u
nction_hooks: don't
b
e too
ambitious faking p
a
ra
m
eter
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-12
D
a
n Carp
e
nter
ran
g
es
/
p
trlist: solve a
l
e
a
k w
i
th
a big h
a
c
k (sec
o
n
d
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-12
Dan Carpe
n
ter
alloca
t
e: use
unsig
n
ed
long to
r
ecor
d
al
l
o
c
ations
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-07
Da
n
C
arpen
t
er
deref_check: fix a small lea
k
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-07
Dan Carpenter
hooks: intro
d
uce
F
U
NCTI
O
N_CAL
L
_
HOOK
_
B
E
F
ORE
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-07
D
a
n Carpent
e
r
us
e
r_data:
reading from an
ar
r
a
y doesn't neces
s
ari
l
y
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-07
Dan Carpente
r
implied: int
r
oduce impossible_
a
ssumption()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-07
Dan Carpenter
buf_size: don
'
t save u
n
n
ecessary states
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-07
Dan Carpente
r
m
tag: push all my chan
g
es
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-07
Dan Ca
r
p
enter
range
s
: fix a l
e
ak
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-07
Dan C
a
r
p
ente
r
debu
g
:
a
dd __smat
c
h
_
state
_
co
u
nt()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-06
Dan Ca
r
p
e
nte
r
modification_hooks: do
n
't save the expressions outside
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-06
Da
n
Carpenter
var_sym:
t
weak expr_
t
o_vsl()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2018-03-06
Dan Car
p
enter
symbol
.
h: let is_ptr_type()
t
ake
N
ULL
p
oint
e
rs
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
next