Changeset 4853

Show
Ignore:
Timestamp:
07/27/07 13:49:57 (1 year ago)
Author:
morris
Message:

Additional error checking when user/group evaluates to 0 but is not "0"

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • libwired/trunk/libwired/misc/wi-settings.c

    r4797 r4853  
    364364wi_boolean_t _wi_settings_set_user(wi_settings_t *settings, wi_uinteger_t index, wi_string_t *name, wi_string_t *value) { 
    365365        struct passwd           *user; 
     366        uint32_t                        uid; 
    366367         
    367368        user = getpwnam(wi_string_cstring(value)); 
    368369         
    369         if(!user) 
    370                 user = getpwuid(wi_string_uint32(value)); 
    371  
     370        if(!user) { 
     371                uid = wi_string_uint32(value); 
     372                 
     373                if(uid != 0 || wi_is_equal(value, WI_STR("0"))) 
     374                        user = getpwuid(uid); 
     375        } 
     376         
    372377        if(!user) { 
    373378                wi_error_set_libwired_error(WI_ERROR_SETTINGS_NOSUCHUSER); 
    374  
     379                 
    375380                return false; 
    376381        } 
     
    385390wi_boolean_t _wi_settings_set_group(wi_settings_t *settings, wi_uinteger_t index, wi_string_t *name, wi_string_t *value) { 
    386391        struct group            *group; 
     392        uint32_t                        gid; 
    387393         
    388394        group = getgrnam(wi_string_cstring(value)); 
    389395         
    390         if(!group) 
    391                 group = getgrgid(wi_string_uint32(value)); 
     396        if(!group) { 
     397                gid = wi_string_uint32(value); 
     398                 
     399                if(gid != 0 || wi_is_equal(value, WI_STR("0"))) 
     400                        group = getgrgid(wi_string_uint32(value)); 
     401        } 
    392402 
    393403        if(!group) {