[libvirt] [PATCHv2 07/10] openvz: Use strtok_r instead of sscanf for VPS UUID parsing

Matthias Bolte matthias.bolte at googlemail.com
Wed Mar 31 21:42:00 UTC 2010


Also free 2k stack space.
---
 src/openvz/openvz_conf.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c
index 7fc3cd1..d447eb9 100644
--- a/src/openvz/openvz_conf.c
+++ b/src/openvz/openvz_conf.c
@@ -835,8 +835,9 @@ openvzGetVPSUUID(int vpsid, char *uuidstr, size_t len)
 {
     char conf_file[PATH_MAX];
     char line[1024];
-    char uuidbuf[1024];
-    char iden[1024];
+    char *saveptr;
+    char *uuidbuf;
+    char *iden;
     int fd, ret;
     int retval = 0;
 
@@ -859,8 +860,10 @@ openvzGetVPSUUID(int vpsid, char *uuidstr, size_t len)
             break;
         }
 
-        sscanf(line, "%s %s\n", iden, uuidbuf);
-        if(STREQ(iden, "#UUID:")) {
+        iden = strtok_r(line, " ", &saveptr);
+        uuidbuf = strtok_r(NULL, "\n", &saveptr);
+
+        if (iden != NULL && uuidbuf != NULL && STREQ(iden, "#UUID:")) {
             if (virStrcpy(uuidstr, uuidbuf, len) == NULL)
                 retval = -1;
             break;
-- 
1.6.3.3




More information about the libvir-list mailing list