Re: [PATCH spice-common 1/2] Use a single copy of subject string

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Dec 13, 2018 at 02:20:24PM +0000, Frediano Ziglio wrote:
> A full copy can keep both the key and the value instead of
> allocating twice the memory.
> Also this remove a warning produced by Coverity that is assuming
> that allocating strlen(string_variable) is wrong.

We are parsing key1=val1,key2=val2,... and in doing that, we currently
store 'key1' in key, and 'val1' in val, and then 'key2', 'val2', and so
on.
After your patch, we store 'key1\0val1\0' in key, which fits and saves
some memory.

Acked-by: Christophe Fergeau <cfergeau@xxxxxxxxxx>

> 
> Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
> ---
>  common/ssl_verify.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/common/ssl_verify.c b/common/ssl_verify.c
> index 0ac00a6..74f95bb 100644
> --- a/common/ssl_verify.c
> +++ b/common/ssl_verify.c
> @@ -282,7 +282,7 @@ static X509_NAME* subject_to_x509_name(const char *subject, int *nentries)
>  {
>      X509_NAME* in_subject;
>      const char *p;
> -    char *key, *val, *k, *v = NULL;
> +    char *key, *val = NULL, *k, *v = NULL;
>      enum {
>          KEY,
>          VALUE
> @@ -291,11 +291,10 @@ static X509_NAME* subject_to_x509_name(const char *subject, int *nentries)
>      spice_return_val_if_fail(subject != NULL, NULL);
>      spice_return_val_if_fail(nentries != NULL, NULL);
>  
> -    key = (char*)alloca(strlen(subject));
> -    val = (char*)alloca(strlen(subject));
> +    key = (char*)alloca(strlen(subject)+1);
>      in_subject = X509_NAME_new();
>  
> -    if (!in_subject || !key || !val) {
> +    if (!in_subject || !key) {
>          spice_debug("failed to allocate");
>          return NULL;
>      }
> @@ -328,6 +327,7 @@ static X509_NAME* subject_to_x509_name(const char *subject, int *nentries)
>              } else if (*p == '=' && !escape) {
>                  state = VALUE;
>                  *k = 0;
> +                val = k + 1;
>                  v = val;
>              } else
>                  *k++ = *p;
> -- 
> 2.17.2
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/spice-devel

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel

[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]