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@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to