diff options
author | Chih-Wei Huang <cwhuang@linux.org.tw> | 2014-04-28 15:47:45 +0800 |
---|---|---|
committer | Brian Carlstrom <bdc@google.com> | 2014-04-28 14:08:16 -0700 |
commit | 0e8ae16f084e3d4772ea6dd33a9b72925d7b40d5 (patch) | |
tree | 154f1e08d9bd71a3c81b49d42ac8bb1aa71ceb8b | |
parent | 3f0d5669eb437ce1f9ce599e196d045534ec3d4f (diff) | |
download | native-0e8ae16f084e3d4772ea6dd33a9b72925d7b40d5.tar.gz |
Fix incorrect odex path handling
It's wrong to just concatenate the apk_path and .odex.
The bug prevents the prebuilt odex being used since Kitkat.
The patch is copied from the code of JellyBean.
Change-Id: I0ce8a877e3df8ae1ab9a0e3aeeef2d5253efc223
-rw-r--r-- | cmds/installd/commands.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/cmds/installd/commands.c b/cmds/installd/commands.c index 669f403e6b..a86abe1b7b 100644 --- a/cmds/installd/commands.c +++ b/cmds/installd/commands.c @@ -685,9 +685,13 @@ int dexopt(const char *apk_path, uid_t uid, int is_public, /* Before anything else: is there a .odex file? If so, we have * precompiled the apk and there is nothing to do here. */ - sprintf(out_path, "%s%s", apk_path, ".odex"); - if (stat(out_path, &dex_stat) == 0) { - return 0; + strcpy(out_path, apk_path); + end = strrchr(out_path, '.'); + if (end != NULL) { + strcpy(end, ".odex"); + if (stat(out_path, &dex_stat) == 0) { + return 0; + } } if (create_cache_path(out_path, apk_path)) { |