summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNam T. Nguyen <namnguyen@chromium.org>2015-01-21 14:02:13 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-01-22 21:14:29 +0000
commit9fa6afce26879f605b13f481e7abd097e563970f (patch)
tree2fe11173e822af4c51ddff95d57222cc73d8f620
parentc67b061cb5cad74e67260a45f38cc03d2984b5d3 (diff)
downloadvboot-9fa6afce26879f605b13f481e7abd097e563970f.tar.gz
cgpt_wrapper: Resolve the path to "cgpt" command
Because we do not use "execvp", "cgpt.bin" is not resolved to the same directory as "cgpt". So we need to resolve the original command to its absolute path first, then append ".bin" to it. BUG=None BRANCH=None TEST="cgpt" no longer fails. Change-Id: Id22c2d97616867125e9744c00bbf527f8a176df4 Reviewed-on: https://chromium-review.googlesource.com/242294 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Tested-by: Nam Nguyen <namnguyen@chromium.org> Commit-Queue: Nam Nguyen <namnguyen@google.com>
-rw-r--r--cgpt/cgpt_wrapper.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/cgpt/cgpt_wrapper.c b/cgpt/cgpt_wrapper.c
index 577b2766..50957ccb 100644
--- a/cgpt/cgpt_wrapper.c
+++ b/cgpt/cgpt_wrapper.c
@@ -140,6 +140,23 @@ cleanup:
}
int main(int argc, const char *argv[]) {
+ char resolved_cgpt[PATH_MAX];
+ pid_t pid = getpid();
+ char exe_link[40];
+
+ if (argc < 1) {
+ return -1;
+ }
+
+ snprintf(exe_link, sizeof(exe_link), "/proc/%d/exe", pid);
+ memset(resolved_cgpt, 0, sizeof(resolved_cgpt));
+ if (readlink(exe_link, resolved_cgpt, sizeof(resolved_cgpt) - 1) == -1) {
+ perror("readlink");
+ return -1;
+ }
+
+ argv[0] = resolved_cgpt;
+
if (argc > 2 && !has_dash_D(argc, argv)) {
const char *mtd_device = find_mtd_device(argc, argv);
if (mtd_device) {