Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

A signal is a mechanism for transferring control that is typically used to notify a process that an event has occurred. That process can then respond to that the event accordingly. The C Standard provides functions for sending and handling signals within a C program.

...

Code Block
void (*signal(int sig, void (*func)(int)))(int);

This signal handler is conceptually equivalent to

...

Some platforms provide the ability to mask signals while a signal handler is being processed. If a signal is masked while its own handler is processed, the handler is noninterruptible and need not be async-signal-safe. However, even when a signal is masked while its own handler is processed, the handler must still avoid invoking async-signal-safe unsafe functions because their execution may be (or have been) interrupted by another signal.

Vulnerabilities can arise if a signal handler that is not async-signal-safe is interrupted with any unmasked signal, including its own.

...

Recommendation

Severity

Likelihood

Remediation Cost

Priority

Level

SIG00-C

highHigh

likelyLikely

highHigh

P9

L2

Automated Detection

Tool

Version

Checker

Description

PRQA QA-C
Include Page
PRQA_V
PRQA_V
warncall for signalPartially implemented

...

Bibliography

Section 5.2.3, "Signals and Interrupts"
[C99 Rationale 2003]Subclause 5.2.3, "Signals and Interrupts"
[Dowd 2006]Chapter 13, "Synchronization and State" ("Signal Interruption and Repetition")[ISO/IEC 2003]
[Open Group 2004]longjmp
[OpenBSD]signal() Man Page
[Zalewski 2001]"Delivering Signals for Fun and Profit"

...