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

Frediano Ziglio fziglio at redhat.com
Tue Dec 18 17:22:31 UTC 2018


> 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 at redhat.com>
> 

Thanks for the review. I assume that these comments are an alternative
comments but there's nothing about Coverity, how should I combine the
2 set of comments together?

> > 
> > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > ---
> >  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;

Frediano


More information about the Spice-devel mailing list