server/advapi32: Report administrator ownership by default for registry objects (try 5).

Alexandre Julliard julliard at winehq.org
Tue Mar 5 04:24:16 CST 2013


"Erich E. Hoover" <ehoover at mymail.mines.edu> writes:

> +static struct security_descriptor *key_get_sd( struct object *obj )
> +{
> +    struct security_descriptor *sd = default_get_sd( obj );
> +    const SID *admins_sid = security_builtin_admins_sid;
> +    int admin_len;
> +    char *ptr;
> +
> +    if (sd) return sd;
> +    admin_len = FIELD_OFFSET(SID, SubAuthority[admins_sid->SubAuthorityCount]);
> +    sd = mem_alloc( sizeof(struct security_descriptor) + 2*admin_len );
> +    if (!sd) return sd;
> +
> +    sd->control = 0;
> +    sd->owner_len = admin_len;
> +    sd->group_len = admin_len;
> +    sd->sacl_len = 0;
> +    sd->dacl_len = 0;
> +
> +    ptr = (char *)(sd + 1);
> +    memcpy( ptr, security_builtin_admins_sid, sd->owner_len );
> +    ptr += sd->owner_len;
> +    memcpy( ptr, security_builtin_admins_sid, sd->group_len );
> +    ptr += sd->group_len;
> +
> +    free( obj->sd );
> +    obj->sd = sd;
> +    return sd;
> +}

It shouldn't be necessary to allocate one for every key.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list