X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=networking%2Ffakeidentd.c;h=b5b70f5162b92ad9cca7074614eedbd8dde9ad34;hb=68229837ff1e690190d51b74b281cfe999220e6d;hp=d41177b074a39677c8d27155dac1c317d61ae64c;hpb=7202e00b4cf78401cbe04db900712fdd004839c9;p=oweals%2Fbusybox.git diff --git a/networking/fakeidentd.c b/networking/fakeidentd.c index d41177b07..b5b70f516 100644 --- a/networking/fakeidentd.c +++ b/networking/fakeidentd.c @@ -6,56 +6,36 @@ * Original Author: Tomi Ollila * http://www.guru-group.fi/~too/sw/ * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ +#include "busybox.h" + #include -#include -#include -#include #include #include #include #include #include -#include #include -#include -#include #include #include -#include #include -#include #include -#include "busybox.h" #define IDENT_PORT 113 #define MAXCONNS 20 #define MAXIDLETIME 45 static const char ident_substr[] = " : USERID : UNIX : "; -static const int ident_substr_len = sizeof(ident_substr) - 1; +enum { ident_substr_len = sizeof(ident_substr) - 1 }; #define PIDFILE "/var/run/identd.pid" /* - * We have to track the 'first connection socket' so that we + * We have to track the 'first connection socket' so that we * don't go around closing file descriptors for non-clients. * * descriptor setup normally @@ -117,8 +97,7 @@ static void inetbind(void) else port = se->s_port; - if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) - bb_perror_msg_and_die("Cannot create server socket"); + s = bb_xsocket(AF_INET, SOCK_STREAM, 0); setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); @@ -127,28 +106,16 @@ static void inetbind(void) addr.sin_family = AF_INET; addr.sin_port = htons(port); - if (bind(s, (struct sockaddr *)&addr, len) < 0) - bb_perror_msg_and_die("Cannot bind() port %i", IDENT_PORT); - - if (listen(s, 5) < 0) - bb_perror_msg_and_die("Cannot listen() on port %i", IDENT_PORT); + bb_xbind(s, (struct sockaddr *)&addr, len); + bb_xlisten(s, 5); movefd(s, 0); } -static void delpidfile(void) +static void handlexitsigs(int signum) { - /* - * Usually nobody has no write/delete access to directory /var/run/ - * therefore if file cannot be deleted, it is truncated - */ if (unlink(PIDFILE) < 0) close(open(PIDFILE, O_WRONLY|O_CREAT|O_TRUNC, 0644)); -} - -static void handlexitsigs(int signum) -{ - delpidfile(); exit(0); } @@ -193,9 +160,7 @@ static int godaemon(void) close(0); inetbind(); if (setgid(nogrp)) bb_error_msg_and_die("Could not setgid()"); - if (setegid(nogrp)) bb_error_msg_and_die("Could not setegid()"); if (setuid(nobody)) bb_error_msg_and_die("Could not setuid()"); - if (seteuid(nobody)) bb_error_msg_and_die("Could not seteuid()"); close(1); close(2);