What you will learn
Explore the C and C++ languages. Look at the specificity of the C/C++ languages and how this impacts security, ways C/C++ can interact with the external world, error handling, the execution environment and much more.
Syllabus
Secure C/C++
Course — 00:12:48
K0009, K0016, K0068, K0070
This course is the introduction to the learning path. It presents the teacher, the tools and the content of the courses and explains why secure C/C++ is important.
C/C++ Particularities
Course — 02:44:04
K0009, K0016, K0068, K0070, K0372, K0396
This course covers all of the C/C++ particularities a programmer needs to know to create secure programs using these languages.
Interacting with the World
Course — 02:15:22
K0009, K0016, K0068, K0140, K0396
This course describes many ways a program can interact with the world.
Error Handling
Course — 00:42:55
K0009, K0016, K0068, K0140, K0229, K0396
This course describes what to do and what not to do when an error occurs.
Random Number Generation
Course — 00:20:34
K0009, K0016, K0068, K0140, K0396
This course explains why good random number generation is important when developing software and explores the functions provided for it. It also shows how the functions, the C library provides for that, are flawed. And then, it describes better way to generate random numbers.
SETUID Bit
Course — 00:29:14
K0009, K0016, K0068, K0140, K0396
Some programs have “superpowers,” and programming them requires special attention.
Driver Development
Course — 00:43:03
K0009, K0016, K0068, K0140, K0396, K0608
Device drivers, as operating systems, are written in C. When applications interact directly with them, they become the kernel’s last line of defense.
Writing Secure Code in C++ Skill Assessment
Assessment — 35 questions — 00:17:30
C++ – Buffer Overflows
Lab — 00:14:00
Buffer overflows are one of the simplest and most common programming errors in C++ code. This lab demonstrates several ways that a buffer overflow vulnerability can be introduced into code, how they can be exploited, and how to correct them.
C++ – Integer Overflows and Underflows
Lab — 00:13:00
Integer overflow and underflow vulnerabilities are created by unsafe typecasting between different integer variable types. This lab demonstrates code containing these vulnerabilities, how the vulnerabilities can be exploited, and how to correct them.
C++ – Format String Vulnerabilities
Lab — 00:13:00
Format string specifiers are useful for building strings using variables of other types. However, if they are misused, they can have unexpected results or open up a program to exploitation. This lab demonstrates some common format string mistakes, and, when applicable, how they can be exploited.
C++ – Poor Error Handling
Lab — 00:14:00
A variety of different factors can cause low-level functions and other code to fail. This lab demonstrates some ways in which errors in error handling can make code execution unpredictable or exploitable.
Secure Coding – C/C++
Lab — 00:30:00
This lab covers multiple secure coding errors commonly found in C and C++, including buffer overruns, strcpy(), gets(), and the system() function.
C++ – Introduction to cppcheck
Lab — 00:14:00
cppcheck is a static code analysis tool for C++ code that tests for a wide number of potential vulnerabilities and other errors. This lab demonstrates some of the basic functionality and use of cppcheck.

Meet the author
Martin Dubois obtained a degree in computer engineering from Laval University, Québec City, in 1993. He worked in many high-tech start-ups as software developer and software development leader. He mainly developed in C and C++, creating embedded software and device drivers for Windows and Linux. In 2000, he became a freelancer. He helps clients to develop safe, functional and efficient software systems. In addition to developing in C and C++, he provides expert corporate training about device driver development and other related subjects.
Martin is deeply interested in computer security. He never misses the Québec City Hackfest event and even presented subjects twice. He has been a part-time lecturer at colleges and university for over 15 years, where he did teach computer science, programming, and network security.
The details
Learning path insights

How to claim CPEs
Should you complete this learning path, you’ll be able to download a certificate of completion. Use this to claim your CPEs or CPUs.
Associated NICE Work Roles
All Infosec training maps directly to the NICE Workforce Framework for Cybersecurity to guide you from beginner to expert across 52 Work Roles.
- Exploitation Analyst
- Multi-Disciplined Language Analyst
- Cyber Operator
No software. No set up. Unlimited access.
Skip the server racks and spin up a realistic environment with one click. Infosec Skills cyber ranges require no additional software, hardware or server space so your team can spend less time configuring environments and more time learning. Unlimited cyber range access is included in every lnfosec Skills subscription so your team can skill up however they learn best.

Plans & pricing
-
Infosec Skills Personal
- 190+ role-guided learning paths (e.g., Ethical Hacking, Threat Hunting)
- 100s of hands-on labs in cloud-hosted cyber ranges
- Custom certification practice exams (e.g., CISSP, Security+)
- Skill assessments
- Infosec peer community support
-
Infosec Skills Teams
- Team administration and reporting
- Dedicated client success manager
-
Single sign-on (SSO)
Easily authenticate and manage your learners by connecting to any identity provider that supports the SAML 2.0 standard.
-
Integrations via API
Retrieve training performance and engagement metrics and integrate learner data into your existing LMS or HRS.
- 190+ role-guided learning paths and assessments (e.g., Incident Response)
- 100s of hands-on labs in cloud-hosted cyber ranges
- Create and assign custom learning paths
- Custom certification practice exams (e.g., CISSP, CISA)
- Optional upgrade: Guarantee team certification with live boot camps
Unlock 7 days of free training
- 1,400+ hands-on courses and labs
- Certification practice exams
- Skill assessments
You're in good company
We use Infosec Skills to provide continuous training to our technicians and to prepare them for various certifications. Infosec Skills allows us to create personalized training programs that focus on each of our technicians’ particular roles and see their progress as they take courses. We also, recommend it to clients to make their IT support teams better.
Caleb Yankus
This has been utilized to bridge the skills gap across our cyber team and to aid them as they prepare for their various certifications. It also has provided a nice learning foundation for our various cyber team members to utilize as we continue to find ways for cross-utilization with operations while minimizing the downtime needed to ensure everyone’s knowledge is the same.
Daniel Simpson
We use Infosec Skills to provide base level knowledge for employees. We also use the services to provide in depth learning for employees as they encounter new technologies. If an employee is is assigned to a new project, we can rely on Infosec Skills to provide a rapid concentrated learning environment. This rapid concentrated learning positions our employees for success.
Infosec Skills Teams client