diff --git a/src/chat/modifier/multipart-chat-message-modifier.cpp b/src/chat/modifier/multipart-chat-message-modifier.cpp index 8e110119e..1365d03f8 100644 --- a/src/chat/modifier/multipart-chat-message-modifier.cpp +++ b/src/chat/modifier/multipart-chat-message-modifier.cpp @@ -77,18 +77,13 @@ ChatMessageModifier::Result MultipartChatMessageModifier::decode (const shared_p return ChatMessageModifier::Result::Error; } - size_t pos = boundary.find("="); - if (pos == string::npos) { - lError() << "Parameter seems invalid: " << boundary; - return ChatMessageModifier::Result::Error; - } - boundary = "--" + boundary.substr(pos + 1); + boundary = "--" + boundary; lInfo() << "Multipart boundary is " << boundary; const vector body = message->getInternalContent().getBody(); string contentsString(body.begin(), body.end()); - pos = contentsString.find(boundary); + size_t pos = contentsString.find(boundary); if (pos == string::npos) { lError() << "Boundary not found in body !"; return ChatMessageModifier::Result::Error; diff --git a/src/content/content-type.cpp b/src/content/content-type.cpp index 72fe78fd2..6036f3d46 100644 --- a/src/content/content-type.cpp +++ b/src/content/content-type.cpp @@ -71,13 +71,18 @@ ContentType::ContentType (const string &contentType) : ClonableObject(*new Conte } if (posParam != string::npos) { - string params = contentType.substr(posParam, end); + string params = contentType.substr(posParam + 1); string token; - while ((pos = params.find(";")) != std::string::npos) { - token = params.substr(0, pos); + do { + posParam = params.find(";"); + if (posParam != string::npos) { + token = params; + } else { + token = params.substr(0, posParam); + } addParameter(HeaderParam(token)); params.erase(0, pos + 1); - } + } while (posParam != std::string::npos); } }