diff options
author | Nam T. Nguyen <namnguyen@chromium.org> | 2015-01-21 14:02:13 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-01-22 21:14:29 +0000 |
commit | 9fa6afce26879f605b13f481e7abd097e563970f (patch) | |
tree | 2fe11173e822af4c51ddff95d57222cc73d8f620 /cgpt | |
parent | c67b061cb5cad74e67260a45f38cc03d2984b5d3 (diff) | |
download | vboot-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>
Diffstat (limited to 'cgpt')
-rw-r--r-- | cgpt/cgpt_wrapper.c | 17 |
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) { |