
On Fri, Oct 06, 2006 at 04:44:17AM -0400, Daniel Veillard wrote:
On Thu, Oct 05, 2006 at 07:23:15PM +0100, Daniel P. Berrange wrote:
diff -u -r1.66 xend_internal.c --- src/xend_internal.c 29 Sep 2006 12:00:58 -0000 1.66 +++ src/xend_internal.c 5 Oct 2006 18:12:33 -0000 @@ -1499,7 +1499,7 @@ for (i = 0, j = 0;(i < 32) && (tmp[j] != 0);j++) { if (((tmp[j] >= '0') && (tmp[j] <= '9')) || ((tmp[j] >= 'a') && (tmp[j] <= 'f'))) - compact[i++] = tmp[j]; + compact[i++] = tmp[j];
maybe we should just add the full set of { } for the innner constructs too if reformatting.
Will do.
else if ((tmp[j] >= 'A') && (tmp[j] <= 'F')) compact[i++] = tmp[j] + 'a' - 'A'; } @@ -1546,95 +1546,116 @@ + drvName = malloc((offset-src)+1);
I agree that if we OOM there it's gonna be messy anyway but let's catch NULL returns on allocs as much as possible
Don't know what I was thinking. Clearly I should be checking malloc() calls for failure. Will fix.
+ strncpy(drvName, src, (offset-src)); + drvName[offset-src] = '\0'; + + src = offset + 1; + + if (!strcmp(drvName, "tap")) { + offset = strchr(src, ':'); + if (!offset) + goto bad_parse; + + drvType = malloc((offset-src)+1);
Same here. If failing a libvirt error and going to bad_parse should be sufficient I guess.
Will fix.
+ } else if (!strcmp(offset, ":disk")) { + /* defualt anyway */
/* default */ :-)
+ } else if ((drvName == NULL) && + (xmlStrEqual(cur->name, BAD_CAST "driver"))) { + drvName = xmlGetProp(cur, BAD_CAST "name");
testing for NULL would be good, if the attribute is missing we should not crash
Yes, its fine for this to be NULL - i guess I was just lucky that this next strcmp didn't crash when passed NULL. Will fix.
+ if (!strcmp((const char *)drvName, "tap")) + drvType = xmlGetProp(cur, BAD_CAST "type"); } else if (xmlStrEqual(cur->name, BAD_CAST "readonly")) { ro = 1; }
Regards, Dan. -- |=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=| |=- Perl modules: http://search.cpan.org/~danberr/ -=| |=- Projects: http://freshmeat.net/~danielpb/ -=| |=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|