@@ -95,8 +95,9 @@ bool DeviceGate::isOkay() {
9595 return false ;
9696 }
9797
98- char *respBuffer = new char [request.RequestSize ];
98+ char *respBuffer = new char [request.RequestSize + 1 ];
9999 XLinkPlatformGateRead (respBuffer, request.RequestSize );
100+ respBuffer[request.RequestSize ]= ' \0 ' ;
100101
101102 bool result = nlohmann::json::parse (respBuffer)[" status" ].get <bool >();
102103 delete[] respBuffer;
@@ -123,8 +124,9 @@ Version DeviceGate::getVersion() {
123124 return Version{0 , 0 , 0 };
124125 }
125126
126- char *respBuffer = new char [request.RequestSize ];
127+ char *respBuffer = new char [request.RequestSize + 1 ];
127128 XLinkPlatformGateRead (respBuffer, request.RequestSize );
129+ respBuffer[request.RequestSize ]= ' \0 ' ;
128130
129131 auto result = nlohmann::json::parse (respBuffer)[" version_gate" ].get <std::string>();
130132 delete[] respBuffer;
@@ -155,8 +157,9 @@ DeviceGate::VersionInfo DeviceGate::getAllVersion() {
155157 return {};
156158 }
157159
158- char *respBuffer = new char [request.RequestSize ];
160+ char *respBuffer = new char [request.RequestSize + 1 ];
159161 XLinkPlatformGateRead (respBuffer, request.RequestSize );
162+ respBuffer[request.RequestSize ]= ' \0 ' ;
160163 auto result = nlohmann::json::parse (respBuffer);
161164 delete[] respBuffer;
162165
@@ -233,8 +236,9 @@ bool DeviceGate::createSession(bool exclusive) {
233236 XLinkPlatformGateWrite ((void *)createSessionBody.dump ().c_str (), createSessionBody.dump ().size ());
234237
235238 XLinkPlatformGateRead (&request, sizeof (request));
236- char *respBuffer = new char [request.RequestSize ];
239+ char *respBuffer = new char [request.RequestSize + 1 ];
237240 XLinkPlatformGateRead (respBuffer, request.RequestSize );
241+ respBuffer[request.RequestSize ]= ' \0 ' ;
238242 auto resp = nlohmann::json::parse (respBuffer);
239243 delete[] respBuffer;
240244 spdlog::debug (" DeviceGate createSession response: {}" , resp.dump ());
@@ -457,8 +461,9 @@ DeviceGate::SessionState DeviceGate::getState() {
457461 return SessionState::ERROR_STATE;
458462 }
459463
460- char *respBuffer = new char [request.RequestSize ];
464+ char *respBuffer = new char [request.RequestSize + 1 ];
461465 XLinkPlatformGateRead (respBuffer, request.RequestSize );
466+ respBuffer[request.RequestSize ]= ' \0 ' ;
462467 auto resp = nlohmann::json::parse (respBuffer);
463468 delete[] respBuffer;
464469 spdlog::trace (" DeviceGate getState response: {}" , resp.dump ());
@@ -512,13 +517,14 @@ std::optional<std::vector<uint8_t>> DeviceGate::getFile(const std::string& fileU
512517 return std::nullopt ;
513518 }
514519
515- char *respBuffer = new char [request.RequestSize ];
520+ char *respBuffer = new char [request.RequestSize + 1 ];
516521 XLinkPlatformGateRead (respBuffer, request.RequestSize );
522+ respBuffer[request.RequestSize ]= ' \0 ' ;
517523 auto resp = nlohmann::json::parse (respBuffer);
518524 delete[] respBuffer;
519525
520526 filename = resp[" filename" ].get <std::string>();
521- std::vector<uint8_t > fileData (resp[" data" ]);
527+ std::vector<uint8_t > fileData (resp[" data" ]. get <std::vector< uint8_t >>() );
522528
523529 spdlog::debug (" File download successful. Filename: {}" , filename);
524530 return fileData;
0 commit comments