From: Maxim Mamontov Date: Sat, 13 Sep 2014 22:01:44 +0000 (+0300) Subject: Handle string for encryption properly. X-Git-Url: https://git.stg.codes/stg.git/commitdiff_plain/ff1555c1d973c2d0aea546b4d20577715e132577?ds=sidebyside Handle string for encryption properly. --- diff --git a/projects/stargazer/plugins/configuration/sgconfig/rsconf.cpp b/projects/stargazer/plugins/configuration/sgconfig/rsconf.cpp index afcb6881..f7e6169e 100644 --- a/projects/stargazer/plugins/configuration/sgconfig/rsconf.cpp +++ b/projects/stargazer/plugins/configuration/sgconfig/rsconf.cpp @@ -480,7 +480,7 @@ while (1) if (ParseCommand()) return SendError(sock, "Bad command"); else - return SendDataAnswer(sock, currParser->GetAnswer()); + return SendDataAnswer(sock, GetDataAnswer()); } } //return 0; @@ -495,13 +495,13 @@ BLOWFISH_CTX ctx; InitContext(adminPassword.c_str(), ADM_PASSWD_LEN, &ctx); std::string::size_type pos = 0; -std::string::size_type length = answer.length(); +std::string::size_type length = answer.length() + 1; while (pos < length) { char buffer[1024]; std::string::size_type chunkLength = std::min(length - pos, sizeof(buffer)); EncryptString(buffer, answer.c_str() + pos, chunkLength, &ctx); - if (send(sock, buffer, chunkLength, 0) < 0) + if (send(sock, buffer, (chunkLength & ~7) < chunkLength ? chunkLength + 8 : chunkLength, 0) < 0) // Need to send data adjusted to the 8-byte boundary. return -1; pos += chunkLength; }