diff options
| author | David M. Syzdek <david.syzdek@acsalaska.com> | 2020-02-10 12:57:24 -0900 |
|---|---|---|
| committer | David M. Syzdek <david.syzdek@acsalaska.com> | 2020-02-10 12:57:24 -0900 |
| commit | c0919ad45200a748fd554c64f24c6b7a8f206541 (patch) | |
| tree | 9f6ce32b79b4f534679b838945e51cdaa1bf632a | |
| parent | 9c8fb98b46b0ba928c3288e87be6bfe5b8a150c5 (diff) | |
| download | akcom-udpecho-c0919ad45200a748fd554c64f24c6b7a8f206541.tar.gz akcom-udpecho-c0919ad45200a748fd554c64f24c6b7a8f206541.tar.bz2 akcom-udpecho-c0919ad45200a748fd554c64f24c6b7a8f206541.tar.xz akcom-udpecho-c0919ad45200a748fd554c64f24c6b7a8f206541.zip | |
akcom-udpechod: replacing gid struct member with static variable
| -rw-r--r-- | src/akcom-udpechod.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/src/akcom-udpechod.c b/src/akcom-udpechod.c index 984efb8..9ec048d 100644 --- a/src/akcom-udpechod.c +++ b/src/akcom-udpechod.c | |||
| @@ -146,14 +146,6 @@ struct udp_echo_plus | |||
| 146 | 146 | ||
| 147 | static int should_stop = 0; | 147 | static int should_stop = 0; |
| 148 | 148 | ||
| 149 | struct app_config | ||
| 150 | { | ||
| 151 | gid_t gid; // setgid | ||
| 152 | }; | ||
| 153 | static struct app_config cnf = | ||
| 154 | { | ||
| 155 | .gid = 0, | ||
| 156 | }; | ||
| 157 | static const char * prog_name = "a.out"; | 149 | static const char * prog_name = "a.out"; |
| 158 | static const char * cnf_pidfile = "/var/run/" PROGRAM_NAME ".pid"; | 150 | static const char * cnf_pidfile = "/var/run/" PROGRAM_NAME ".pid"; |
| 159 | static uint16_t cnf_port = 30006; | 151 | static uint16_t cnf_port = 30006; |
| @@ -165,6 +157,7 @@ static int cnf_facility = LOG_DAEMON; // sysl | |||
| 165 | static int cnf_dont_fork = 0; | 157 | static int cnf_dont_fork = 0; |
| 166 | static const char * cnf_listen = NULL; // IP address to listen for requests | 158 | static const char * cnf_listen = NULL; // IP address to listen for requests |
| 167 | static uid_t cnf_uid = 0; // setuid | 159 | static uid_t cnf_uid = 0; // setuid |
| 160 | static gid_t cnf_gid = 0; // setgid | ||
| 168 | 161 | ||
| 169 | 162 | ||
| 170 | ////////////////// | 163 | ////////////////// |
| @@ -312,7 +305,7 @@ int main(int argc, char * argv[]) | |||
| 312 | fprintf(stderr, "%s: getgrnam(): %s\n", prog_name, strerror(errno)); | 305 | fprintf(stderr, "%s: getgrnam(): %s\n", prog_name, strerror(errno)); |
| 313 | return(1); | 306 | return(1); |
| 314 | }; | 307 | }; |
| 315 | cnf.gid = gr->gr_gid; | 308 | cnf_gid = gr->gr_gid; |
| 316 | break; | 309 | break; |
| 317 | 310 | ||
| 318 | case 'h': | 311 | case 'h': |
| @@ -371,9 +364,9 @@ int main(int argc, char * argv[]) | |||
| 371 | }; | 364 | }; |
| 372 | 365 | ||
| 373 | // set defaults for setuid/setgid | 366 | // set defaults for setuid/setgid |
| 374 | cnf.gid = (cnf.gid == 0) ? getgid() : cnf.gid; | 367 | cnf_gid = (cnf_gid == 0) ? getgid() : cnf_gid; |
| 375 | cnf_uid = (cnf_uid == 0) ? getuid() : cnf_uid; | 368 | cnf_uid = (cnf_uid == 0) ? getuid() : cnf_uid; |
| 376 | if ( (cnf.gid != getgid()) && (getuid() != 0) ) | 369 | if ( (cnf_gid != getgid()) && (getuid() != 0) ) |
| 377 | { | 370 | { |
| 378 | fprintf(stderr, "%s: setgid requires root access\n", prog_name); | 371 | fprintf(stderr, "%s: setgid requires root access\n", prog_name); |
| 379 | return(1); | 372 | return(1); |
| @@ -518,9 +511,9 @@ int my_daemonize(void) | |||
| 518 | return(-1); | 511 | return(-1); |
| 519 | }; | 512 | }; |
| 520 | if ( (cnf_uid != getuid()) || | 513 | if ( (cnf_uid != getuid()) || |
| 521 | (cnf.gid != getgid()) ) | 514 | (cnf_gid != getgid()) ) |
| 522 | { | 515 | { |
| 523 | if ((rc = fchown(fd, cnf_uid, cnf.gid)) == -1) | 516 | if ((rc = fchown(fd, cnf_uid, cnf_gid)) == -1) |
| 524 | { | 517 | { |
| 525 | my_error("fchown(): %s", strerror(errno)); | 518 | my_error("fchown(): %s", strerror(errno)); |
| 526 | close(fd); | 519 | close(fd); |
| @@ -625,7 +618,7 @@ int my_daemonize(void) | |||
| 625 | }; | 618 | }; |
| 626 | 619 | ||
| 627 | // change ownership | 620 | // change ownership |
| 628 | if ( (getgid() != cnf.gid) && ((rc = setregid(cnf.gid, cnf.gid)) == -1) ) | 621 | if ( (getgid() != cnf_gid) && ((rc = setregid(cnf_gid, cnf_gid)) == -1) ) |
| 629 | { | 622 | { |
| 630 | my_error("getgid(): %s", strerror(errno)); | 623 | my_error("getgid(): %s", strerror(errno)); |
| 631 | close(s); | 624 | close(s); |
