mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
More updates on editreg.c to bring it better in line with the Samba source.
This commit is contained in:
parent
3c66111f32
commit
dc69a638b9
@ -412,16 +412,16 @@ typedef struct val_list_s {
|
||||
#define MAXSUBAUTHS 15
|
||||
#endif
|
||||
|
||||
typedef struct dom_sid_s {
|
||||
typedef struct sid_s {
|
||||
unsigned char ver, auths;
|
||||
unsigned char auth[6];
|
||||
unsigned int sub_auths[MAXSUBAUTHS];
|
||||
} DOM_SID;
|
||||
} sid_t;
|
||||
|
||||
typedef struct ace_struct_s {
|
||||
unsigned char type, flags;
|
||||
unsigned int perms; /* Perhaps a better def is in order */
|
||||
DOM_SID *trustee;
|
||||
sid_t *trustee;
|
||||
} ACE;
|
||||
|
||||
typedef struct acl_struct_s {
|
||||
@ -432,7 +432,7 @@ typedef struct acl_struct_s {
|
||||
|
||||
typedef struct sec_desc_s {
|
||||
unsigned int rev, type;
|
||||
DOM_SID *owner, *group;
|
||||
sid_t *owner, *group;
|
||||
ACL *sacl, *dacl;
|
||||
} SEC_DESC;
|
||||
|
||||
@ -537,7 +537,7 @@ typedef struct ace_struct {
|
||||
unsigned char flags;
|
||||
unsigned short length;
|
||||
unsigned int perms;
|
||||
DOM_SID trustee;
|
||||
sid_t trustee;
|
||||
} REG_ACE;
|
||||
|
||||
typedef struct acl_struct {
|
||||
@ -904,7 +904,7 @@ int nt_delete_key_by_name(REGF *regf, char *name)
|
||||
}
|
||||
|
||||
static
|
||||
int nt_delete_sid(DOM_SID *sid)
|
||||
int nt_delete_sid(sid_t *sid)
|
||||
{
|
||||
|
||||
if (sid) free(sid);
|
||||
@ -1173,15 +1173,15 @@ VAL_KEY *nt_delete_reg_value(REG_KEY *key, char *name)
|
||||
* Convert a string of the form S-1-5-x[-y-z-r] to a SID
|
||||
*/
|
||||
static
|
||||
int string_to_sid(DOM_SID **sid, const char *sid_str)
|
||||
int sid_string_to_sid(sid_t **sid, const char *sid_str)
|
||||
{
|
||||
int i = 0, auth;
|
||||
const char *lstr;
|
||||
|
||||
*sid = (DOM_SID *)malloc(sizeof(DOM_SID));
|
||||
*sid = (sid_t *)malloc(sizeof(sid_t));
|
||||
if (!*sid) return 0;
|
||||
|
||||
bzero(*sid, sizeof(DOM_SID));
|
||||
bzero(*sid, sizeof(sid_t));
|
||||
|
||||
if (strncmp(sid_str, "S-1-5", 5)) {
|
||||
fprintf(stderr, "Does not conform to S-1-5...: %s\n", sid_str);
|
||||
@ -1226,7 +1226,7 @@ ACE *nt_create_ace(int type, int flags, unsigned int perms, const char *sid)
|
||||
ace->type = type;
|
||||
ace->flags = flags;
|
||||
ace->perms = perms;
|
||||
if (!string_to_sid(&ace->trustee, sid))
|
||||
if (!sid_string_to_sid(&ace->trustee, sid))
|
||||
goto error;
|
||||
return ace;
|
||||
|
||||
@ -1287,8 +1287,8 @@ SEC_DESC *nt_create_def_sec_desc(REGF *regf)
|
||||
|
||||
tmp->rev = 1;
|
||||
tmp->type = 0x8004;
|
||||
if (!string_to_sid(&tmp->owner, "S-1-5-32-544")) goto error;
|
||||
if (!string_to_sid(&tmp->group, "S-1-5-18")) goto error;
|
||||
if (!sid_string_to_sid(&tmp->owner, "S-1-5-32-544")) goto error;
|
||||
if (!sid_string_to_sid(&tmp->group, "S-1-5-18")) goto error;
|
||||
tmp->sacl = NULL;
|
||||
tmp->dacl = nt_create_default_acl(regf);
|
||||
|
||||
@ -1829,9 +1829,9 @@ KEY_SEC_DESC *lookup_create_sec_key(REGF *regf, SK_MAP *sk_map, int sk_off)
|
||||
* We could allocate the SID to be only the size needed, but I am too lazy.
|
||||
*/
|
||||
static
|
||||
DOM_SID *dup_sid(DOM_SID *sid)
|
||||
sid_t *dup_sid(sid_t *sid)
|
||||
{
|
||||
DOM_SID *tmp = (DOM_SID *)malloc(sizeof(DOM_SID));
|
||||
sid_t *tmp = (sid_t *)malloc(sizeof(sid_t));
|
||||
int i;
|
||||
|
||||
if (!tmp) return NULL;
|
||||
@ -1916,12 +1916,12 @@ SEC_DESC *process_sec_desc(REGF *regf, REG_SEC_DESC *sec_desc)
|
||||
IVAL(&sec_desc->group_off));
|
||||
if (verbose) fprintf(stdout, "SEC_DESC DACL Off: %0X\n",
|
||||
IVAL(&sec_desc->dacl_off));
|
||||
tmp->owner = dup_sid((DOM_SID *)((char *)sec_desc + IVAL(&sec_desc->owner_off)));
|
||||
tmp->owner = dup_sid((sid_t *)((char *)sec_desc + IVAL(&sec_desc->owner_off)));
|
||||
if (!tmp->owner) {
|
||||
free(tmp);
|
||||
return NULL;
|
||||
}
|
||||
tmp->group = dup_sid((DOM_SID *)((char *)sec_desc + IVAL(&sec_desc->group_off)));
|
||||
tmp->group = dup_sid((sid_t *)((char *)sec_desc + IVAL(&sec_desc->group_off)));
|
||||
if (!tmp->group) {
|
||||
free(tmp);
|
||||
return NULL;
|
||||
@ -2618,7 +2618,7 @@ void *nt_alloc_regf_space(REGF *regf, int size, unsigned int *off)
|
||||
* Compute the size of a SID stored ...
|
||||
*/
|
||||
static
|
||||
unsigned int sid_size(DOM_SID *sid)
|
||||
unsigned int sid_size(sid_t *sid)
|
||||
{
|
||||
unsigned int size;
|
||||
|
||||
@ -2686,7 +2686,7 @@ unsigned int sec_desc_size(SEC_DESC *sd)
|
||||
* Store a SID at the location provided
|
||||
*/
|
||||
static
|
||||
int nt_store_SID(REGF *regf, DOM_SID *sid, unsigned char *locn)
|
||||
int nt_store_SID(REGF *regf, sid_t *sid, unsigned char *locn)
|
||||
{
|
||||
int i;
|
||||
unsigned char *p = locn;
|
||||
@ -3864,7 +3864,7 @@ void print_perms(int perms)
|
||||
}
|
||||
|
||||
static
|
||||
void print_sid(DOM_SID *sid)
|
||||
void print_sid(sid_t *sid)
|
||||
{
|
||||
int i, comps = sid->auths;
|
||||
fprintf(stdout, "S-%u-%u", sid->ver, sid->auth[5]);
|
||||
@ -3955,7 +3955,7 @@ int main(int argc, char *argv[])
|
||||
char *cmd_file_name = NULL;
|
||||
char *out_file_name = NULL;
|
||||
CMD_FILE *cmd_file = NULL;
|
||||
DOM_SID *lsid;
|
||||
sid_t *lsid;
|
||||
|
||||
if (argc < 2) {
|
||||
usage();
|
||||
@ -3987,7 +3987,7 @@ int main(int argc, char *argv[])
|
||||
case 'O':
|
||||
def_owner_sid_str = strdup(optarg);
|
||||
regf_opt += 2;
|
||||
if (!string_to_sid(&lsid, def_owner_sid_str)) {
|
||||
if (!sid_string_to_sid(&lsid, def_owner_sid_str)) {
|
||||
fprintf(stderr, "Default Owner SID: %s is incorrectly formatted\n",
|
||||
def_owner_sid_str);
|
||||
free(&def_owner_sid_str[0]);
|
||||
|
Loading…
Reference in New Issue
Block a user