Usually if we're taking the size of a variable, it makes sense to really
take the size of that variable, e.g.
        sa.nLength = sizeof sa;

On Fri, May 05, 2017 at 12:40:02AM +0000, Sairam Venugopal wrote:
> Hi Ben,
> 
> Regarding the usage of sizeof - I think the current implementation is in line 
> with the coding style. SECURITY_ATTRIBUTES is a struct and I noticed that we 
> currently use sizeof with parenthesis while determining the size of 
> structs/types.
> 
> Please correct me if am wrong.
> 
> Thanks,
> Sairam
> 
> 
> 
> On 5/3/17, 1:05 PM, "Ben Pfaff" <[email protected]> wrote:
> 
> >On Wed, May 03, 2017 at 12:22:48PM -0700, Sairam Venugopal wrote:
> >> Update the security policies around the creation of the namedpipe. The
> >> current security updates restrict how the namedpipe can be accessed.
> >> 
> >> - Disable Network access
> >> - Windows Services can access the namedpipe
> >> - Administrators can access the namedpipe
> >> 
> >> Signed-off-by: Sairam Venugopal <[email protected]>
> >
> >Hi Sairam, thanks for working on making the Windows code more secure.
> >It's easy to overlook this kind of thing.
> >
> >I don't know much about Windows in this area, so I can't review this,
> >but I have some style requests.
> >
> >For the code here, coding-style.rst says:
> >    Try to avoid casts. Don't cast the return value of malloc().
> >Also, xmalloc() never returns NULL, so you need not check for that:
> >> +    acl = (PACL) xmalloc(aclSize);
> >> +    if (acl == NULL) {
> >> +        return INVALID_HANDLE_VALUE;
> >> +    }
> >
> >Here, and various other places, coding-style.rst says:
> >    Comments should be written as full sentences that start with a
> >    capital letter and end with a period. Put two spaces between
> >    sentences.
> >> +    /* Add denied ACL */
> >> +    if (!AddAccessDeniedAce(acl, ACL_REVISION,
> >> +                            GENERIC_ALL, remoteAccessSid)) {
> >> +        goto handle_error;
> >> +    }
> >
> >Unnecessary cast:
> >> +    psd = (PSECURITY_DESCRIPTOR) xmalloc(SECURITY_DESCRIPTOR_MIN_LENGTH);
> >> +    if (!InitializeSecurityDescriptor(psd, SECURITY_DESCRIPTOR_REVISION)) 
> >> {
> >> +        goto handle_error;
> >> +    }
> >> +
> >> +    /* Set DACL */
> >> +    if (!SetSecurityDescriptorDacl(psd, TRUE, acl, FALSE)) {
> >> +        goto handle_error;
> >> +    }
> >
> >Regarding "sizeof", coding-style.rst says:
> >    The "sizeof" operator is unique among C operators in that it accepts
> >    two very different kinds of operands: an expression or a type. In
> >    general, prefer to specify an expression, e.g. ``int *x =
> >    xmalloc(sizeof *\ x);``. When the operand of sizeof is an
> >    expression, there is no need to parenthesize that operand, and
> >    please don't.
> >> +    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
> >>      sa.bInheritHandle = TRUE;
> >> +    sa.lpSecurityDescriptor = psd;
> >> +
> >>      if (strlen(name) > 256) {
> >> -        VLOG_ERR_RL(&rl, "Named pipe name too long.");
> >> -        return INVALID_HANDLE_VALUE;
> >> +        goto handle_error;
> >> +    }
> >> +
> >> +    npipe = CreateNamedPipe(name, PIPE_ACCESS_DUPLEX | 
> >> FILE_FLAG_OVERLAPPED,
> >> +                            PIPE_TYPE_MESSAGE | PIPE_READMODE_BYTE | 
> >> PIPE_WAIT,
> >> +                            64, BUFSIZE, BUFSIZE, 0, &sa);
> >> +    free(acl);
> >> +    free(psd);
> >> +    return npipe;
> >> +handle_error:
> >
> >Regarding free(), coding-style.rst says:
> >    Functions that destroy an instance of a dynamically-allocated type
> >    should accept and ignore a null pointer argument. Code that calls
> >    such a function (including the C standard library function
> >    ``free()``) should omit a null-pointer check. We find that this
> >    usually makes code easier to read.
> >> +    if (acl != NULL) {
> >> +        free(acl);
> >> +    }
> >> +    if (psd != NULL) {
> >> +        free(psd);
> >>      }
> >> -    return CreateNamedPipe(name, PIPE_ACCESS_DUPLEX | 
> >> FILE_FLAG_OVERLAPPED,
> >> -                           PIPE_TYPE_MESSAGE | PIPE_READMODE_BYTE | 
> >> PIPE_WAIT,
> >> -                           64, BUFSIZE, BUFSIZE, 0, &sa);
> >> +    return INVALID_HANDLE_VALUE;
> >>  }
> >
> >Thanks again for making OVS more secure!
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to