Changeset 1755

Show
Ignore:
Timestamp:
03/05/05 11:32:16 (4 years ago)
Author:
morris
Message:

Fix a crash when reading a malformed groups file. Fixes #45.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • wired/trunk/wired/accounts.c

    r1647 r1755  
    6666                account->privs = account->user.privs; 
    6767        } else { 
    68                 (void) wd_read_group_account(account->user.group, &account->group); 
    69                 account->privs = account->group.privs; 
     68                if(wd_read_group_account(account->user.group, &account->group) > 0) 
     69                        account->privs = account->group.privs; 
     70                else 
     71                        account->privs = account->user.privs; 
    7072        } 
    7173         
     
    9294        } 
    9395         
    94         while(fgets(buffer, sizeof(buffer), fp) != NULL) { 
    95                 if((p = strchr(buffer, '\n')) != NULL
     96        while(fgets(buffer, sizeof(buffer), fp)) { 
     97                if((p = strchr(buffer, '\n'))
    9698                        *p = '\0'; 
    9799 
     
    102104                ap = strsep(&b, ":"); 
    103105                 
    104                 if(strcmp(ap, name) == 0) { 
     106                if(b && strcmp(ap, name) == 0) { 
    105107                        strlcpy(account->name, ap, sizeof(account->name)); 
    106108 
     
    145147        } 
    146148         
    147         while(fgets(buffer, sizeof(buffer), fp) != NULL) { 
    148                 if((p = strchr(buffer, '\n')) != NULL
     149        while(fgets(buffer, sizeof(buffer), fp)) { 
     150                if((p = strchr(buffer, '\n'))
    149151                        *p = '\0'; 
    150152 
     
    154156                b = buffer; 
    155157                ap = strsep(&b, ":"); 
    156                  
    157                 if(strcmp(ap, name) == 0) { 
     158 
     159                if(b && strcmp(ap, name) == 0) { 
    158160                        strlcpy(account->name, ap, sizeof(account->name)); 
    159161