Changeset 302


Ignore:
Timestamp:
01/20/11 10:04:28 (5 years ago)
Author:
jkaluza
Message:

Check permissions and owner of config files

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/config.c

    r298 r302  
    554554    char *dirName; 
    555555    struct group *group; 
    556     struct passwd *pw; 
     556    struct passwd *pw = NULL; 
    557557    int rc; 
    558558    char createOwner[200], createGroup[200]; 
     
    615615        return 0; 
    616616    } 
     617     
     618        if ((sb.st_mode & 07533) != 0400) { 
     619                message(MESS_DEBUG, 
     620                        "Ignoring %s because of bad file mode.\n", 
     621                        configFile); 
     622                close(fd); 
     623                return 0; 
     624        } 
     625 
     626        if ((pw = getpwnam("root")) == NULL) { 
     627                message(MESS_DEBUG, 
     628                        "Ignoring %s because there's no password entry for the owner.\n", 
     629                        configFile); 
     630                close(fd); 
     631                return 0; 
     632        } 
     633 
     634        if (sb.st_uid != ROOT_UID && (pw == NULL || 
     635                        sb.st_uid != pw->pw_uid || 
     636                        strcmp("root", pw->pw_name) != 0)) { 
     637                message(MESS_DEBUG, 
     638                        "Ignoring %s because the file owner is wrong (should be root).\n", 
     639                        configFile); 
     640                close(fd); 
     641                return 0; 
     642        } 
    617643 
    618644        length = sb.st_size; 
  • trunk/config.h

    r293 r302  
    22 * OS-specific definitions 
    33 */ 
     4 
     5#define ROOT_UID 0 
    46 
    57#ifdef __hpux 
Note: See TracChangeset for help on using the changeset viewer.