Most functions defined by the C11 Annex K Bounds-checking interfaces include, as part of their specification, a list of runtime constraints, violations of which can be consistently handled at runtime. Library implementations must verify that the runtime constraints for a function are not violated by the program. If a runtime constraint is violated, the runtime constraint handler currently registered with set_constraint_handler_s()
is called.
Section 6.6.1 \[ [ISO/IEC TR 24731-1:2007|AA. Bibliography#ISO/IEC TR 24731-1-2007]\] states Wiki Markup
When the handler is called, it is passed the following arguments in the following order:
- A pointer to a character string describing the runtime constraint violation.
- A null pointer or a pointer to an implementation-defined object.
- If the function calling the handler has a return type declared as
errno_t
, the return value of the function is passed. Otherwise, a positive value of typeerrno_t
is passed.The implementation has a default constraint handler that is used if no calls to the
set_constraint_handler_s()
function have been made or the handler argument toset_constraint_handler_s()
is a null pointer. The behavior of the default handler is implementation-defined, and it may cause the program to exit or abort.
And Section 6.1.4 \[ [ISO/IEC TR 24731-1:2007|AA. Bibliography#ISO/IEC TR 24731-1-2007]\] states Wiki Markup
The runtime constraint handler might not return. If the handler does return, the library function whose runtime constraint was violated shall return some indication of failure as given by the returns section in the function's specification.
...
ISO/IEC TR 24731-1:2007 Section 6.1.4, "Runtime-constraint violations", and Section 6.6.1, "Runtime-constraint handling"
Bibliography
\[[MSDN|AA. Bibliography#MSDN]\] "[Parameter Validation|http://msdn.microsoft.com/en-us/library/ksazx244.aspx]" Wiki Markup
...