
On 03/19/2014 11:20 AM, Eric Blake wrote:
Part of a series of cleanups to use new accessor methods.
While writing this, I also discovered that conversion from XML to vmware modified the disk source in place; if the same code is reached twice, the second call behaves differently because the first call didn't clean up its mess.
* src/vmware/vmware_conf.c (vmwareVmxPath): Use accessors. (vmwareParsePath): Avoid munging input string. * src/vmware/vmware_conf.h (vmwareParsePath): Make static.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/vmware/vmware_conf.c | 18 ++++++++++-------- src/vmware/vmware_conf.h | 6 +++--- 2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c index c96bd62..2de24a7 100644 --- a/src/vmware/vmware_conf.c +++ b/src/vmware/vmware_conf.c @@ -331,15 +331,15 @@ vmwareDomainConfigDisplay(vmwareDomainPtr pDomain, virDomainDefPtr def) } }
-int -vmwareParsePath(char *path, char **directory, char **filename) +static int +vmwareParsePath(const char *path, char **directory, char **filename) { char *separator;
separator = strrchr(path, '/');
if (separator != NULL) { - *separator++ = '\0'; + separator++;
if (*separator == '\0') { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -347,7 +347,7 @@ vmwareParsePath(char *path, char **directory, char **filename) return -1; }
- if (VIR_STRDUP(*directory, path) < 0) + if (VIR_STRNDUP(*directory, path, separator - path - 1) < 0)
So this fixes the bug you mentioned in the log message. Might be better if it was a different patch. (No need to resend though) (BTW, you haven't seen any ACKs yet because I'm going to give one for the whole series to reduce clutter :-)