From: Robert K. <rk...@us...> - 2003-09-28 20:25:06
|
Update of /cvsroot/ipcop/ipcop/src/misc-progs In directory sc8-pr-cvs1:/tmp/cvs-serv1797/src/misc-progs Modified Files: Tag: IPCOP_v1 setaliases.c setdmzholes.c setportfw.c setxtaccess.c restartssh.c Log Message: Changed data validation to use macros defined in setuid.h Reordered code to no longer use goto Set return code to indicate errors Index: setaliases.c =================================================================== RCS file: /cvsroot/ipcop/ipcop/src/misc-progs/Attic/setaliases.c,v retrieving revision 1.1.2.5 retrieving revision 1.1.2.6 diff -C2 -d -r1.1.2.5 -r1.1.2.6 *** setaliases.c 20 Aug 2003 18:09:43 -0000 1.1.2.5 --- setaliases.c 28 Sep 2003 15:58:29 -0000 1.1.2.6 *************** *** 24,30 **** #include <fcntl.h> int main(void) { - FILE *file = NULL; char s[STRING_SIZE]; char command[STRING_SIZE]; --- 24,38 ---- #include <fcntl.h> + struct keyvalue *kv = NULL; + FILE *file = NULL; + + void exithandler(void) + { + if (kv) freekeyvalues(kv); + if (file) fclose(file); + } + int main(void) { char s[STRING_SIZE]; char command[STRING_SIZE]; *************** *** 37,42 **** int alias; int count; ! struct keyvalue *kv = NULL; ! if (!(initsetuid())) { --- 45,49 ---- int alias; int count; ! if (!(initsetuid())) { *************** *** 44,48 **** exit(1); } ! /* Init the keyvalue structure */ kv=initkeyvalues(); --- 51,57 ---- exit(1); } ! ! atexit(exithandler); ! /* Init the keyvalue structure */ kv=initkeyvalues(); *************** *** 52,56 **** { fprintf(stderr, "Cannot read ethernet settings\n"); ! goto EXIT; } --- 61,65 ---- { fprintf(stderr, "Cannot read ethernet settings\n"); ! exit(1); } *************** *** 59,63 **** { fprintf(stderr, "Cannot read CONFIG_TYPE\n"); ! goto EXIT; } --- 68,72 ---- { fprintf(stderr, "Cannot read CONFIG_TYPE\n"); ! exit(1); } *************** *** 65,69 **** * exit gracefully. This is not an error... */ if (!((strcmp(s, "2")==0) || (strcmp(s, "3")==0) || (strcmp(s, "6")==0) || (strcmp(s, "7")==0))) ! goto EXIT; /* Now check the RED_TYPE - aliases only work with STATIC. --- 74,78 ---- * exit gracefully. This is not an error... */ if (!((strcmp(s, "2")==0) || (strcmp(s, "3")==0) || (strcmp(s, "6")==0) || (strcmp(s, "7")==0))) ! exit(0); /* Now check the RED_TYPE - aliases only work with STATIC. *************** *** 74,83 **** { fprintf(stderr, "Cannot read RED_TYPE\n"); ! goto EXIT; } /* Make sure it's the right type */ if (!(strcmp(s, "STATIC")==0)) ! goto EXIT; /* Get the RED interface details */ --- 83,92 ---- { fprintf(stderr, "Cannot read RED_TYPE\n"); ! exit(1); } /* Make sure it's the right type */ if (!(strcmp(s, "STATIC")==0)) ! exit(0); /* Get the RED interface details */ *************** *** 85,107 **** { fprintf(stderr, "Cannot read RED settings\n"); ! goto EXIT; } ! if (strspn(red_dev, LETTERS_NUMBERS) != strlen(red_dev)) { fprintf(stderr, "Bad red_dev: %s\n", red_dev); ! goto EXIT; } ! if (strspn(red_netmask, IP_NUMBERS) != strlen(red_netmask)) { fprintf(stderr, "Bad red_netmask : %s\n", red_netmask); ! goto EXIT; } ! if (strspn(red_broadcast, IP_NUMBERS) != strlen(red_broadcast)) { fprintf(stderr, "Bad red_broadcast : %s\n", red_broadcast); ! goto EXIT; } --- 94,116 ---- { fprintf(stderr, "Cannot read RED settings\n"); ! exit(1); } ! if (!VALID_DEVICE(red_dev)) { fprintf(stderr, "Bad red_dev: %s\n", red_dev); ! exit(1); } ! if (!VALID_IP(red_netmask)) { fprintf(stderr, "Bad red_netmask : %s\n", red_netmask); ! exit(1); } ! if (!VALID_IP(red_broadcast)) { fprintf(stderr, "Bad red_broadcast : %s\n", red_broadcast); ! exit(1); } *************** *** 118,122 **** { fprintf(stderr, "Unable to open aliases configuration file\n"); ! goto EXIT; } --- 127,131 ---- { fprintf(stderr, "Unable to open aliases configuration file\n"); ! exit(1); } *************** *** 143,150 **** continue; ! if (strspn(aliasip, IP_NUMBERS) != strlen(aliasip)) { fprintf(stderr, "Bad alias : %s\n", aliasip); ! goto EXIT; } --- 152,159 ---- continue; ! if (!VALID_IP(aliasip)) { fprintf(stderr, "Bad alias : %s\n", aliasip); ! exit(1); } *************** *** 158,165 **** } - - EXIT: - if (kv) freekeyvalues(kv); - if (file) fclose(file); return 0; } --- 167,170 ---- Index: setdmzholes.c =================================================================== RCS file: /cvsroot/ipcop/ipcop/src/misc-progs/setdmzholes.c,v retrieving revision 1.2.2.4 retrieving revision 1.2.2.5 diff -C2 -d -r1.2.2.4 -r1.2.2.5 *** setdmzholes.c 2 May 2003 14:12:22 -0000 1.2.2.4 --- setdmzholes.c 28 Sep 2003 15:58:29 -0000 1.2.2.5 *************** *** 21,27 **** #include "setuid.h" int main(void) { - FILE *fwdfile = NULL; int count; char *protocol; --- 21,34 ---- #include "setuid.h" + FILE *fwdfile = NULL; + + void exithandler(void) + { + if (fwdfile) + fclose(fwdfile); + } + int main(void) { int count; char *protocol; *************** *** 36,44 **** if (!(initsetuid())) exit(1); ! ! if (!(fwdfile = fopen(CONFIG_ROOT "/dmzholes/config", "r"))) { fprintf(stderr, "Couldn't open dmzholes settings file\n"); ! goto EXIT; } --- 43,53 ---- if (!(initsetuid())) exit(1); ! ! atexit(exithandler); ! ! if (!(fwdfile = fopen(CONFIG_ROOT "/dmzholes/config", "r"))) { fprintf(stderr, "Couldn't open dmzholes settings file\n"); ! exit(1); } *************** *** 75,101 **** break; ! if (strspn(protocol, LETTERS) != strlen(protocol)) { fprintf(stderr, "Bad protocol: %s\n", protocol); ! goto EXIT; } ! if (strspn(locip, IP_NUMBERS) != strlen(locip)) { fprintf(stderr, "Bad local IP: %s\n", locip); ! goto EXIT; } ! if (strspn(remip, IP_NUMBERS) != strlen(remip)) { fprintf(stderr, "Bad remote IP: %s\n", remip); ! goto EXIT; } ! if (strspn(remport, NUMBERS) != strlen(remport)) { fprintf(stderr, "Bad remote port: %s\n", remport); ! goto EXIT; } if (strcmp(enabled, "on") == 0) { memset(command, 0, STRING_SIZE); snprintf(command, STRING_SIZE - 1, "/sbin/iptables -A DMZHOLES -p %s -s %s -d %s --dport %s -j ACCEPT", protocol, locip, remip, remport); --- 84,113 ---- break; ! if (!VALID_PROTOCOL(protocol)) { fprintf(stderr, "Bad protocol: %s\n", protocol); ! exit(1); } ! if (!VALID_IP(locip)) { fprintf(stderr, "Bad local IP: %s\n", locip); ! exit(1); } ! if (!VALID_IP(remip)) { fprintf(stderr, "Bad remote IP: %s\n", remip); ! exit(1); } ! if (!VALID_PORT(remport)) { fprintf(stderr, "Bad remote port: %s\n", remport); ! exit(1); } if (strcmp(enabled, "on") == 0) { + char *ctr; + /* If remport contains a - we need to change it to a : */ + if ((ctr = strchr(remport,'-')) != NULL){*ctr = ':';} memset(command, 0, STRING_SIZE); snprintf(command, STRING_SIZE - 1, "/sbin/iptables -A DMZHOLES -p %s -s %s -d %s --dport %s -j ACCEPT", protocol, locip, remip, remport); *************** *** 103,111 **** } } ! ! EXIT: ! if (fwdfile) ! fclose(fwdfile); ! return 0; } --- 115,119 ---- } } ! return 0; } Index: setportfw.c =================================================================== RCS file: /cvsroot/ipcop/ipcop/src/misc-progs/setportfw.c,v retrieving revision 1.2.2.12 retrieving revision 1.2.2.13 diff -C2 -d -r1.2.2.12 -r1.2.2.13 *** setportfw.c 7 Sep 2003 00:14:58 -0000 1.2.2.12 --- setportfw.c 28 Sep 2003 15:58:29 -0000 1.2.2.13 *************** *** 31,38 **** #include "setuid.h" int main(void) { FILE *ipfile = NULL, *ifacefile = NULL; - FILE *fwdfile = NULL; int count; char iface[STRING_SIZE]; --- 31,48 ---- #include "setuid.h" + struct keyvalue *kv = NULL; + FILE *fwdfile = NULL; + + void exithandler(void) + { + if(kv) + freekeyvalues(kv); + if (fwdfile) + fclose(fwdfile); + } + int main(void) { FILE *ipfile = NULL, *ifacefile = NULL; int count; char iface[STRING_SIZE]; *************** *** 51,59 **** char *key2; char command[STRING_SIZE]; - struct keyvalue *kv = NULL; if (!(initsetuid())) exit(1); /* Read in and verify config */ kv=initkeyvalues(); --- 61,70 ---- char *key2; char command[STRING_SIZE]; if (!(initsetuid())) exit(1); + atexit(exithandler); + /* Read in and verify config */ kv=initkeyvalues(); *************** *** 71,75 **** } ! if (strspn(greenip, IP_NUMBERS) != strlen(greenip)) { fprintf(stderr, "Bad GREEN_ADDRESS: %s\n", greenip); --- 82,86 ---- } ! if (!VALID_IP(greenip)) { fprintf(stderr, "Bad GREEN_ADDRESS: %s\n", greenip); *************** *** 83,87 **** } ! if (strspn(greenmask, IP_NUMBERS) != strlen(greenmask)) { fprintf(stderr, "Bad GREEN_NETMASK: %s\n", greenmask); --- 94,98 ---- } ! if (!VALID_IP(greenmask)) { fprintf(stderr, "Bad GREEN_NETMASK: %s\n", greenmask); *************** *** 89,130 **** } - freekeyvalues(kv); - if (!(ipfile = fopen(CONFIG_ROOT "/red/local-ipaddress", "r"))) { fprintf(stderr, "Couldn't open local ip file\n"); ! goto EXIT; } fgets(locip, STRING_SIZE, ipfile); if (locip[strlen(locip) - 1] == '\n') locip[strlen(locip) - 1] = '\0'; ! fclose (ipfile); ! ipfile = NULL; ! if (strspn(locip, IP_NUMBERS) != strlen(locip)) ! { ! fprintf(stderr, "Bad local IP: %s\n", locip); ! goto EXIT; ! } if (!(ifacefile = fopen(CONFIG_ROOT "/red/iface", "r"))) { fprintf(stderr, "Couldn't open iface file\n"); ! goto EXIT; } fgets(iface, STRING_SIZE, ifacefile); if (iface[strlen(iface) - 1] == '\n') ! iface[strlen(iface) - 1] = '\0'; ! fclose (ifacefile); ! ifacefile = NULL; ! if (strspn(iface, LETTERS_NUMBERS) != strlen(iface)) ! { ! fprintf(stderr, "Bad iface: %s\n", iface); ! goto EXIT; ! } ! if (!(fwdfile = fopen(CONFIG_ROOT "/portfw/config", "r"))) { fprintf(stderr, "Couldn't open portfw settings file\n"); ! goto EXIT; } --- 100,137 ---- } if (!(ipfile = fopen(CONFIG_ROOT "/red/local-ipaddress", "r"))) { fprintf(stderr, "Couldn't open local ip file\n"); ! exit(1); } fgets(locip, STRING_SIZE, ipfile); if (locip[strlen(locip) - 1] == '\n') locip[strlen(locip) - 1] = '\0'; ! fclose (ipfile); ! if (!VALID_IP(locip)) ! { ! fprintf(stderr, "Bad local IP: %s\n", locip); ! exit(1); ! } if (!(ifacefile = fopen(CONFIG_ROOT "/red/iface", "r"))) { fprintf(stderr, "Couldn't open iface file\n"); ! exit(1); } fgets(iface, STRING_SIZE, ifacefile); if (iface[strlen(iface) - 1] == '\n') ! iface[strlen(iface) - 1] = '\0'; ! fclose (ifacefile); ! if (!VALID_DEVICE(iface)) ! { ! fprintf(stderr, "Bad iface: %s\n", iface); ! exit(1); ! } ! if (!(fwdfile = fopen(CONFIG_ROOT "/portfw/config", "r"))) { fprintf(stderr, "Couldn't open portfw settings file\n"); ! exit(1); } *************** *** 136,140 **** { if (s[strlen(s) - 1] == '\n') ! s[strlen(s) - 1] = '\0'; result = strtok(s, ","); --- 143,147 ---- { if (s[strlen(s) - 1] == '\n') ! s[strlen(s) - 1] = '\0'; result = strtok(s, ","); *************** *** 177,184 **** break; ! if (strspn(protocol, LETTERS) != strlen(protocol)) { fprintf(stderr, "Bad protocol: %s\n", protocol); ! goto EXIT; } if (strcmp(protocol, "gre") == 0) --- 184,191 ---- break; ! if (!VALID_PROTOCOL(protocol)) { fprintf(stderr, "Bad protocol: %s\n", protocol); ! exit(1); } if (strcmp(protocol, "gre") == 0) *************** *** 187,209 **** remport = "0"; } ! if (strspn(origip, IP_NUMBERS) != strlen(origip)) { ! fprintf(stderr, "Bad remote IP: %s\n", remip); ! goto EXIT; } ! if (strspn(locport, PORT_NUMBERS) != strlen(locport)) { fprintf(stderr, "Bad local port: %s\n", locport); ! goto EXIT; } ! if (strspn(remip, IP_NUMBERS) != strlen(remip)) { fprintf(stderr, "Bad remote IP: %s\n", remip); ! goto EXIT; } ! if (strspn(remport, PORT_NUMBERS) != strlen(remport)) { fprintf(stderr, "Bad remote port: %s\n", remport); ! goto EXIT; } --- 194,216 ---- remport = "0"; } ! if (!VALID_IP_AND_MASK(origip)) { ! fprintf(stderr, "Bad IP: %s\n", origip); ! exit(1); } ! if (!VALID_PORT_RANGE(locport)) { fprintf(stderr, "Bad local port: %s\n", locport); ! exit(1); } ! if (!VALID_IP(remip)) { fprintf(stderr, "Bad remote IP: %s\n", remip); ! exit(1); } ! if (!VALID_PORT_RANGE(remport)) { fprintf(stderr, "Bad remote port: %s\n", remport); ! exit(1); } *************** *** 214,221 **** if (!srcip || !strcmp(srcip, "0.0.0.0")) srcip = locip; ! if (strspn(srcip, IP_NUMBERS) != strlen(srcip)) { fprintf(stderr, "Bad source IP: %s\n", srcip); ! goto EXIT; } --- 221,228 ---- if (!srcip || !strcmp(srcip, "0.0.0.0")) srcip = locip; ! if (!VALID_IP(srcip)) { fprintf(stderr, "Bad source IP: %s\n", srcip); ! exit(1); } *************** *** 269,281 **** } } ! ! EXIT: ! if (ipfile) ! fclose(ipfile); ! if (ifacefile) ! fclose(ifacefile); ! if (fwdfile) ! fclose(fwdfile); ! return 0; } --- 276,280 ---- } } ! return 0; } Index: setxtaccess.c =================================================================== RCS file: /cvsroot/ipcop/ipcop/src/misc-progs/setxtaccess.c,v retrieving revision 1.2.2.6 retrieving revision 1.2.2.7 diff -C2 -d -r1.2.2.6 -r1.2.2.7 *** setxtaccess.c 2 May 2003 14:12:25 -0000 1.2.2.6 --- setxtaccess.c 28 Sep 2003 15:58:29 -0000 1.2.2.7 *************** *** 17,21 **** * */ ! #include <stdio.h> #include <stdlib.h> --- 17,21 ---- * */ ! #include <stdio.h> #include <stdlib.h> *************** *** 23,31 **** #include "setuid.h" int main(void) { - FILE *ifacefile = NULL; - FILE *fwdfile = NULL; - FILE *ipfile = NULL; char iface[STRING_SIZE] = ""; char locip[STRING_SIZE] = ""; --- 23,38 ---- #include "setuid.h" + FILE *ifacefile = NULL; + FILE *fwdfile = NULL; + FILE *ipfile = NULL; + + void exithandler(void) + { + if (fwdfile) + fclose(fwdfile); + } + int main(void) { char iface[STRING_SIZE] = ""; char locip[STRING_SIZE] = ""; *************** *** 43,86 **** exit(1); if (!(ipfile = fopen(CONFIG_ROOT "/red/local-ipaddress", "r"))) ! { ! fprintf(stderr, "Couldn't open local ip file\n"); ! goto EXIT; ! } if (fgets(locip, STRING_SIZE, ipfile)) { ! if (locip[strlen(locip) - 1] == '\n') ! locip[strlen(locip) - 1] = '\0'; } - fclose (ipfile); - ipfile = NULL; - if (!strlen(locip) || (strspn(locip, IP_NUMBERS) != strlen(locip))) - { - fprintf(stderr, "Bad local IP: %s\n", locip); - goto EXIT; - } if (!(ifacefile = fopen(CONFIG_ROOT "/red/iface", "r"))) { fprintf(stderr, "Couldn't open iface file\n"); ! goto EXIT; } if (fgets(iface, STRING_SIZE, ifacefile)) { if (iface[strlen(iface) - 1] == '\n') ! iface[strlen(iface) - 1] = '\0'; } ! fclose (ifacefile); ! ifacefile = NULL; ! if (!strlen(iface) || (strspn(iface, LETTERS_NUMBERS) != strlen(iface))) { fprintf(stderr, "Bad iface: %s\n", iface); ! goto EXIT; } ! ! if (!(fwdfile = fopen(CONFIG_ROOT "/xtaccess/config", "r"))) { fprintf(stderr, "Couldn't open xtaccess settings file\n"); ! goto EXIT; } --- 50,93 ---- exit(1); + atexit(exithandler); + if (!(ipfile = fopen(CONFIG_ROOT "/red/local-ipaddress", "r"))) ! { ! fprintf(stderr, "Couldn't open local ip file\n"); ! exit(1); ! } if (fgets(locip, STRING_SIZE, ipfile)) { ! if (locip[strlen(locip) - 1] == '\n') ! locip[strlen(locip) - 1] = '\0'; ! } ! fclose (ipfile); ! if (!VALID_IP(locip)) ! { ! fprintf(stderr, "Bad local IP: %s\n", locip); ! exit(1); } if (!(ifacefile = fopen(CONFIG_ROOT "/red/iface", "r"))) { fprintf(stderr, "Couldn't open iface file\n"); ! exit(1); } if (fgets(iface, STRING_SIZE, ifacefile)) { if (iface[strlen(iface) - 1] == '\n') ! iface[strlen(iface) - 1] = '\0'; } ! fclose (ifacefile); ! if (!VALID_DEVICE(iface)) { fprintf(stderr, "Bad iface: %s\n", iface); ! exit(1); } ! ! if (!(fwdfile = fopen(CONFIG_ROOT "/xtaccess/config", "r"))) { fprintf(stderr, "Couldn't open xtaccess settings file\n"); ! exit(1); } *************** *** 90,94 **** { if (s[strlen(s) - 1] == '\n') ! s[strlen(s) - 1] = '\0'; count = 0; protocol = NULL; --- 97,101 ---- { if (s[strlen(s) - 1] == '\n') ! s[strlen(s) - 1] = '\0'; count = 0; protocol = NULL; *************** *** 106,112 **** else if (count == 2) locport = result; ! else if (count == 3) enabled = result; ! else destip = result; count++; --- 113,119 ---- else if (count == 2) locport = result; ! else if (count == 3) enabled = result; ! else destip = result; count++; *************** *** 117,135 **** break; ! if (strspn(protocol, LETTERS) != strlen(protocol)) { fprintf(stderr, "Bad protocol: %s\n", protocol); ! goto EXIT; } ! if (strspn(remip, IP_NUMBERS) != strlen(remip)) { fprintf(stderr, "Bad remote IP: %s\n", remip); ! goto EXIT; } ! if (strspn(locport, NUMBERS) != strlen(locport)) { fprintf(stderr, "Bad local port: %s\n", locport); ! goto EXIT; ! } /* check for destination ip in config file. If it's there --- 124,142 ---- break; ! if (!VALID_PROTOCOL(protocol)) { fprintf(stderr, "Bad protocol: %s\n", protocol); ! exit(1); } ! if (!VALID_IP_AND_MASK(remip)) { fprintf(stderr, "Bad remote IP: %s\n", remip); ! exit(1); } ! if (!VALID_PORT_RANGE(locport)) { fprintf(stderr, "Bad local port: %s\n", locport); ! exit(1); ! } /* check for destination ip in config file. If it's there *************** *** 139,146 **** if (!destip || !strcmp(destip, "0.0.0.0")) destip = locip; ! if (strspn(destip, IP_NUMBERS) != strlen(destip)) { fprintf(stderr, "Bad destination IP: %s\n", remip); ! goto EXIT; } --- 146,153 ---- if (!destip || !strcmp(destip, "0.0.0.0")) destip = locip; ! if (!VALID_IP(destip)) { fprintf(stderr, "Bad destination IP: %s\n", remip); ! exit(1); } *************** *** 148,164 **** { memset(command, 0, STRING_SIZE); ! snprintf(command, STRING_SIZE - 1, "/sbin/iptables -A XTACCESS -i %s -p %s -s %s -d %s --dport %s -j ACCEPT", ! iface, protocol, remip, destip, locport); safe_system(command); } } - - EXIT: - if (ipfile) - fclose(ipfile); - if (ifacefile) - fclose(ifacefile); - if (fwdfile) - fclose(fwdfile); return 0; --- 155,163 ---- { memset(command, 0, STRING_SIZE); ! snprintf(command, STRING_SIZE - 1, "/sbin/iptables -A XTACCESS -i %s -p %s -s %s -d %s --dport %s -j ACCEPT", ! iface, protocol, remip, destip, locport); safe_system(command); } } return 0; Index: restartssh.c =================================================================== RCS file: /cvsroot/ipcop/ipcop/src/misc-progs/restartssh.c,v retrieving revision 1.2.2.5 retrieving revision 1.2.2.6 diff -C2 -d -r1.2.2.5 -r1.2.2.6 *** restartssh.c 21 Aug 2003 17:25:03 -0000 1.2.2.5 --- restartssh.c 28 Sep 2003 15:58:29 -0000 1.2.2.6 *************** *** 19,22 **** --- 19,23 ---- #include <fcntl.h> #include <signal.h> + #include <errno.h> #include "setuid.h" *************** *** 67,98 **** memset(buffer, 0, STRING_SIZE); ! ! if ((fd = open("/var/run/sshd.pid", O_RDONLY)) == -1) ! { ! goto RESTART; ! } ! if (read(fd, buffer, STRING_SIZE - 1) == -1) ! { ! fprintf(stderr, "Couldn't read from pid file\n"); ! goto EXIT; ! } ! pid = atoi(buffer); ! if (pid <= 1) { ! fprintf(stderr, "Bad pid value\n"); ! goto EXIT; } ! if (kill(pid, SIGTERM) == -1) { ! fprintf(stderr, "Unable to send SIGTERM\n"); ! goto EXIT; } ! unlink("/var/run/sshd.pid"); ! ! EXIT: ! if (fd != -1) ! close(fd); ! ! RESTART: if ((fd = open(CONFIG_ROOT "/remote/enablessh", O_RDONLY)) != -1) { --- 68,100 ---- memset(buffer, 0, STRING_SIZE); ! ! if ((fd = open("/var/run/sshd.pid", O_RDONLY)) != -1) { ! if (read(fd, buffer, STRING_SIZE - 1) == -1) ! fprintf(stderr, "Couldn't read from pid file\n"); ! else ! { ! pid = atoi(buffer); ! if (pid <= 1) ! fprintf(stderr, "Bad pid value\n"); ! else ! { ! if (kill(pid, SIGTERM) == -1) ! fprintf(stderr, "Unable to send SIGTERM\n"); ! else ! unlink("/var/run/sshd.pid"); ! } ! } ! close(fd); } ! else { ! if (errno != ENOENT) ! { ! perror("Unable to open pid file"); ! exit(1); ! } } ! if ((fd = open(CONFIG_ROOT "/remote/enablessh", O_RDONLY)) != -1) { |