Merge "Tell bionic when we overwrite argv[0]."
This commit is contained in:
@@ -342,6 +342,8 @@ AndroidRuntime::~AndroidRuntime()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AndroidRuntime::setArgv0(const char* argv0, bool setProcName) {
|
void AndroidRuntime::setArgv0(const char* argv0, bool setProcName) {
|
||||||
|
// Set the kernel's task name, for as much of the name as we can fit.
|
||||||
|
// The kernel's TASK_COMM_LEN minus one for the terminating NUL == 15.
|
||||||
if (setProcName) {
|
if (setProcName) {
|
||||||
int len = strlen(argv0);
|
int len = strlen(argv0);
|
||||||
if (len < 15) {
|
if (len < 15) {
|
||||||
@@ -350,8 +352,14 @@ void AndroidRuntime::setArgv0(const char* argv0, bool setProcName) {
|
|||||||
pthread_setname_np(pthread_self(), argv0 + len - 15);
|
pthread_setname_np(pthread_self(), argv0 + len - 15);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Directly change the memory pointed to by argv[0].
|
||||||
memset(mArgBlockStart, 0, mArgBlockLength);
|
memset(mArgBlockStart, 0, mArgBlockLength);
|
||||||
strlcpy(mArgBlockStart, argv0, mArgBlockLength);
|
strlcpy(mArgBlockStart, argv0, mArgBlockLength);
|
||||||
|
|
||||||
|
// Let bionic know that we just did that, because __progname points
|
||||||
|
// into argv[0] (https://issuetracker.google.com/152893281).
|
||||||
|
setprogname(mArgBlockStart);
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t AndroidRuntime::callMain(const String8& className, jclass clazz,
|
status_t AndroidRuntime::callMain(const String8& className, jclass clazz,
|
||||||
|
|||||||
Reference in New Issue
Block a user