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

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

 



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.

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




[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]