perf map: Use strstarts() to look for Android libraries
authorArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 9 Mar 2020 19:53:41 +0000 (16:53 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 11 Mar 2020 13:48:44 +0000 (10:48 -0300)
And add the '/' to avoid looking at things like "/system/libsomething",
when all we want to know if it is like "/system/lib/something", i.e. if
it is in that system library dir.

Using strstarts() avoids off-by-one errors like recently fixed in this
file.

Since this adds the '/' I separated this patch, another patch will make
this consistent by removing other strncmp(str, prefix, manually
calculated prefix length) usage.

Reported-by: Dominik Czarnota <dominik.b.czarnota@gmail.com>
Acked-by: Dominik Czarnota <dominik.b.czarnota@gmail.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lore.kernel.org/lkml/CABEVAa0_q-uC0vrrqpkqRHy_9RLOSXOJxizMLm1n5faHRy2AeA@mail.gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/map.c

index b342f744b1fcaefd8ae4568618cf58fda9908b5d..53d96611e6a6ad3d69b7ef18c36d16a0bf92b592 100644 (file)
@@ -44,8 +44,8 @@ static inline int is_no_dso_memory(const char *filename)
 
 static inline int is_android_lib(const char *filename)
 {
-       return !strncmp(filename, "/data/app-lib", 13) ||
-              !strncmp(filename, "/system/lib", 11);
+       return strstarts(filename, "/data/app-lib/") ||
+              strstarts(filename, "/system/lib/");
 }
 
 static inline bool replace_android_lib(const char *filename, char *newfilename)
@@ -65,7 +65,7 @@ static inline bool replace_android_lib(const char *filename, char *newfilename)
 
        app_abi_length = strlen(app_abi);
 
-       if (!strncmp(filename, "/data/app-lib", 13)) {
+       if (strstarts(filename, "/data/app-lib/")) {
                char *apk_path;
 
                if (!app_abi_length)
@@ -89,7 +89,7 @@ static inline bool replace_android_lib(const char *filename, char *newfilename)
                return true;
        }
 
-       if (!strncmp(filename, "/system/lib/", 12)) {
+       if (strstarts(filename, "/system/lib/")) {
                char *ndk, *app;
                const char *arch;
                size_t ndk_length;