
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
This video serves as an instructive illustration of the real-world implications of software vulnerabilities.
Before starting this course, it's essential to make sure that you meet certain requirements.
Learn about the potential risks of manual memory management in C and C++.
In this video, we'll explore common pitfalls and best practices when working with pointers in C and C++.
C and C++ provide extensive access to system resources, but this can also lead to security threats such as privilege escalation attacks. In this video, we'll discuss two principles that can guide developers in managing low-level access securely.
The type system of C and C++ is flexible, enabling conversions between diverse types. Although this offers significant flexibility, mishandling these features could result in severe issues.
Developers may wrongly assume that C and C++, along with their standard library functions, protect them by handling a lot of security-related tasks behind the scenes. This video aims to clarify the reality of the situation.
This video explains why it's essential to consider the security of legacy codebases.
In this video, we'll explore stack and heap-based buffer overflows and how they can affect the security of your code.
Do you remember the entertainment system crash story? In this video, we uncover the dangerous flaw called integer overflow that could have caused it. Join us to understand and prevent this critical vulnerability.
Discover how uncontrolled format strings can open the door to vulnerabilities and compromise the security of your code.
Let's explore the pitfalls of improper error handling and the security risks it may pose to your codebase.
This video reveals the hidden dangers of concurrent programming and the security risks posed by race conditions.
In this module, we'll cover key principles for improving our C/C++ coding habits. We’ll start by discussing the importance of minimizing the attack surface area.
In this video, we'll look at how applying the Principle of Least Privilege fortifies your code against potential exploits.
In this video, we'll explore the topic of fail-safe defaults in secure programming. You'll learn the significance of secure default configurations and their role in enhancing software security and reliability.
Let's talk about the power of layered security in software applications. Learn how to protect your code from various vulnerabilities by implementing multiple security measures, ensuring robust and secure software applications.
In this video, we'll revisit the essentials of memory management in C. We'll discuss how to allocate, deallocate, and handle memory effectively, ensuring your C programs run smoothly and securely.
In this video, we'll uncover common memory management pitfalls in C, such as dereferencing null pointers and freeing up a block of memory multiple times, and learn how to avoid them. Enhance your code's reliability and security with best practices.
Let's delve deeper into C memory management and discover more critical mistakes to avoid. Strengthen your understanding and create robust C programs.
We'll explore less trivial memory management errors in C to enhance your expertise in building secure and efficient software.
In this video, we'll delve into the core of C++ Memory Management with new and delete. We'll discuss why C's memory management functions fell short in the object-oriented world of C++.
In this video, we'll explore less-known aspects of C++ memory management. We'll focus on initialization and how placement new allows precise control over memory allocations.
This lecture is about managing C++ memory allocation failures. We'll explore how to deal with exceptions thrown by new and how to set custom error handlers to manage allocation problems ourselves. Arm yourself with these techniques to create robust and fault-tolerant C++ applications.
Manual memory management can cause problems like memory leaks and dangling pointers. C++ smart pointers can help solve these issues--let's see how.
How can choosing a car wallpaper affect vehicle safety? In this case study, you’ll see how small C++ mistakes in the In-Vehicle Infotainment System code can ripple through the entire system.
You’ll explore the starter C++ project that mirrors a car’s software stack — and uncover an unexpected surprise lurking in the code.
Every developer has been there: a bug report comes in, pressure is on, and the quick fix looks tempting. If you’ve ever patched a bug just to make it “go away,” this video will feel uncomfortably familiar.
A small bug in one corner of the IVI system sets off a chain reaction that ripples across components. In this video, you’ll see how a seemingly minor coding flaw escalates into a system-wide failure—the butterfly effect in action.
A diagnostic message pathway is abused to trigger a system-wide shutdown. This video walks through the precise code paths and logic failures that allow a remote “kill switch” to be activated.
Code along as we refactor the vulnerable parts of our project, replacing unsafe buffers and magic strings with structured types and clear ownership. Step by step, you’ll see how small changes lead to cleaner, safer, and more reliable code.
In this final part, we’ll step back and reflect on the key takeaways from the case study. We’ll wrap up with the bigger picture: secure coding isn’t just about techniques, it’s about clarity, discipline, and common sense.
Congratulations on completing the course! This final video will wrap up our journey through secure coding in C/C++. We hope you've gained valuable insights and skills to enhance your software development practices. Remember to apply secure coding principles in all your projects, and together, let's build a safer digital world. Thank you for joining us, and happy coding!
I've included a handy quick reference guide in PDF format as a free companion for this course. This way, you'll always have a practical tool at your fingertips, no matter where you are. Enjoy!
This lecture contains promo codes for my other courses and links to free resources you might find helpful.
Join us in the Secure Coding in C/C++ course and take your programming skills to the next level. Delve into the world of secure coding practices for C and C++ languages. Gain the knowledge and skills to uncover security flaws, defend your code against vulnerabilities, and design robust and secure software applications.
Throughout this course, you'll learn essential techniques and best practices for secure programming in C and C++. We'll start by exploring common security vulnerabilities and their potential impact on software systems. You'll understand the importance of secure coding principles and how they form the foundation for building secure applications.
We'll delve into topics such as input validation, secure memory management, proper error handling, and secure file and data handling. You'll discover how to mitigate risks associated with buffer overflows, format string vulnerabilities, and other common coding pitfalls. With hands-on exercises and real-world examples, you'll gain practical experience in identifying and resolving security issues in your code.
How can choosing a car wallpaper affect vehicle safety? Through a realistic case study, you’ll see how small C++ mistakes in the In-Vehicle Infotainment System code can ripple through the entire system. You'll learn how to trace a realistic car infotainment system exploit, identify unsafe C++ code, and apply secure and clean coding techniques to prevent system-wide compromise.
Our instructor will guide you through each concept, providing clear explanations and practical demonstrations. Using the course Q&A, you'll have the opportunity to engage in discussions with fellow learners, sharing insights and learning from their experiences. Quizzes and coding assignments will help you solidify your understanding and apply secure coding practices in real-world scenarios.
By the end of this course, you'll have a deep understanding of secure programming principles, techniques, and tools specific to C and C++. You'll be equipped with the skills to write secure, reliable, and robust code that can withstand potential attacks and protect sensitive data.
Join us on this journey to becoming a skilled and confident secure C/C++ programmer. Enroll now and take a significant step towards enhancing the security of your software applications.