]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
HS 2.0: Do not require devinfo.xml for all hs20-osu-client operations
authorJouni Malinen <jouni@codeaurora.org>
Tue, 30 Oct 2018 13:29:12 +0000 (15:29 +0200)
committerJouni Malinen <j@w1.fi>
Tue, 30 Oct 2018 13:29:12 +0000 (15:29 +0200)
hs20-osu-client refused to do anything if it could not find devinfo.xml
from the current working directory. This is a bit excessive since that
file was used in init_ctx() only to fill in ctx->devid which is used
when constructing OMA DM messages.

Move the check for ctx->devid into OMA DM specific code so that other
hs20-osu-client functionality can be used without the devinfo.xml file.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
hs20/client/oma_dm_client.c
hs20/client/osu_client.c

index 5854b726dba2b3c935b43b7d9ed37451430dcc93..d75c84562acadb96b4f485c4e567d78246c25793 100644 (file)
@@ -111,6 +111,12 @@ static xml_node_t * oma_dm_build_hdr(struct hs20_osu_client *ctx,
        xml_node_t *syncml, *synchdr;
        xml_namespace_t *ns;
 
+       if (!ctx->devid) {
+               wpa_printf(MSG_ERROR,
+                          "DevId from devinfo.xml is not available - cannot use OMA DM");
+               return NULL;
+       }
+
        syncml = xml_node_create_root(ctx->xml, "SYNCML:SYNCML1.2", NULL, &ns,
                                      "SyncML");
 
index 9e1b0c720a801db9b4724b8dc9869562ed3de7ec..636e10666f8b027dd4d3f9197f4e653ffeefd145 100644 (file)
@@ -3068,24 +3068,17 @@ static int init_ctx(struct hs20_osu_client *ctx)
                return -1;
 
        devinfo = node_from_file(ctx->xml, "devinfo.xml");
-       if (!devinfo) {
-               wpa_printf(MSG_ERROR, "devinfo.xml not found");
-               return -1;
-       }
-
-       devid = get_node(ctx->xml, devinfo, "DevId");
-       if (devid) {
-               char *tmp = xml_node_get_text(ctx->xml, devid);
-               if (tmp) {
-                       ctx->devid = os_strdup(tmp);
-                       xml_node_get_text_free(ctx->xml, tmp);
+       if (devinfo) {
+               devid = get_node(ctx->xml, devinfo, "DevId");
+               if (devid) {
+                       char *tmp = xml_node_get_text(ctx->xml, devid);
+
+                       if (tmp) {
+                               ctx->devid = os_strdup(tmp);
+                               xml_node_get_text_free(ctx->xml, tmp);
+                       }
                }
-       }
-       xml_node_free(ctx->xml, devinfo);
-
-       if (ctx->devid == NULL) {
-               wpa_printf(MSG_ERROR, "Could not fetch DevId from devinfo.xml");
-               return -1;
+               xml_node_free(ctx->xml, devinfo);
        }
 
        ctx->http = http_init_ctx(ctx, ctx->xml);