Re: [PATCH 09/16] xenParseSxprSound: Refactor parsing of model list

2021-03-10 Thread Ján Tomko

On a Tuesday in 2021, Peter Krempa wrote:

Copy the input string so that we don't have to use a static buffer and
virStrncpy.

Signed-off-by: Peter Krempa 
---
src/libxl/xen_common.c | 46 +-
1 file changed, 19 insertions(+), 27 deletions(-)



Reviewed-by: Ján Tomko 

Jano


signature.asc
Description: PGP signature


[PATCH 09/16] xenParseSxprSound: Refactor parsing of model list

2021-03-02 Thread Peter Krempa
Copy the input string so that we don't have to use a static buffer and
virStrncpy.

Signed-off-by: Peter Krempa 
---
 src/libxl/xen_common.c | 46 +-
 1 file changed, 19 insertions(+), 27 deletions(-)

diff --git a/src/libxl/xen_common.c b/src/libxl/xen_common.c
index 09c74dcb53..1c71f69209 100644
--- a/src/libxl/xen_common.c
+++ b/src/libxl/xen_common.c
@@ -1332,38 +1332,30 @@ xenParseSxprSound(virDomainDefPtr def,
 def->sounds[def->nsounds++] = sound;
 }
 } else {
-char model[10];
-const char *offset = str, *offset2;
-
-do {
-int len;
-virDomainSoundDefPtr sound;
-offset2 = strchr(offset, ',');
-if (offset2)
-len = (offset2 - offset);
-else
-len = strlen(offset);
-if (virStrncpy(model, offset, len, sizeof(model)) < 0) {
-virReportError(VIR_ERR_INTERNAL_ERROR,
-   _("Sound model %s too big for destination"),
-   offset);
-return -1;
-}
+g_autofree char *sounds = g_strdup(str);
+char *sound = sounds;
+int model;

-sound = g_new0(virDomainSoundDef, 1);
+while (*sound != '\0') {
+char *next = strchr(sound, ',');
+virDomainSoundDefPtr snddef;

-if ((sound->model = virDomainSoundModelTypeFromString(model)) < 0) 
{
-VIR_FREE(sound);
-return -1;
-}
+if (next)
+*next = '\0';

-if (VIR_APPEND_ELEMENT(def->sounds, def->nsounds, sound) < 0) {
-virDomainSoundDefFree(sound);
+if ((model = virDomainSoundModelTypeFromString(sound)) < 0)
 return -1;
-}

-offset = offset2 ? offset2 + 1 : NULL;
-} while (offset);
+snddef = g_new0(virDomainSoundDef, 1);
+snddef->model = model;
+
+ignore_value(VIR_APPEND_ELEMENT(def->sounds, def->nsounds, 
snddef));
+
+if (!next)
+break;
+
+sound = next + 1;
+}
 }

 return 0;
-- 
2.29.2