terminate read strings so that json parsing no longer fails

This commit is contained in:
LordGrimmauld 2024-03-06 17:48:56 +01:00
parent 4a6989f5ea
commit da05b706e4
2 changed files with 3 additions and 7 deletions

View File

@ -21,11 +21,6 @@ using json = nlohmann::json;
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
auto sway = Sway();
auto resp = sway.sendIPC(SWAY_GET_TREE);
json rep = json::parse(resp.msg);
auto rootRecord = SwayRecord(rep);
QApplication a(argc, argv); QApplication a(argc, argv);
QCoreApplication::setOrganizationName("Grimmauld"); QCoreApplication::setOrganizationName("Grimmauld");
QCoreApplication::setApplicationName("SwayMux"); QCoreApplication::setApplicationName("SwayMux");

View File

@ -59,13 +59,14 @@ struct swaymsg {
>> Formatter::to_str); >> Formatter::to_str);
} }
char msgBuff[payloadLen]; char msgBuff[payloadLen + 1];
if ((dlen = recv(sockfd, msgBuff, payloadLen, 0)) != payloadLen) { if ((dlen = recv(sockfd, msgBuff, payloadLen, 0)) != payloadLen) {
throw std::runtime_error( throw std::runtime_error(
Formatter() << "Swaysock: Unexpected length on recv() call for message: " << dlen Formatter() << "Swaysock: Unexpected length on recv() call for message: " << dlen
>> Formatter::to_str); >> Formatter::to_str);
} }
return swaymsg(payloadType, msgBuff, payloadLen); msgBuff[payloadLen] = '\00'; // make sure we have a c-style string that is properly terminated or json parsing gets all weird...
return swaymsg(payloadType, msgBuff, payloadLen + 1);
}; };
constexpr const static char *magic = "i3-ipc"; constexpr const static char *magic = "i3-ipc";