mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 20:36:50 +03:00
Fix use of uninitialized memory in sigaction structure.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
255cc340b5
commit
bb65b46790
@ -93,12 +93,11 @@ tty_setup_sigwinch (void (*handler) (int))
|
|||||||
#if (NCURSES_VERSION_MAJOR >= 4) && defined (SIGWINCH)
|
#if (NCURSES_VERSION_MAJOR >= 4) && defined (SIGWINCH)
|
||||||
struct sigaction act, oact;
|
struct sigaction act, oact;
|
||||||
|
|
||||||
|
memset (&act, 0, sizeof (act));
|
||||||
act.sa_handler = handler;
|
act.sa_handler = handler;
|
||||||
sigemptyset (&act.sa_mask);
|
sigemptyset (&act.sa_mask);
|
||||||
#ifdef SA_RESTART
|
#ifdef SA_RESTART
|
||||||
act.sa_flags = SA_RESTART;
|
act.sa_flags = SA_RESTART;
|
||||||
#else
|
|
||||||
act.sa_flags = 0;
|
|
||||||
#endif /* SA_RESTART */
|
#endif /* SA_RESTART */
|
||||||
sigaction (SIGWINCH, &act, &oact);
|
sigaction (SIGWINCH, &act, &oact);
|
||||||
#endif /* SIGWINCH */
|
#endif /* SIGWINCH */
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h> /* memset() */
|
||||||
#include <unistd.h> /* exit() */
|
#include <unistd.h> /* exit() */
|
||||||
|
|
||||||
#ifdef HAVE_SYS_IOCTL_H
|
#ifdef HAVE_SYS_IOCTL_H
|
||||||
@ -118,12 +119,11 @@ tty_start_interrupt_key (void)
|
|||||||
{
|
{
|
||||||
struct sigaction act;
|
struct sigaction act;
|
||||||
|
|
||||||
|
memset (&act, 0, sizeof (act));
|
||||||
act.sa_handler = sigintr_handler;
|
act.sa_handler = sigintr_handler;
|
||||||
sigemptyset (&act.sa_mask);
|
sigemptyset (&act.sa_mask);
|
||||||
#ifdef SA_RESTART
|
#ifdef SA_RESTART
|
||||||
act.sa_flags = SA_RESTART;
|
act.sa_flags = SA_RESTART;
|
||||||
#else
|
|
||||||
act.sa_flags = 0;
|
|
||||||
#endif /* SA_RESTART */
|
#endif /* SA_RESTART */
|
||||||
sigaction (SIGINT, &act, NULL);
|
sigaction (SIGINT, &act, NULL);
|
||||||
}
|
}
|
||||||
@ -135,9 +135,9 @@ tty_enable_interrupt_key (void)
|
|||||||
{
|
{
|
||||||
struct sigaction act;
|
struct sigaction act;
|
||||||
|
|
||||||
|
memset (&act, 0, sizeof (act));
|
||||||
act.sa_handler = sigintr_handler;
|
act.sa_handler = sigintr_handler;
|
||||||
sigemptyset (&act.sa_mask);
|
sigemptyset (&act.sa_mask);
|
||||||
act.sa_flags = 0;
|
|
||||||
sigaction (SIGINT, &act, NULL);
|
sigaction (SIGINT, &act, NULL);
|
||||||
got_interrupt = 0;
|
got_interrupt = 0;
|
||||||
}
|
}
|
||||||
@ -149,9 +149,9 @@ tty_disable_interrupt_key (void)
|
|||||||
{
|
{
|
||||||
struct sigaction act;
|
struct sigaction act;
|
||||||
|
|
||||||
|
memset (&act, 0, sizeof (act));
|
||||||
act.sa_handler = SIG_IGN;
|
act.sa_handler = SIG_IGN;
|
||||||
sigemptyset (&act.sa_mask);
|
sigemptyset (&act.sa_mask);
|
||||||
act.sa_flags = 0;
|
|
||||||
sigaction (SIGINT, &act, NULL);
|
sigaction (SIGINT, &act, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,9 +180,9 @@ my_system__save_sigaction_handlers (my_system_sigactions_t * sigactions)
|
|||||||
{
|
{
|
||||||
struct sigaction ignore;
|
struct sigaction ignore;
|
||||||
|
|
||||||
|
memset (&ignore, 0, sizeof (ignore));
|
||||||
ignore.sa_handler = SIG_IGN;
|
ignore.sa_handler = SIG_IGN;
|
||||||
sigemptyset (&ignore.sa_mask);
|
sigemptyset (&ignore.sa_mask);
|
||||||
ignore.sa_flags = 0;
|
|
||||||
|
|
||||||
sigaction (SIGINT, &ignore, &sigactions->intr);
|
sigaction (SIGINT, &ignore, &sigactions->intr);
|
||||||
sigaction (SIGQUIT, &ignore, &sigactions->quit);
|
sigaction (SIGQUIT, &ignore, &sigactions->quit);
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <string.h> /* memset() */
|
||||||
|
|
||||||
#include "lib/global.h"
|
#include "lib/global.h"
|
||||||
|
|
||||||
@ -68,8 +69,8 @@ tcp_init (void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
got_sigpipe = 0;
|
got_sigpipe = 0;
|
||||||
|
memset (&sa, 0, sizeof (sa));
|
||||||
sa.sa_handler = sig_pipe;
|
sa.sa_handler = sig_pipe;
|
||||||
sa.sa_flags = 0;
|
|
||||||
sigemptyset (&sa.sa_mask);
|
sigemptyset (&sa.sa_mask);
|
||||||
sigaction (SIGPIPE, &sa, NULL);
|
sigaction (SIGPIPE, &sa, NULL);
|
||||||
|
|
||||||
|
@ -154,6 +154,7 @@ do_suspend_cmd (void)
|
|||||||
{
|
{
|
||||||
struct sigaction sigtstp_action;
|
struct sigaction sigtstp_action;
|
||||||
|
|
||||||
|
memset (&sigtstp_action, 0, sizeof (sigtstp_action));
|
||||||
/* Make sure that the SIGTSTP below will suspend us directly,
|
/* Make sure that the SIGTSTP below will suspend us directly,
|
||||||
without calling ncurses' SIGTSTP handler; we *don't* want
|
without calling ncurses' SIGTSTP handler; we *don't* want
|
||||||
ncurses to redraw the screen immediately after the SIGCONT */
|
ncurses to redraw the screen immediately after the SIGCONT */
|
||||||
|
@ -203,6 +203,7 @@ init_sigchld (void)
|
|||||||
{
|
{
|
||||||
struct sigaction sigchld_action;
|
struct sigaction sigchld_action;
|
||||||
|
|
||||||
|
memset (&sigchld_action, 0, sizeof (sigchld_action));
|
||||||
sigchld_action.sa_handler =
|
sigchld_action.sa_handler =
|
||||||
#ifdef ENABLE_SUBSHELL
|
#ifdef ENABLE_SUBSHELL
|
||||||
mc_global.tty.use_subshell ? sigchld_handler :
|
mc_global.tty.use_subshell ? sigchld_handler :
|
||||||
@ -213,8 +214,6 @@ init_sigchld (void)
|
|||||||
|
|
||||||
#ifdef SA_RESTART
|
#ifdef SA_RESTART
|
||||||
sigchld_action.sa_flags = SA_RESTART;
|
sigchld_action.sa_flags = SA_RESTART;
|
||||||
#else
|
|
||||||
sigchld_action.sa_flags = 0;
|
|
||||||
#endif /* !SA_RESTART */
|
#endif /* !SA_RESTART */
|
||||||
|
|
||||||
if (sigaction (SIGCHLD, &sigchld_action, NULL) == -1)
|
if (sigaction (SIGCHLD, &sigchld_action, NULL) == -1)
|
||||||
|
Loading…
Reference in New Issue
Block a user