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
nospec: if it's called with trusted data that's the same as nospec
2018-06-28
Dan
Carpenter
nospec
:
i
f
i
t
's calle
d
with trusted data that's the
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-28
D
a
n Carpenter
u
ser_data:
don't pass *$ as user
data if
t
he
struct
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-28
Dan Carpenter
check_use
r
_data: some user data was
l
o
s
t
at
t
he call
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-25
Dan Carpenter
d
b: fix build breakage
by
adding the
t
ype_inf
o
sch
e
ma
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-25
Dan Carpen
t
er
d
b: rename call_implies to return_imp
l
ies
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-25
D
an Carpenter
deb
u
g: improve buf size deb
u
g
g
ing
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpenter
check_signed: sil
e
nce som
e
fals
e
positives
copying
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
D
an
C
arpenter
chec
k
_shift_to_zero: silence some f
a
lse
positi
v
es
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
Dan
C
ar
p
enter
check_sizeof: fix a ty
p
o i
n
the w
a
r
ning
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
Dan Car
p
en
t
er
bu
f
_size: fix recording
g
l
o
bal
s
izes
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
Da
n
Carpenter
buf_comparison:
d
on't save links to lit
e
ral sizes
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carp
e
nt
e
r
comparison: add som
e
debug o
u
tput
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpenter
db:
d
o
n
'
t spli
t
N
ULL and non-NUL
L
unne
c
es
s
arily
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpenter
db: f
i
x
a
NUL
L
der
e
f
e
r
ence
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpenter
d
b:
s
e
t the CACHE_
P
A
G
ES
s
ize
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
Dan C
a
rpenter
db: i
n
t
roduce t
h
e ca
c
he_db
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpenter
db: clean up the c
o
de and export some more functions
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
Dan Carpenter
extra: use PARAM_L
I
MIT to limit bin
o
ps
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
Da
n
C
arpenter
flo
w
: nes
t
some inline
s
tatements
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-22
D
a
n Carp
e
nter
m
o
dification
_
h
o
oks
:
don't
allow mult
i
ple modif
i
cation
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-21
Dan Carpen
t
er
comparison:
don't save compari
s
on
s
to on
e
self
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-18
D
a
n Carpenter
c
o
mp
a
ris
o
n
:
add some pa
r
enthesis
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-18
D
a
n
Ca
r
penter
val
i
dation: f
i
x
u
p
some
f
ailures
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-14
Dan
C
arpen
t
er
c
omp
a
rison: fix fi
l
t
e
r
_by_comparison == for ran
g
es
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-14
Dan Carp
e
nter
ex
t
ra: just s
e
t sval a
s
signment
s
directly
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-13
Dan Carp
e
n
t
er
check_spectr
e
: igno
r
e maske
d
off
data
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-13
Dan Carpe
n
t
er
spect
r
e:
u
se t
h
e new is_user_r
l
() functi
o
n
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-13
Dan Carpenter
u
ser_data: silence some more
n
tohl(foo
[
i]
)
; false
p
ositives
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-13
Da
n
Carpenter
user_data: sil
e
nce some ssc
a
nf
(
) false positives
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-13
Dan Carp
e
nter
user_data: introd
u
ce is_user
_
data
(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-13
Dan Carpe
n
ter
use
r
_
d
ata: clean
u
p get_use
r
_r
l
()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-07
Dan Carp
e
nte
r
c
omparis
o
n: fix a NUL
L
der
e
ference
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-07
Dan Carpenter
comparison
:
fix va
l
i
dation
t
es
t
s and add
a
new test
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-06
Dan Carpenter
extra: remove
a
n unneeded __se
t
_sm() in
db
_
param
_
limit_f
i
l
t
er
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-06
Dan Ca
r
penter
h
e
l
per: strip out the byte swaps
i
n strip_expr()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-06
Dan Car
p
enter
validation/sm_locking3: fix f
u
nction declarations
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-06
Dan Carpenter
unknown_value: clear the ->pare
n
t pointers
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-06
Dan Carpen
t
er
r
anges: improve st
r
_t
o
_
comp
a
rison_arg_h
e
l
p
er()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-06
D
an
C
arpenter
c
o
mparison:
u
se smatch_extra data in get_compariso
n
()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-06
Dan Carpenter
comparison:
improve handling of
"if (++j
=
= lim
i
t)"
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-06
Dan C
a
rpent
e
r
comp
a
rison: handle j++
var sy
m
lists better
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-06-06
Dan Carpente
r
equi
v
: typ
e
and
i
mplica
t
ion fi
x
e
s
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-30
Dan
C
a
rpenter
ranges: fix == and
!= comparisons
.
.
.
(0_
0
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-25
Dan Carpenter
r
e
t
u
r
n_to_param: f
i
x parsing cal
l
s
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-23
Dan Carpenter
validation: updat
e
test
s
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-15
Dan Carpenter
db: make ca
l
l_implies rows unique
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-14
Dan
Carpen
t
er
f
low: rem
o
ve
the call_split_
e
xpr() f
u
nction
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-14
D
a
n Ca
r
penter
extra:
handl
e
comparisons to e
x
pre
s
s
ion statem
e
nts
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-14
Dan Carpent
e
r
db
/
fil
l
_db_
c
aller_info
.
pl: don't perma-ban functions
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-14
Dan C
a
rp
e
nte
r
db/fixup_kernel
.
s
h
: commit all my stuff
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-14
Dan Carpenter
f
u
nction_p
t
rs
:
record
l
oca
l
pointer scope
c
orr
e
ctly
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-14
Dan C
a
rpenter
real_abso
l
u
te:
do
n
'
t
save
s
ingle v
a
lue assi
g
ns
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-14
Dan Carpen
t
er
sv
a
l: fix a bu
g
in sval_too_lo
w
()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-14
D
a
n
Ca
r
penter
db: introduc
e
db_igno
r
e
_
states
(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-14
Dan Carpente
r
d
b
/untrac
k
ed_param: m
a
rk par
a
m
eters
u
ntracked if we
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-05-14
Dan Carpenter
flo
w
: d
o
n't p
a
rse in
l
ine funct
i
ons which aren
'
t
interesting
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-23
Dan Carpen
t
er
d
b/con
s
tra
i
nts
_
r
e
q
ui
r
ed
.
schema: add missing semi-colon
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-20
D
an
Carpenter
f
l
o
w
/expres
s
ions/function_h
o
o
ks
:
r
e
-fix is
_
ass
i
gne
d
_call()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-20
Dan
Carpenter
kerne
l
: h
a
n
d
l
e
__rea
d
_once_s
i
ze()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-20
Dan Carpenter
m
ath: fix a get_v
a
l
u
e() bug
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-19
Dan Carpenter
e
x
pressions:
m
ake assign_e
x
pression() take a
n
o
p
argument
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-18
Dan Carpenter
s
p
ectre: warn
about potenti
a
l spectre vulnerabilities
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-18
Dan C
a
rpenter
expressio
n
s
:
do
n
't
set the ->p
a
rent
to a fake ex
p
ressi
o
n
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-17
Dan Carpent
e
r
expressions:
j
ust allocat
e
zero_expr() fresh every
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-16
Dan Carp
e
nter
expression/smatc
h
_expressions:
m
o
ve
e
xpr_set/get_parent
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-12
Joey Pabalinas
spars
e
: add -Wpointer-arith flag to toggl
e
sizeof(void
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-12
Dan Ca
r
pe
n
ter
or_v
s
_
a
n
d:
t
i
d
y up whitespace
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-12
Dan C
a
rpent
e
r
o
r_vs_and:
m
i
n
_t()
uses the new min(
)
code as well
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-11
Dan C
a
rpente
r
che
c
k_or_vs_and: ignore
the ker
n
el's min/ma
x
m
a
c
ros
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-11
Dan C
a
rpen
t
er
flow/math: handle __bu
i
ltin_choose_ex
p
r()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-10
Dan C
a
rpenter
v
alidation/overflow: change "warn:"
t
o
"er
r
or:"
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-10
Dan Carpenter
a
b
out_f
n
_
p
tr_ar
g
: don't get i
n
t
o a recursive loop
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-09
Dan Carpenter
helper: add
g
et_last_s
t
atement_from_expression_stmt
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-09
D
a
n C
a
rp
e
nter
mem_t
r
acker: add a --mem op
t
ion to debug memory
use
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-09
Dan Carpenter
expression
s
: remove some unnecessary gotos
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-09
Dan Carp
e
nter
h
elper: imp
r
ove is_error_r
e
t
u
rn()
.
In the
k
ernel
a
l
l
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-09
Dan
Carp
e
nter
s
mat
c
h_data/smatch
.
com
m
on_functions: add
s
o
me co
m
m
o
n
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-09
D
a
n Carp
e
nter
smatch_data/kern
e
l
.
ig
n
ored_macros:
a
dd AA_
B
UG()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-09
Dan Carpenter
smatch_dat
a
/kernel
.
ign
o
re_unin
i
tial
i
zed params: add
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-09
Dan Carpenter
smatc
h
_da
t
a/ke
r
n
el
.
igno
r
e_side_effects add
r
e
cen
t
macros
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-09
Dan
Carpenter
comparis
o
n: handle
e
xpres
s
ion statements bet
t
er
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-09
D
an Carpenter
comparison: remove
some debug co
d
e
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-09
Dan Carp
e
n
t
er
co
m
parison: in
t
roduce
i
m
p
ossibly_h
i
g
h
_com
p
arison()
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-04-05
Dan Carpenter
ignore:
f
ix &&
v
s
|
| typo
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-29
D
a
n Carpe
n
ter
index_overflow: al
m
ost a re
-
write
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-26
D
an Carpen
t
er
i
m
plied: impro
v
e handli
n
g of ass
i
gnm
e
nts in argu
m
e
n
ts
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-26
Da
n
Carpenter
kernel_printf: don't warn about void pointers
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-26
D
a
n
Carpent
e
r
chea
k
_leaks: handle return
i
ng cond
i
tio
n
als
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-26
Dan Carpenter
ma
t
h
: introduce a new cache of recently used
c
onsta
n
t
s
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-26
Dan Ca
r
pent
e
r
math: h
a
ndle
__builtin
_
constant_p() properly
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-26
Dan Ca
r
penter
mat
h
: all
o
ca
t
ed some permanen
t
range lists in rl_zero
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-26
Dan
C
a
rpen
t
er
c
o
nditions: Fix
p
ars
i
ng foo = ({
.
.
.
l
abel: __ret;
})
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-14
Da
n
Carpenter
fun
c
tion_hooks: d
o
n't be t
o
o
a
mbit
i
ous faking parame
t
er
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-12
Dan Carpenter
r
anges/ptrl
i
st: solve a leak with a big hack (second
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-12
Dan Carpenter
allocate:
u
se unsigned long to re
c
or
d
allocations
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-07
Dan
C
arpen
t
er
d
e
ref_c
h
eck:
fi
x
a s
m
a
ll leak
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-07
Dan Carpen
t
er
hooks:
i
ntroduce FUNCTION_C
A
LL
_
HOOK_BEFO
R
E
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-07
Dan
C
arpe
n
ter
u
ser_data: rea
d
ing fro
m
a
n
array doesn'
t
n
ece
s
sarily
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-07
Dan
C
arpenter
i
m
p
lied:
int
r
o
duce impossible_ass
u
mpti
o
n()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2018-03-07
Dan C
a
rpe
n
t
e
r
buf_size: don'
t
s
ave unnecessary
s
tates
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
next