This document provides an introduction to the VeriFast program verifier. It describes how to set up VeriFast, including downloading required files. It explains that VeriFast can verify single-threaded and multi-threaded C/Java programs annotated with preconditions and postconditions written in separation logic, and that it avoids illegal memory accesses like buffer overflows. The document demonstrates running VeriFast on sample code, showing how it finds errors, and provides references for more information.
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Introduction to VeriFast @ Kyoto
1. Introduction to VeriFast @ KyotoIntroduction to VeriFast @ KyotoIntroduction to VeriFast @ KyotoIntroduction to VeriFast @ KyotoIntroduction to VeriFast @ Kyoto
Kiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu Okabe
2. Setup before this presentationSetup before this presentationSetup before this presentationSetup before this presentationSetup before this presentation
☆ Plesse copy following files from the USB stick.☆ Plesse copy following files from the USB stick.☆ Plesse copy following files from the USB stick.☆ Plesse copy following files from the USB stick.☆ Plesse copy following files from the USB stick.
chibios-verifast.tgz
illegal_access.c
verifast-nightly-osx.tar.gz
verifast-nightly.tar.gz
verifast-nightly.zip
chibios-verifast.tgz
illegal_access.c
verifast-nightly-osx.tar.gz
verifast-nightly.tar.gz
verifast-nightly.zip
chibios-verifast.tgz
illegal_access.c
verifast-nightly-osx.tar.gz
verifast-nightly.tar.gz
verifast-nightly.zip
chibios-verifast.tgz
illegal_access.c
verifast-nightly-osx.tar.gz
verifast-nightly.tar.gz
verifast-nightly.zip
chibios-verifast.tgz
illegal_access.c
verifast-nightly-osx.tar.gz
verifast-nightly.tar.gz
verifast-nightly.zip
3. What's VeriFast?What's VeriFast?What's VeriFast?What's VeriFast?What's VeriFast?
☆ https://github.com/verifast/verifast☆ https://github.com/verifast/verifast☆ https://github.com/verifast/verifast☆ https://github.com/verifast/verifast☆ https://github.com/verifast/verifast
☆ A verifier for single-threaded and multi-
threaded C and Java language programs
annotated with preconditions and
postconditions written in separation logic.
☆ A verifier for single-threaded and multi-
threaded C and Java language programs
annotated with preconditions and
postconditions written in separation logic.
☆ A verifier for single-threaded and multi-
threaded C and Java language programs
annotated with preconditions and
postconditions written in separation logic.
☆ A verifier for single-threaded and multi-
threaded C and Java language programs
annotated with preconditions and
postconditions written in separation logic.
☆ A verifier for single-threaded and multi-
threaded C and Java language programs
annotated with preconditions and
postconditions written in separation logic.
☆ VeriFast avoids illegal memory accesses such
like buffer overflow.
☆ VeriFast avoids illegal memory accesses such
like buffer overflow.
☆ VeriFast avoids illegal memory accesses such
like buffer overflow.
☆ VeriFast avoids illegal memory accesses such
like buffer overflow.
☆ VeriFast avoids illegal memory accesses such
like buffer overflow.
☆ VeriFast is easy to use with the graphical IDE.☆ VeriFast is easy to use with the graphical IDE.☆ VeriFast is easy to use with the graphical IDE.☆ VeriFast is easy to use with the graphical IDE.☆ VeriFast is easy to use with the graphical IDE.
4. Why use VeriFast? #1Why use VeriFast? #1Why use VeriFast? #1Why use VeriFast? #1Why use VeriFast? #1
5. Why use VeriFast? #2Why use VeriFast? #2Why use VeriFast? #2Why use VeriFast? #2Why use VeriFast? #2
7. You will see VeriFast IDE windowYou will see VeriFast IDE windowYou will see VeriFast IDE windowYou will see VeriFast IDE windowYou will see VeriFast IDE window
9. VeriFast finds an error, if verify itVeriFast finds an error, if verify itVeriFast finds an error, if verify itVeriFast finds an error, if verify itVeriFast finds an error, if verify it
10. Why does the error occur?Why does the error occur?Why does the error occur?Why does the error occur?Why does the error occur?
☆ The malloc(3) may return NULL pointer.☆ The malloc(3) may return NULL pointer.☆ The malloc(3) may return NULL pointer.☆ The malloc(3) may return NULL pointer.☆ The malloc(3) may return NULL pointer.
☆ But "myAccount->balance" dereferences the
pointer without checking NULL.
☆ But "myAccount->balance" dereferences the
pointer without checking NULL.
☆ But "myAccount->balance" dereferences the
pointer without checking NULL.
☆ But "myAccount->balance" dereferences the
pointer without checking NULL.
☆ But "myAccount->balance" dereferences the
pointer without checking NULL.
11. Modify code, and verify itModify code, and verify itModify code, and verify itModify code, and verify itModify code, and verify it
12. Example for RTOS application #1Example for RTOS application #1Example for RTOS application #1Example for RTOS application #1Example for RTOS application #1
$�export�PATH=`pwd`/verifast-*/bin:$PATH
$�tar�xf�chibios-verifast.tgz
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F746G-DISCOVERY-LWIP-FATFS-
USB
$�make�vfide
$�export�PATH=`pwd`/verifast-*/bin:$PATH
$�tar�xf�chibios-verifast.tgz
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F746G-DISCOVERY-LWIP-FATFS-
USB
$�make�vfide
$�export�PATH=`pwd`/verifast-*/bin:$PATH
$�tar�xf�chibios-verifast.tgz
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F746G-DISCOVERY-LWIP-FATFS-
USB
$�make�vfide
$�export�PATH=`pwd`/verifast-*/bin:$PATH
$�tar�xf�chibios-verifast.tgz
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F746G-DISCOVERY-LWIP-FATFS-
USB
$�make�vfide
$�export�PATH=`pwd`/verifast-*/bin:$PATH
$�tar�xf�chibios-verifast.tgz
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F746G-DISCOVERY-LWIP-FATFS-
USB
$�make�vfide
15. VeriFast finds error with bad mannerVeriFast finds error with bad mannerVeriFast finds error with bad mannerVeriFast finds error with bad mannerVeriFast finds error with bad manner
16. The error is caused by system stateThe error is caused by system stateThe error is caused by system stateThe error is caused by system stateThe error is caused by system state
17. ConclusionConclusionConclusionConclusionConclusion
☆ VeriFast is easy to setup and use.☆ VeriFast is easy to setup and use.☆ VeriFast is easy to setup and use.☆ VeriFast is easy to setup and use.☆ VeriFast is easy to setup and use.
☆ VeriFast has own graphical IDE.☆ VeriFast has own graphical IDE.☆ VeriFast has own graphical IDE.☆ VeriFast has own graphical IDE.☆ VeriFast has own graphical IDE.
☆ VeriFast safely uses pointers.☆ VeriFast safely uses pointers.☆ VeriFast safely uses pointers.☆ VeriFast safely uses pointers.☆ VeriFast safely uses pointers.
☆ VeriFast finds violation of RTOS system state.☆ VeriFast finds violation of RTOS system state.☆ VeriFast finds violation of RTOS system state.☆ VeriFast finds violation of RTOS system state.☆ VeriFast finds violation of RTOS system state.
18. For more informationFor more informationFor more informationFor more informationFor more information
In�English:
"The�VeriFast�Program�Verifier:�A�Tutorial"
https://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdf
##�In�Japanese
�プログラム検証器�VeriFast:�チュートリアル�
https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/
Tutorial.md
"TPPMark2016�を解きながら学ぶ�VeriFast"
https://speakerdeck.com/eldesh/tppmark2016-wojie-kinagaraxue-bu-verifast
"VeriFast�Termination�Checking�Introduction(α)"
https://speakerdeck.com/eldesh/verifast-termination-checking-introduction-a
In�English:
"The�VeriFast�Program�Verifier:�A�Tutorial"
https://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdf
##�In�Japanese
�プログラム検証器�VeriFast:�チュートリアル�
https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/
Tutorial.md
"TPPMark2016�を解きながら学ぶ�VeriFast"
https://speakerdeck.com/eldesh/tppmark2016-wojie-kinagaraxue-bu-verifast
"VeriFast�Termination�Checking�Introduction(α)"
https://speakerdeck.com/eldesh/verifast-termination-checking-introduction-a
In�English:
"The�VeriFast�Program�Verifier:�A�Tutorial"
https://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdf
##�In�Japanese
�プログラム検証器�VeriFast:�チュートリアル�
https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/
Tutorial.md
"TPPMark2016�を解きながら学ぶ�VeriFast"
https://speakerdeck.com/eldesh/tppmark2016-wojie-kinagaraxue-bu-verifast
"VeriFast�Termination�Checking�Introduction(α)"
https://speakerdeck.com/eldesh/verifast-termination-checking-introduction-a
In�English:
"The�VeriFast�Program�Verifier:�A�Tutorial"
https://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdf
##�In�Japanese
�プログラム検証器�VeriFast:�チュートリアル�
https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/
Tutorial.md
"TPPMark2016�を解きながら学ぶ�VeriFast"
https://speakerdeck.com/eldesh/tppmark2016-wojie-kinagaraxue-bu-verifast
"VeriFast�Termination�Checking�Introduction(α)"
https://speakerdeck.com/eldesh/verifast-termination-checking-introduction-a
In�English:
"The�VeriFast�Program�Verifier:�A�Tutorial"
https://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdf
##�In�Japanese
�プログラム検証器 VeriFast:�チュートリアル�
https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/
Tutorial.md
"TPPMark2016�を解きながら学ぶ VeriFast"
https://speakerdeck.com/eldesh/tppmark2016-wojie-kinagaraxue-bu-verifast
"VeriFast�Termination�Checking�Introduction(α)"
https://speakerdeck.com/eldesh/verifast-termination-checking-introduction-a
19. Meetup at Osaka tomorrowMeetup at Osaka tomorrowMeetup at Osaka tomorrowMeetup at Osaka tomorrowMeetup at Osaka tomorrow
☆ "#静的コード解析の会 第4回@⼤阪"☆ "#静的コード解析の会 第4回@⼤阪"☆ "#静的コード解析の会 第4回@⼤阪"☆ "#静的コード解析の会 第4回@⼤阪"☆ "#静的コード解析の会 第4回@⼤阪"
☆ https://metasepi.connpass.com/event/55350/☆ https://metasepi.connpass.com/event/55350/☆ https://metasepi.connpass.com/event/55350/☆ https://metasepi.connpass.com/event/55350/☆ https://metasepi.connpass.com/event/55350/
☆ Some talks about "static code analysis"☆ Some talks about "static code analysis"☆ Some talks about "static code analysis"☆ Some talks about "static code analysis"☆ Some talks about "static code analysis"
☆ Hands-on VeriFast with STM32 microcontroller☆ Hands-on VeriFast with STM32 microcontroller☆ Hands-on VeriFast with STM32 microcontroller☆ Hands-on VeriFast with STM32 microcontroller☆ Hands-on VeriFast with STM32 microcontroller