Merge "adb: handle some edge cases with process environments." am: 80f3b0438d
am: 412f6aaead
* commit '412f6aaead3c414fe65e8a9ca129e3218d28f633':
adb: handle some edge cases with process environments.
diff --git a/adb/shell_service.cpp b/adb/shell_service.cpp
index 0f89378..366ed07 100644
--- a/adb/shell_service.cpp
+++ b/adb/shell_service.cpp
@@ -250,13 +250,18 @@
// Construct the environment for the child before we fork.
passwd* pw = getpwuid(getuid());
std::unordered_map<std::string, std::string> env;
+ if (environ) {
+ char** current = environ;
+ while (char* env_cstr = *current++) {
+ std::string env_string = env_cstr;
+ char* delimiter = strchr(env_string.c_str(), '=');
- char** current = environ;
- while (char* env_cstr = *current++) {
- std::string env_string = env_cstr;
- char* delimiter = strchr(env_string.c_str(), '=');
- *delimiter++ = '\0';
- env[env_string.c_str()] = delimiter;
+ // Drop any values that don't contain '='.
+ if (delimiter) {
+ *delimiter++ = '\0';
+ env[env_string.c_str()] = delimiter;
+ }
+ }
}
if (pw != nullptr) {