Improve detection of the bindings 46/22546/1
authorJosé Bollo <jose.bollo@iot.bzh>
Tue, 1 Oct 2019 09:10:28 +0000 (11:10 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Tue, 1 Oct 2019 09:18:36 +0000 (11:18 +0200)
The symbol 'afbBindingV3root' may be defined
in shared libraries that are not bindings.
Using it to detect bindings v3 can lead to
false detection and errors.

Bug-AGL: SPEC-2841

Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Change-Id: Ib2bc77d95e3306e7b4a883136ce27c92f8524a8d

src/afb-api-so-v3.c

index 230a93f..bef27e2 100644 (file)
@@ -75,16 +75,16 @@ int afb_api_so_v3_add(const char *path, void *handle, struct afb_apiset *declare
        struct afb_api_v3 *api;
        struct afb_export *export;
 
-       /* retrieves the register function */
-       a.root = dlsym(handle, afb_api_so_v3_root);
+       /* retrieves important exported symbols */
        a.desc = dlsym(handle, afb_api_so_v3_desc);
        a.entry = dlsym(handle, afb_api_so_v3_entry);
-       if (!a.root && !a.desc && !a.entry)
+       if (!a.desc && !a.entry)
                return 0;
 
        INFO("binding [%s] looks like an AFB binding V3", path);
 
        /* basic checks */
+       a.root = dlsym(handle, afb_api_so_v3_root);
        if (!a.root) {
                ERROR("binding [%s] incomplete symbol set: %s is missing",
                        path, afb_api_so_v3_root);