Hi,

On Thu, Sep 30, 2021 at 02:33:08PM +0300, Petr Mikhalicin via Openvpn-devel 
wrote:
> New pkcs11-helper interface allows to setup pkcs11 provider via
> properties: 
> https://github.com/alonbl/pkcs11-helper/commit/b78d21c7e26041746aa4ae3d08b95469e1714a85
> 
> Also pkcs11-helper added ability to setup init args for pkcs11 provider:
> https://github.com/alonbl/pkcs11-helper/commit/133f893e30856eba1de715ecd6fe176722eb3097

I can't comment on the PKCS#11 feature (not my field), but I have a few 
comments about required coding style changes:

> --- a/src/openvpn/options.c
> +++ b/src/openvpn/options.c
> @@ -664,6 +664,11 @@ static const char usage_message[] =
>      "                              8       : Use Unwrap.\n"
>      "--pkcs11-cert-private [0|1] ... : Set if login should be performed 
> before\n"
>      "                                  certificate can be accessed. Set for 
> each provider.\n"
> +    "--pkcs11-init-flags hex ...     : PKCS#11 init flags.\n"
> +    "                              It's bitwise OR of some PKCS#11 
> initialize flags.\n"
> +    "                              Most popular of them is:\n"
> +    "                              1       : 
> CKF_LIBRARY_CANT_CREATE_OS_THREADS\n"
> +    "                              2       : CKF_OS_LOCKING_OK\n"

The indent here is not right - did you use TABs here?  Please don't, they
get usually messed up by mail clients.

> @@ -1838,6 +1843,13 @@ show_settings(const struct options *o)
>              SHOW_PARM(pkcs11_cert_private, o->pkcs11_cert_private[i] ? 
> "ENABLED" : "DISABLED", "%s");
>          }
>      }
> +    {
> +        int i;
> +        for (i = 0; i<MAX_PARMS; i++)
> +        {
> +            SHOW_PARM(pkcs11_init_flags, o->pkcs11_init_flags[i], "%08x");
> +        }
> +    }

This, we do C99 style nowadays:

> +    for (int i=0; i<MAX_PARMS; i++)
> +    {
> +        SHOW_PARM(pkcs11_init_flags, o->pkcs11_init_flags[i], "%08x");
> +    }

(so, no extra brackets, and the "int i" can go right into the for()
clause)

>      SHOW_INT(pkcs11_pin_cache_period);
>      SHOW_STR(pkcs11_id);
>      SHOW_BOOL(pkcs11_id_management);
> @@ -8778,6 +8790,17 @@ add_option(struct options *options,
>              options->pkcs11_cert_private[j-1] = atoi(p[j]) != 0 ? 1 : 0;
>          }
>      }
> +    else if (streq(p[0], "pkcs11-init-flags"))
> +    {
> +        int j;
> +
> +        VERIFY_PERMISSION(OPT_P_GENERAL);
> +
> +        for (j = 1; j < MAX_PARMS && p[j] != NULL; ++j)

Same here: "int j" goes into the loop.

> diff --git a/src/openvpn/pkcs11.c b/src/openvpn/pkcs11.c
> index 02d0f51f..29db7ea4 100644
> --- a/src/openvpn/pkcs11.c
> +++ b/src/openvpn/pkcs11.c
> @@ -374,12 +374,17 @@ pkcs11_terminate(void)
> +    if ((rv = pkcs11h_registerProvider(provider)) != CKR_OK) {
> +        msg(M_WARN, "PKCS#11: Cannot register provider '%s' %ld-'%s'", 
> provider, rv, pkcs11h_getMessage(rv));
> +     success = false;
> +     goto exit;
> +    }

The "{" always goes to the next line, and indenting is never done with
tabs (the lines above look like a mixture of tabs and spaces, and the
tab being messed up by the mail client).

> +    // pkcs11-helper take ownership over this pointer

No C++ comments, please.

> +    // pkcs11-helper take ownership over this pointer
> +    if ((p_init_args = malloc(sizeof(*p_init_args))) == NULL) {
> +        msg(M_FATAL, "PKCS#11: Cannot allocate memory");
> +     success = false;
> +     goto cleanup;
> +    }
> +
> +    memset(p_init_args, 0, sizeof(*p_init_args));

Please use calloc() and check_malloc_return() instead.

msg(M_FATAL) never returns, so the "success = false, goto cleanup" bit
is not needed - and all that is done by check_malloc_return() for you :-)


For our coding style guidelines, see also here:

  https://community.openvpn.net/openvpn/wiki/CodeStyle

and in the openvpn repo there is a "dev-tools/uncrustify.conf" config
which can be used with the "uncrustify" program to format your code
according to the whitespace rules.  Won't do the "for (int i=0; ...)"
C99 changes, though.

gert
-- 
"If was one thing all people took for granted, was conviction that if you 
 feed honest figures into a computer, honest figures come out. Never doubted 
 it myself till I met a computer with a sense of humor."
                             Robert A. Heinlein, The Moon is a Harsh Mistress

Gert Doering - Munich, Germany                             g...@greenie.muc.de

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to