OSDN Git Service

libefiboot: Make efidp multi-instance iteration actually work.
authorPeter Jones <pjones@redhat.com>
Thu, 12 Nov 2015 15:06:17 +0000 (10:06 -0500)
committerroot <root@pjones3.install.bos.redhat.com>
Thu, 12 Nov 2015 15:52:24 +0000 (10:52 -0500)
Make efidp_is_multiinstance() not forever loop, and make
efidp_instance_size() test for error correctly when calling
efidp_next_node()

Signed-off-by: Peter Jones <pjones@redhat.com>
src/include/efivar/efivar-dp.h

index 8b98171..b818966 100644 (file)
@@ -770,6 +770,7 @@ efidp_is_multiinstance(const_efidp dn)
                int rc = efidp_next_node(dn, &next);
                if (rc < 0)
                        break;
+               dn = next;
        }
 
        if (efidp_type(dn) == EFIDP_END_TYPE &&
@@ -851,7 +852,7 @@ efidp_instance_size(const_efidp dpi)
                        break;
 
                int rc = efidp_next_node(dpi, &next);
-               if (rc < 1)
+               if (rc < 0)
                        return -1;
                dpi = next;
        }