When parsing the barrier:limit values, use virStringSplitCount in order
to split the pair and make the approriate checks to get the data.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/openvz/openvz_conf.c | 32 +++++++++++---------------------
1 file changed, 11 insertions(+), 21 deletions(-)
diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c
index e32dd6f..cf0d67c 100644
--- a/src/openvz/openvz_conf.c
+++ b/src/openvz/openvz_conf.c
@@ -133,35 +133,25 @@ openvzParseBarrierLimit(const char* value,
unsigned long long *barrier,
unsigned long long *limit)
{
- char *token;
- char *saveptr = NULL;
- char *str;
+ char **tmp = NULL;
+ size_t ntmp = 0;
int ret = -1;
- if (VIR_STRDUP(str, value) < 0)
+ if (!(tmp = virStringSplitCount(value, ":", 0, &ntmp)))
goto error;
- token = strtok_r(str, ":", &saveptr);
- if (token == NULL) {
+ if (ntmp != 2)
goto error;
- } else {
- if (barrier != NULL) {
- if (virStrToLong_ull(token, NULL, 10, barrier))
- goto error;
- }
- }
- token = strtok_r(NULL, ":", &saveptr);
- if (token == NULL) {
+
+ if (barrier && virStrToLong_ull(tmp[0], NULL, 10, barrier))
goto error;
- } else {
- if (limit != NULL) {
- if (virStrToLong_ull(token, NULL, 10, limit))
- goto error;
- }
- }
+
+ if (limit && virStrToLong_ull(tmp[1], NULL, 10, limit))
+ goto error;
+
ret = 0;
error:
- VIR_FREE(str);
+ virStringFreeListCount(tmp, ntmp);
return ret;
}
--
2.5.0