]> granicus.if.org Git - sudo/commitdiff
BSD-style copyright, cosmetic changes
authorTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 22 Jul 1999 12:49:28 +0000 (12:49 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 22 Jul 1999 12:49:28 +0000 (12:49 +0000)
find_path.c
getspwuid.c
goodpath.c
interfaces.c

index 859706dd0b99181b2eaa2983d8381883215f5b03..a8c0f446903e62162fddbc7ea12ce7af5f7a69db 100644 (file)
@@ -1,32 +1,28 @@
 /*
- *  CU sudo version 1.6
- *  Copyright (c) 1996, 1998, 1999 Todd C. Miller <Todd.Miller@courtesan.com>
+ * Copyright (c) 1996, 1998, 1999 Todd C. Miller <Todd.Miller@courtesan.com>
+ * All rights reserved.
  *
- *  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 1, or (at your option)
- *  any later version.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
  *
- *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *  Please send bugs, changes, problems to sudo-bugs@courtesan.com
- *
- *******************************************************************
- *
- *  This module contains the find_path() function that returns
- *  TRUE if the command was found and FALSE if not.
- *  If find_path() returns TRUE, the copyin paramters command and
- *  ocommand contain the resolved and unresolved pathnames respectively.
- *  NOTE: if "." or "" exists in PATH it will be searched last.
- *
- *  Todd C. Miller <Todd.Miller@courtesan.com> Sat Mar 25 21:50:36 MST 1995
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 #include "config.h"
@@ -48,6 +44,7 @@
 #include <sys/types.h>
 #include <sys/param.h>
 #include <sys/stat.h>
+
 #include "sudo.h"
 
 #ifndef STDC_HEADERS
@@ -59,51 +56,37 @@ extern int stat             __P((const char *, struct stat *));
 extern int lstat       __P((const char *, struct stat *));
 #endif /* !STDC_HEADERS */
 
-#ifndef _S_IFMT
-#define _S_IFMT                S_IFMT
-#endif /* _S_IFMT */
-#ifndef _S_IFLNK
-#define _S_IFLNK       S_IFLNK
-#endif /* _S_IFLNK */
-
 #ifndef lint
 static const char rcsid[] = "$Sudo$";
 #endif /* lint */
 
-/*******************************************************************
- *
- *  find_path()
- *
- *  this function finds the full pathname for a command and
- *  stores it in a statically allocated array, filling in a pointer
- *  to the array.  Returns FOUND if the command was found, NOT_FOUND
- *  if it was not found, or NOT_FOUND_DOT if it would have been found
- *  but it is in '.' and IGNORE_DOT_PATH is in effect.
+/*
+ * This function finds the full pathname for a command and
+ * stores it in a statically allocated array, filling in a pointer
+ * to the array.  Returns FOUND if the command was found, NOT_FOUND
+ * if it was not found, or NOT_FOUND_DOT if it would have been found
+ * but it is in '.' and IGNORE_DOT_PATH is in effect.
  */
-
 int
 find_path(infile, outfile)
     char *infile;              /* file to find */
     char **outfile;            /* result parameter */
 {
     static char command[MAXPATHLEN]; /* qualified filename */
-    register char *n;          /* for traversing path */
+    char *n;                   /* for traversing path */
     char *path = NULL;         /* contents of PATH env var */
     char *origpath;            /* so we can free path later */
     char *result = NULL;       /* result of path/file lookup */
     int checkdot = 0;          /* check current dir? */
 
-    command[0] = '\0';
-
     if (strlen(infile) >= MAXPATHLEN) {
-       errno = ENAMETOOLONG;
        (void) fprintf(stderr, "%s: path too long: %s\n", Argv[0], infile);
        exit(1);
     }
 
     /*
      * If we were given a fully qualified or relative path
-     * there is no need to look at PATH.
+     * there is no need to look at $PATH.
      */
     if (strchr(infile, '/')) {
        (void) strcpy(command, infile);
@@ -115,11 +98,10 @@ find_path(infile, outfile)
     }
 
     /*
-     * grab PATH out of environment and make a local copy
+     * Grab PATH out of environment and make a local copy
      */
     if ((path = getenv("PATH")) == NULL)
        return(NOT_FOUND);
-
     path = estrdup(path);
     origpath = path;
 
@@ -129,7 +111,7 @@ find_path(infile, outfile)
            *n = '\0';
 
        /*
-        * search current dir last if it is in PATH This will miss sneaky
+        * Search current dir last if it is in PATH This will miss sneaky
         * things like using './' or './/' 
         */
        if (*path == '\0' || (*path == '.' && *(path + 1) == '\0')) {
@@ -139,7 +121,7 @@ find_path(infile, outfile)
        }
 
        /*
-        * resolve the path and exit the loop if found
+        * Resolve the path and exit the loop if found.
         */
        if (strlen(path) + strlen(infile) + 1 >= MAXPATHLEN) {
            (void) fprintf(stderr, "%s: path too long: %s\n", Argv[0], infile);
index 748eee30a5a3b6da263400f18587a79c57ce597b..eadd8b2639fb41af4788d5b4f493ab96d090bce0 100644 (file)
@@ -1,31 +1,28 @@
 /*
- *  CU sudo version 1.6
- *  Copyright (c) 1996, 1998, 1999 Todd C. Miller <Todd.Miller@courtesan.com>
+ * Copyright (c) 1996, 1998, 1999 Todd C. Miller <Todd.Miller@courtesan.com>
+ * All rights reserved.
  *
- *  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 1, or (at your option)
- *  any later version.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
  *
- *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *  Please send bugs, changes, problems to sudo-bugs@courtesan.com
- *
- *******************************************************************
- *
- *  This module contains sudo_getpwuid(), a function that
- *  Makes a dynamic copy of the struct passwd returned by
- *  getpwuid() and substitutes the shadow password if
- *  necessary.
- *
- *  Todd C. Miller  Mon Nov 20 13:53:06 MST 1995
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 #include "config.h"
@@ -89,15 +86,10 @@ static char *sudo_getshell  __P((struct passwd *));
 static char *sudo_getepw       __P((struct passwd *));
 
 
-
-/**********************************************************************
- *
- * sudo_getshell()
- *
- *  This function returns the user's shell based on either the
- *  SHELL evariable or the passwd(5) entry (in that order).
+/*
+ * Return the user's shell based on either the SHELL
+ * environment variable or the passwd(5) entry (in that order).
  */
-
 static char *
 sudo_getshell(pw)
     struct passwd *pw;
@@ -116,22 +108,16 @@ sudo_getshell(pw)
     return(pw_shell);
 }
 
-
-/**********************************************************************
- *
- *  sudo_getepw()
- *
- *  This function returns the encrypted password for the user described
- *  by pw.  If there is a shadow password it is returned, else the
- *  normal UN*X password is returned instead.
+/*
+ * Return the encrypted password for the user described by pw.  If shadow
+ * passwords are in use, look in the shadow file.
  */
-
 static char *
 sudo_getepw(pw)
     struct passwd *pw;
 {
 
-    /* if there is a function to check for shadow enabled, use it... */
+    /* If there is a function to check for shadow enabled, use it... */
 #ifdef HAVE_ISCOMSEC
     if (!iscomsec())
        return(pw->pw_passwd);
@@ -187,20 +173,14 @@ sudo_getepw(pw)
     }
 #endif /* HAVE_GETAUTHUID */
 
-    /* Fall back on normal passwd */
+    /* Fall back on normal password. */
     return(pw->pw_passwd);
 }
 
-
-/**********************************************************************
- *
- *  sudo_getpwuid()
- *
- *  This function dynamically allocates space for a struct password
- *  and the constituent parts that we care about.  If shadow passwords
- *  are in use, it substitutes the shadow password for pw_passwd.
+/*
+ * Dynamically allocate space for a struct password and the constituent parts
+ * that we care about.  Fills in pw_passwd from shadow file if necessary.
  */
-
 struct passwd *
 sudo_getpwuid(uid)
     uid_t uid;
@@ -210,7 +190,7 @@ sudo_getpwuid(uid)
     if ((pw = getpwuid(uid)) == NULL)
        return(NULL);
 
-    /* allocate space for a local copy of pw */
+    /* Allocate space for a local copy of pw. */
     local_pw = (struct passwd *) emalloc(sizeof(struct passwd));
 
     /*
index 6f174e055ab16c8002058eeab29814de05dde7fa..532bf228bedde365688c79b2a2ee4af71b739aea 100644 (file)
@@ -1,32 +1,28 @@
 /*
- *  CU sudo version 1.6
- *  Copyright (c) 1996, 1998, 1999 Todd C. Miller <Todd.Miller@courtesan.com>
+ * Copyright (c) 1996, 1998, 1999 Todd C. Miller <Todd.Miller@courtesan.com>
+ * All rights reserved.
  *
- *  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 1, or (at your option)
- *  any later version.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
  *
- *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *  Please send bugs, changes, problems to sudo-bugs@courtesan.com
- *
- *******************************************************************
- *
- *  This module contains sudo_goodpath(3)
- *
- *  sudo_goodpath(3) takes a path to check and returns its argument
- *  if the path is stat(2)'able, a regular file, and executable by
- *  root.  The string's size should be <= MAXPATHLEN.
- *
- *  Todd C. Miller <Todd.Miller@courtesan.com> Sat Mar 25 21:58:17 MST 1995
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 #include "config.h"
@@ -56,43 +52,34 @@ extern int stat             __P((const char *, struct stat *));
 static const char rcsid[] = "$Sudo$";
 #endif /* lint */
 
-/******************************************************************
- *
- *  sudo_goodpath()
- *
- *  this function takes a path and makes sure it describes a a file
- *  that is a normal file and executable by root.
+/*
+ * Verify that path is a normal file and executable by root.
  */
-
 char *
 sudo_goodpath(path)
-    const char * path;
+    const char *path;
 {
-    struct stat statbuf;               /* for stat(2) */
-    int err;                           /* if stat(2) got an error */
+    struct stat sb;
+    int err;
 
-    /* check for brain damage */
+    /* Check for brain damage */
     if (path == NULL || path[0] == '\0')
        return(NULL);
 
-    /* we need to be root for the stat */
+    /* Do the stat() as root. */
     set_perms(PERM_ROOT, 0);
-
-    err = stat(path, &statbuf);
-
-    /* discard root perms */
+    err = stat(path, &sb);
     set_perms(PERM_USER, 0);
 
-    /* stat(3) failed */
+    /* stat() failed */
     if (err)
        return(NULL);
 
-    /* make sure path describes an executable regular file */
-    if (S_ISREG(statbuf.st_mode) && (statbuf.st_mode & 0000111)) {
-       return((char *)path);
-    } else {
-       /* file is not executable/regular */
+    /* Make sure path describes an executable regular file. */
+    if (!S_ISREG(sb.st_mode) || !(sb.st_mode & 0000111)) {
        errno = EACCES;
        return(NULL);
     }
+
+    return((char *)path);
 }
index e26ecb3d1be71ffd56818ff342f631c7c8d833db..b31616d7df6346904b6d0cdd6f356b0f5184f990 100644 (file)
@@ -1,30 +1,28 @@
 /*
- *  CU sudo version 1.6
- *  Copyright (c) 1996, 1998, 1999 Todd C. Miller <Todd.Miller@courtesan.com>
+ * Copyright (c) 1996, 1998, 1999 Todd C. Miller <Todd.Miller@courtesan.com>
+ * All rights reserved.
  *
- *  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 1, or (at your option)
- *  any later version.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
  *
- *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *  Please send bugs, changes, problems to sudo-bugs@courtesan.com
- *
- *******************************************************************
- *
- *  This module contains load_interfaces() a function that
- *  fills the interfaces global with a list of active ip
- *  addresses and their associated netmasks.
- *
- *  Todd C. Miller  Mon May  1 20:48:43 MDT 1995
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 #include "config.h"
@@ -78,14 +76,10 @@ static const char rcsid[] = "$Sudo$";
 
 
 #if defined(SIOCGIFCONF) && !defined(STUB_LOAD_INTERFACES)
-/**********************************************************************
- *
- *  load_interfaces()
- *
- *  This function sets the interfaces global variable
- *  and sets the constituent ip addrs and netmasks.
+/*
+ * Allocate and fill in the interfaces global variable with the
+ * machine's ip addresses and netmasks.
  */
-
 void
 load_interfaces()
 {
@@ -101,12 +95,13 @@ load_interfaces()
 
     sock = socket(AF_INET, SOCK_DGRAM, 0);
     if (sock < 0) {
-       perror("socket");
+       (void) fprintf(stderr, "%s: cannot open socket: %s\n",
+           Argv[0], strerror(errno));
        exit(1);
     }
 
     /*
-     * get interface configuration or return (leaving interfaces NULL)
+     * Get interface configuration or return (leaving num_interfaces 0)
      */
     for (;;) {
        ifconf_buf = erealloc(ifconf_buf, len);
@@ -114,7 +109,7 @@ load_interfaces()
        ifconf->ifc_len = len - sizeof(struct ifconf);
        ifconf->ifc_buf = (caddr_t) (ifconf_buf + sizeof(struct ifconf));
 
-       /* networking may not be installed in kernel */
+       /* Networking may not be installed in kernel... */
 #ifdef _ISC
        STRSET(SIOCGIFCONF, (caddr_t) ifconf, len);
        if (ioctl(sock, I_STR, (caddr_t) &strioctl) < 0) {
@@ -126,49 +121,37 @@ load_interfaces()
            return;
        }
 
-       /* break out of loop if we have a big enough buffer */
+       /* Break out of loop if we have a big enough buffer. */
        if (ifconf->ifc_len + sizeof(struct ifreq) < len)
            break;
        len += BUFSIZ;
     }
 
-    /*
-     * get the maximum number of interfaces that *could* exist.
-     */
+    /* Allocate space for the maximum number of interfaces that could exist. */
     n = ifconf->ifc_len / sizeof(struct ifreq);
-
-    /*
-     * allocate space for interfaces array
-     */
     interfaces = (struct interface *) emalloc(sizeof(struct interface) * n);
 
-    /*
-     * for each interface, store the ip address and netmask
-     */
+    /* For each interface, store the ip address and netmask. */
     for (i = 0; i < ifconf->ifc_len; ) {
-       /* get a pointer to the current interface */
+       /* Get a pointer to the current interface. */
        ifr = (struct ifreq *) &ifconf->ifc_buf[i];
 
-       /* set i to the subscript of the next interface */
+       /* Set i to the subscript of the next interface. */
        i += sizeof(struct ifreq);
 #ifdef HAVE_SA_LEN
        if (ifr->ifr_addr.sa_len > sizeof(ifr->ifr_addr))
            i += ifr->ifr_addr.sa_len - sizeof(struct sockaddr);
 #endif /* HAVE_SA_LEN */
 
-       /* skip duplicates and interfaces with NULL addresses */
+       /* Skip duplicates and interfaces with NULL addresses. */
        sin = (struct sockaddr_in *) &ifr->ifr_addr;
        if (sin->sin_addr.s_addr == 0 ||
            strncmp(previfname, ifr->ifr_name, sizeof(ifr->ifr_name) - 1) == 0)
            continue;
 
-       /* skip non-ip things */
        if (ifr->ifr_addr.sa_family != AF_INET)
                continue;
 
-       /*
-        * make sure the interface is up, skip if not.
-        */
 #ifdef SIOCGIFFLAGS
        memset(&ifr_tmp, 0, sizeof(ifr_tmp));
        strncpy(ifr_tmp.ifr_name, ifr->ifr_name, sizeof(ifr_tmp.ifr_name) - 1);
@@ -176,18 +159,17 @@ load_interfaces()
 #endif
            ifr_tmp = *ifr;
        
-       /* skip interfaces marked "down" and "loopback" */
+       /* Skip interfaces marked "down" and "loopback". */
        if (!(ifr_tmp.ifr_flags & IFF_UP) || (ifr_tmp.ifr_flags & IFF_LOOPBACK))
                continue;
 
-       /* store the ip address */
        sin = (struct sockaddr_in *) &ifr->ifr_addr;
        interfaces[num_interfaces].addr.s_addr = sin->sin_addr.s_addr;
 
-       /* stash the name of the interface we saved */
+       /* Stash the name of the interface we saved. */
        previfname = ifr->ifr_name;
 
-       /* get the netmask */
+       /* Get the netmask. */
        (void) memset(&ifr_tmp, 0, sizeof(ifr_tmp));
        strncpy(ifr_tmp.ifr_name, ifr->ifr_name, sizeof(ifr_tmp.ifr_name) - 1);
 #ifdef SIOCGIFNETMASK
@@ -199,7 +181,6 @@ load_interfaces()
 #endif /* _ISC */
            sin = (struct sockaddr_in *) &ifr_tmp.ifr_addr;
 
-           /* store the netmask */
            interfaces[num_interfaces].netmask.s_addr = sin->sin_addr.s_addr;
        } else {
 #else
@@ -213,13 +194,12 @@ load_interfaces()
                interfaces[num_interfaces].netmask.s_addr = htonl(IN_CLASSA_NET);
        }
 
-       /* only now can we be sure it was a good/interesting interface */
+       /* Only now can we be sure it was a good/interesting interface. */
        num_interfaces++;
     }
 
-    /* if there were bogus entries, realloc the array */
+    /* If the expected size < real size, realloc the array. */
     if (n != num_interfaces) {
-       /* it is unlikely that num_interfaces will be 0 but who knows... */
        if (num_interfaces != 0)
            interfaces = (struct interface *) erealloc(interfaces,
                sizeof(struct interface) * num_interfaces);
@@ -232,13 +212,9 @@ load_interfaces()
 
 #else /* !SIOCGIFCONF || STUB_LOAD_INTERFACES */
 
-/**********************************************************************
- *
- *  load_interfaces()
- *
- *  Stub function for those without SIOCGIFCONF
+/*
+ * Stub function for those without SIOCGIFCONF
  */
-
 void
 load_interfaces()
 {