prevent termination during key write

This commit is contained in:
cathugger
2018-07-12 12:35:39 +00:00
parent 91f484cbc7
commit 8f1e08973d
2 changed files with 18 additions and 1 deletions

17
yaml.c
View File

@@ -1,3 +1,6 @@
#ifdef __linux__
#define _POSIX_C_SOURCE 200112L
#endif
#include <assert.h>
#include <stdio.h>
@@ -7,6 +10,10 @@
#include <time.h>
#include <pthread.h>
#ifndef _WIN32
#include <signal.h>
#endif
#include "types.h"
#include "yaml.h"
#include "ioutil.h"
@@ -229,6 +236,13 @@ int yamlin_parseandcreate(FILE *fin,char *sname,const char *hostname)
break;
}
if (hashost && haspub && hassec) {
#ifndef _WIN32
sigset_t nset,oset;
sigemptyset(&nset);
sigaddset(&nset,SIGINT);
sigaddset(&nset,SIGTERM);
sigprocmask(SIG_BLOCK,&nset,&oset);
#endif
if (createdir(sname,1) != 0) {
fprintf(stderr,"ERROR: could not create directory for key output\n");
return 1;
@@ -251,6 +265,9 @@ int yamlin_parseandcreate(FILE *fin,char *sname,const char *hostname)
fwrite(&sname[printstartpos],printlen,1,fout);
fflush(fout);
}
#ifndef _WIN32
sigprocmask(SIG_SETMASK,&oset,0);
#endif
if (hostname)
return 0; // finished
skipthis = 1;