Changeset 253 for trunk/lib/winsec.c


Ignore:
Timestamp:
06/12/11 22:27:42 (13 years ago)
Author:
tim
Message:

added preliminary interface to security descriptors in pyregfi
misc bug fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/winsec.c

    r169 r253  
    226226  ret_val->size = SVAL(buf, 0x2);
    227227  ret_val->access_mask = IVAL(buf, 0x4);
    228 
     228  ret_val->obj_guid = NULL;
     229  ret_val->inh_guid = NULL;
     230 
    229231  offset = 0x8;
    230232
     
    246248      offset += sizeof(WINSEC_UUID);
    247249    }
    248     else
    249       ret_val->obj_guid = NULL;
    250250
    251251    if(ret_val->obj_flags & WINSEC_ACE_OBJECT_INHERITED_PRESENT)
     
    260260      offset += sizeof(WINSEC_UUID);
    261261    }
    262     else
    263       ret_val->inh_guid = NULL;
    264262  }
    265263
     
    410408
    411409/******************************************************************************
     410 ******************************************************************************/
     411char* winsec_sid2str(const WINSEC_DOM_SID* sid)
     412{
     413  uint32_t i, size = WINSEC_MAX_SUBAUTHS*11 + 24;
     414  uint32_t left = size;
     415  uint8_t comps = sid->num_auths;
     416  char* ret_val = malloc(size);
     417 
     418  if(ret_val == NULL)
     419    return NULL;
     420
     421  if(comps > WINSEC_MAX_SUBAUTHS)
     422    comps = WINSEC_MAX_SUBAUTHS;
     423
     424  left -= sprintf(ret_val, "S-%u-%u", sid->sid_rev_num, sid->id_auth[5]);
     425
     426  for (i = 0; i < comps; i++)
     427    left -= snprintf(ret_val+(size-left), left, "-%u", sid->sub_auths[i]);
     428
     429  return ret_val;
     430}
     431
     432
     433/******************************************************************************
    412434 * Compares two WINSEC_DESC structures.
    413435 ******************************************************************************/
Note: See TracChangeset for help on using the changeset viewer.