Identifying Security Vulnerabilities in C/C++Programming

Start Date: 12/15/2019

Course Type: Common Course

Course Link:

Explore 1600+ online courses from top universities. Join Coursera today to learn data science, programming, business strategy, and more.

Course Syllabus

Users, Privileges, and Environment Variables
Validation and Verification, Buffer and Numeric Overflows, and Input Injections
Files, Subprocesses, and Race Conditions
Randomness, Cryptography, and Other Topics

Deep Learning Specialization on Coursera

Course Tag

Related Wiki Topic

Article Example
Splint (programming tool) Splint, short for Secure Programming Lint, is a programming tool for statically checking C programs for security vulnerabilities and coding mistakes. Formerly called LCLint, it is a modern version of the Unix lint tool.
C (programming language) The C++ programming language was devised by Bjarne Stroustrup as an approach to providing object-oriented functionality with a C-like syntax. C++ adds greater typing strength, scoping, and other tools useful in object-oriented programming, and permits generic programming via templates. Nearly a superset of C, C++ now supports most of C, with a few exceptions.
Computer security Vulnerability management is the cycle of identifying, and remediating or mitigating vulnerabilities", especially in software and firmware. Vulnerability management is integral to computer security and network security.
C Sharp (programming language) James Gosling, who created the Java programming language in 1994, and Bill Joy, a co-founder of Sun Microsystems, the originator of Java, called C# an "imitation" of Java; Gosling further said that "[C# is] sort of Java with reliability, productivity and security deleted." Klaus Kreft and Angelika Langer (authors of a C++ streams book) stated in a blog post that "Java and C# are almost identical programming languages. Boring repetition that lacks innovation," "Hardly anybody will claim that Java or C# are revolutionary programming languages that changed the way we write programs," and "C# borrowed a lot from Java - and vice versa. Now that C# supports boxing and unboxing, we'll have a very similar feature in Java."
The C++ Programming Language "C++ Solutions" (ISBN 0-201-30965-3) is a companion book to the third edition of "The C++ Programming Language". It contains solutions to selected exercises of "The C++ Programming Language".
The C++ Programming Language The first edition of "The C++ Programming Language" was published in 1985. As C++ evolved, a second edition was published in July 1991, reflecting the changes made.
C++ Many other programming languages have been influenced by C++, including C#, D, Java, and newer versions of C (after 1999).
C++ C++ introduces object-oriented programming (OOP) features to C. It offers classes, which provide the four features commonly present in OOP (and some non-OOP) languages: abstraction, encapsulation, inheritance, and polymorphism. One distinguishing feature of C++ classes compared to classes in other programming languages is support for deterministic destructors, which in turn provide support for the Resource Acquisition is Initialization (RAII) concept.
Operators in C and C++ This is a list of operators in the C and C++ programming languages. All the operators listed exist in C++; the fourth column "Included in C", states whether an operator is also present in C. Note that C does not support operator overloading.
C standard library Some functions in the C standard library have been notorious for having buffer overflow vulnerabilities and generally encouraging buggy programming ever since their adoption. The most criticized items are:
C Sharp (programming language) In December 2001, ECMA released ECMA-334 "C# Language Specification". C# became an ISO standard in 2003 (ISO/IEC 23270:2003 - "Information technology — Programming languages — C#"). ECMA had previously adopted equivalent specifications as the 2nd edition of C#, in December 2002.
The C++ Programming Language The C++ Programming Language was the first book to describe the C++ programming language, written by the language’s creator, Bjarne Stroustrup, and first published in October 1985. In the absence of an official standard, the book served for several years as the "de facto" documentation for the evolving C++ language until the release of the "ISO/IEC 14882:1998: Programming Language C++" standard on 1 September 1998. As the standard further evolved with the standardization of language and library extensions and with the publication of technical corrigenda, later editions of the book were updated to incorporate the new changes.
C (programming language) One consequence of C's wide availability and efficiency is that compilers, libraries and interpreters of other programming languages are often implemented in C. The primary implementations of Python, Perl 5 and PHP, for example, are all written in C.
Objective-C In addition to C's style of procedural programming, C++ directly supports certain forms of [[object-oriented programming]], [[generic programming]], and [[metaprogramming]]. C++ also comes with [[C++ standard library|a large standard library]] that includes [[Sequence container (C++)|several container classes]]. Similarly, Objective-C adds [[Polymorphism in object-oriented programming|object-oriented programming]], [[dynamic typing]], and [[reflection (computer science)|reflection]] to C. Objective-C does not provide a standard library "per se", but in most places where Objective-C is used, it is used with an [[OpenStep]]-like library such as [[OPENSTEP]], [[Cocoa (API)|Cocoa]], or [[GNUstep]], which provides functionality similar to C++'s standard library.
Impulse C Impulse C is a subset of the C programming language combined with a C-compatible function library supporting parallel programming, in particular for programming of applications targeting FPGA devices. It is developed by Impulse Accelerated Technologies of Kirkland, Washington.
C (programming language) C (, as in the letter "c") is a general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations. By design, C provides constructs that map efficiently to typical machine instructions, and therefore it has found lasting use in applications that had formerly been coded in assembly language, including operating systems, as well as various application software for computers ranging from supercomputers to embedded systems.
C Sharp (programming language) Though primarily an imperative language, C# 2.0 offered limited support for functional programming through first-class functions and closures in the form of anonymous delegates. C# 3.0 expanded support for functional programming with the introduction of a lightweight syntax for lambda expressions, extension methods (an affordance for modules), and a list comprehension syntax in the form of a "query comprehension" language.
C (programming language) Historically, embedded C programming requires nonstandard extensions to the C language in order to support exotic features such as fixed-point arithmetic, multiple distinct memory banks, and basic I/O operations.
C Sharp (programming language) C# is a general-purpose, object-oriented programming language. Its development team is led by Anders Hejlsberg. The most recent version is C# 7.0 which was released in 2017 along with Visual Studio 2017.
SA-C (programming language) Single Assignment C (SA-C) (pronounced "sassy") is a member of the C programming language family designed to be directly and intuitively translatable into circuits, including FPGAs. To ease translation, SA-C does not include pointers and arithmetics thereon. To retain most of the expressiveness of C, SA-C instead features true n-dimensional arrays as first-class objects of the language.