]> www.infradead.org Git - users/dwmw2/openconnect.git/commitdiff
split htmlnode_next and htmlnode_dive
authorDaniel Lenski <dlenski@gmail.com>
Mon, 8 Feb 2021 01:47:08 +0000 (17:47 -0800)
committerDaniel Lenski <dlenski@gmail.com>
Mon, 29 Mar 2021 02:27:01 +0000 (19:27 -0700)
htmlnode_next(): try ->next, before ->parent
htmlnode_dive(): try children, before ->next, before ->parent

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
auth-html.c
auth-juniper.c
openconnect-internal.h

index 148ff3c58baf7632f349ba2bb15a68d0d35983cf..c7999d882ad03998b522595eebf36d95c4f403d7 100644 (file)
@@ -26,9 +26,6 @@
 
 xmlNodePtr htmlnode_next(xmlNodePtr top, xmlNodePtr node)
 {
-       if (node->children)
-               return node->children;
-
        while (!node->next) {
                node = node->parent;
                if (!node || node == top)
@@ -37,11 +34,19 @@ xmlNodePtr htmlnode_next(xmlNodePtr top, xmlNodePtr node)
        return node->next;
 }
 
+xmlNodePtr htmlnode_dive(xmlNodePtr top, xmlNodePtr node)
+{
+       if (node->children)
+               return node->children;
+       return htmlnode_next(top, node);
+}
+
+
 xmlNodePtr find_form_node(xmlDocPtr doc)
 {
        xmlNodePtr root, node;
 
-       for (root = node = xmlDocGetRootElement(doc); node; node = htmlnode_next(root, node)) {
+       for (root = node = xmlDocGetRootElement(doc); node; node = htmlnode_dive(root, node)) {
                if (node->name && !strcasecmp((char *)node->name, "form"))
                        return node;
        }
@@ -210,7 +215,7 @@ struct oc_auth_form *parse_form_node(struct openconnect_info *vpninfo,
        xmlnode_get_prop(node, "name", &form->auth_id);
        form->banner = strdup(form->auth_id);
 
-       for (child = htmlnode_next(node, node); child && child != node; child = htmlnode_next(node, child)) {
+       for (child = htmlnode_dive(node, node); child && child != node; child = htmlnode_dive(node, child)) {
                if (!child->name)
                        continue;
 
index 64d2d82eb64b0aace21c5896e7184df43c9c9e59..4c6f4ad06a6b38aab81031c3ff1ef5d197eac7ec 100644 (file)
@@ -414,8 +414,8 @@ static struct oc_auth_form *parse_roles_form_node(xmlNodePtr node)
        xmlNodePtr child;
 
        // Set form->action here as a redirect url with keys and ids.
-       for (child = htmlnode_next(node, node); child && child != node;
-            child = htmlnode_next(node, child)) {
+       for (child = htmlnode_dive(node, node); child && child != node;
+            child = htmlnode_dive(node, child)) {
                if (child->name && !strcasecmp((char *)child->name, "table")) {
                        char *table_id = (char *)xmlGetProp(child, (unsigned char *)"id");
 
index 033190b332c61126363f507192b253f6b30bf945..5d19e26380e30340d85674642757f7d3d6f4cb87 100644 (file)
@@ -922,6 +922,7 @@ int compress_packet(struct openconnect_info *vpninfo, int compr_type, struct pkt
 
 /* html-auth.c */
 xmlNodePtr htmlnode_next(xmlNodePtr top, xmlNodePtr node);
+xmlNodePtr htmlnode_dive(xmlNodePtr top, xmlNodePtr node);
 xmlNodePtr find_form_node(xmlDocPtr doc);
 int parse_input_node(struct openconnect_info *vpninfo, struct oc_auth_form *form,
                     xmlNodePtr node, const char *submit_button,