summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorKhaled Almahallawy <khaled.almahallawy@intel.com>2021-04-08 14:51:11 -0700
committerPetri Latvala <petri.latvala@intel.com>2021-04-09 11:01:59 +0300
commit441ae5b824e59871989b88535121e756166877cd (patch)
tree1d33e38458446759d2bd2c776b3b1c0ea064fd60 /tools
parent4aa7cd3ac664af4a7ca87d3fa8ed44208e4b0fa5 (diff)
tools: Fix running intel_dp_compliance if it is found in the search path($PATH env variable)
When intel_dp_compliance binary location is part of PATH environment variable, running it from the shell without relative or full path, cause the following assertion failure because chdir: $:~# intel_dp_compliance (intel_dp_compliance:3070) CRITICAL: Test assertion failure function enter_exec_path, file ../tools/igt_compliance_utils.c:56: (intel_dp_compliance:3070) CRITICAL: Failed assertion: ret == 0 (intel_dp_compliance:3070) CRITICAL: Last errno: 2, No such file or directory (intel_dp_compliance:3070) CRITICAL: error: -1 != 0 Stack trace: #0 ../lib/igt_core.c:1726 __igt_fail_assert() #1 [enter_exec_path+0x8b] #2 ../tools/intel_dp_compliance.c:843 main() #3 ../csu/libc-start.c:342 __libc_start_main() #4 [_start+0x2e] Test (null) failed. **** DEBUG **** (intel_dp_compliance:3070) CRITICAL: Test assertion failure function enter_exec_path, file ../tools/igt_compliance_utils.c:56: (intel_dp_compliance:3070) CRITICAL: Failed assertion: ret == 0 (intel_dp_compliance:3070) CRITICAL: Last errno: 2, No such file or directory (intel_dp_compliance:3070) CRITICAL: error: -1 != 0 (intel_dp_compliance:3070) igt_core-INFO: Stack trace: (intel_dp_compliance:3070) igt_core-INFO: #0 ../lib/igt_core.c:1726 __igt_fail_assert() (intel_dp_compliance:3070) igt_core-INFO: #1 [enter_exec_path+0x8b] (intel_dp_compliance:3070) igt_core-INFO: #2 ../tools/intel_dp_compliance.c:843 main() (intel_dp_compliance:3070) igt_core-INFO: #3 ../csu/libc-start.c:342 __libc_start_main() (intel_dp_compliance:3070) igt_core-INFO: #4 [_start+0x2e] **** END **** FAIL (-1.000s) This patch fixes this issue. v2: (PATH_MAX - 1) and dirname (Petri) Signed-off-by: Khaled Almahallawy <khaled.almahallawy@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com> Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/igt_compliance_utils.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/tools/igt_compliance_utils.c b/tools/igt_compliance_utils.c
index d6a2e4e5..0faf3fc8 100644
--- a/tools/igt_compliance_utils.c
+++ b/tools/igt_compliance_utils.c
@@ -29,7 +29,7 @@
#include <stdlib.h>
#include <signal.h>
#include <termios.h>
-
+#include <libgen.h>
#include <sys/stat.h>
#include "igt_dp_compliance.h"
@@ -39,22 +39,14 @@ struct termios saved_tio;
void enter_exec_path(char **argv)
{
- char *exec_path = NULL;
- char *pos = NULL;
- short len_path = 0;
+ char exec_path[PATH_MAX];
int ret;
- len_path = strlen(argv[0]);
- exec_path = (char *) malloc(len_path);
-
- memcpy(exec_path, argv[0], len_path);
- pos = strrchr(exec_path, '/');
- if (pos != NULL)
- *(pos+1) = '\0';
-
- ret = chdir(exec_path);
+ memset(exec_path, 0, sizeof(exec_path));
+ ret = readlink("/proc/self/exe", exec_path, sizeof(exec_path)-1);
+ igt_assert(ret != -1);
+ ret = chdir(dirname(exec_path));
igt_assert_eq(ret, 0);
- free(exec_path);
}
static void restore_termio_mode(int sig)