On Aug 31, 2011, at 11:29 AM, Anders Broman wrote:
> N.B The case I'm refereeing to is "when run from build directory" presumably the "user" is the one who built it.
> And if you call Wireshark with environment variables set hopefully you know what you are doing...
That would require a 100% safe way to determine when you're running from the build directory, with "100% safe" meaning "there's no way to fool Wireshark into thinking it's being run from the build directory when it's not". "WIRESHARK_RUN_FROM_BUILD_DIRECTORY is set" is clearly not 100% safe, as anybody can set it. "The directory containing the executable image is named ".libs"" is reliable only if:
1) that directory is *not* found by looking at argv[0], as argv[0] can be set arbitrarily by the user if they write their own code to run Wireshark;
2) that directory is *not* found by dladdr() looking at argv[0] or anything else controllable by the user.
I think that may well be equivalent to "only if you're running on Mac OS X", OS X being the only UN*X I know of where the exec* calls pass an absolute path to the executable along with the argument list and environment (done, I think, for the benefit of app bundles), and I'm not even sure that's guaranteed not to be foolable by playing games with symbolic links.