Hi all: To my surprise, it seems that passing null to php as a string parameter, will set the pointer which retrive it to an empty string "" , but not NULL. get_xml_from_xpath() doesn't work correctly since an empty string is passed as the xpath argument, and libxml will complain "Invalid expression" I know seldom about xpath, I'm not sure if it is the correct way to fix it. BTW, what xpath shall I pass to get the entire xml? --- src/libvirt-php.c | 25 +++++++++++++++++++++++++ 1 files changed, 25 insertions(+), 0 deletions(-) diff --git a/src/libvirt-php.c b/src/libvirt-php.c index ce9d0b9..2a77423 100644 --- a/src/libvirt-php.c +++ b/src/libvirt-php.c @@ -1205,6 +1205,11 @@ char *get_string_from_xpath(char *xml, char *xpath, zval **val, int *retVal) int ret = 0, i; char *value, key[8] = { 0 }; + if ((xpath == NULL) || (xml == NULL)) + { + return NULL; + } + xp = xmlCreateDocParserCtxt( (xmlChar *)xml ); if (!xp) { if (retVal) @@ -1691,6 +1696,10 @@ PHP_FUNCTION(libvirt_domain_get_xml_desc) int retval = -1; GET_DOMAIN_FROM_ARGS("rs|l",&zdomain,&xpath,&xpath_len,&flags); + if (xpath_len < 1) + { + xpath = NULL; + } xml=virDomainGetXMLDesc(domain->domain,flags); if (xml==NULL) { @@ -3123,6 +3132,10 @@ PHP_FUNCTION(libvirt_storagevolume_get_xml_desc) int retval = -1; GET_VOLUME_FROM_ARGS("rs|l",&zvolume,&xpath,&xpath_len,&flags); + if (xpath_len < 1) + { + xpath = NULL; + } xml=virStorageVolGetXMLDesc(volume->volume,flags); if (xml==NULL) { @@ -3338,6 +3351,10 @@ PHP_FUNCTION(libvirt_storagepool_get_xml_desc) int retval = -1; GET_STORAGEPOOL_FROM_ARGS("rs|l", &zpool, &xpath, &xpath_len, &flags); + if (xpath_len < 1) + { + xpath = NULL; + } xml = virStoragePoolGetXMLDesc (pool->pool, flags); if (xml == NULL) @@ -4136,6 +4153,10 @@ PHP_FUNCTION(libvirt_nodedev_get_xml_desc) int retval = -1; GET_NODEDEV_FROM_ARGS("r|s",&znodedev,&xpath,&xpath_len); + if (xpath_len < 1) + { + xpath = NULL; + } xml=virNodeDeviceGetXMLDesc(nodedev->device, 0); if ( xml == NULL ) { @@ -4576,6 +4597,10 @@ PHP_FUNCTION(libvirt_network_get_xml_desc) int retval = -1; GET_NETWORK_FROM_ARGS("r|s",&znetwork,&xpath,&xpath_len); + if (xpath_len < 1) + { + xpath = NULL; + } xml=virNetworkGetXMLDesc(network->network, 0); -- 1.7.3.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list