If the error message from qLaunchSucess included a gdb RSP
metacharacter, it could crash lldb. Apply the binary
escaping to the string before sending it to lldb; lldb
promiscuously applies the binary escaping protocol on
packets it receives.
Also fix a small bug in cstring_to_asciihex_string where
a high bit character (eg utf-8 chars) would not be
quoted correctly due to signed char fun.
Differential Revision: https://reviews.llvm.org/D79614
rdar://problem/
62873581
return SendPacket("OK");
std::ostringstream ret_str;
std::string status_str;
- ret_str << "E" << m_ctx.LaunchStatusAsString(status_str);
+ std::string error_quoted = binary_encode_string
+ (m_ctx.LaunchStatusAsString(status_str));
+ ret_str << "E" << error_quoted;
return SendPacket(ret_str.str());
}
std::string hex_str;
hex_str.reserve (strlen (str) * 2);
while (str && *str) {
+ uint8_t c = *str++;
char hexbuf[5];
- snprintf (hexbuf, sizeof(hexbuf), "%02x", *str++);
+ snprintf (hexbuf, sizeof(hexbuf), "%02x", c);
hex_str += hexbuf;
}
return hex_str;