From 57b07c4545c994b1bcac56384fc3387357c3933a Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 21 Mar 2018 15:35:32 +0100 Subject: [PATCH 1/2] Fixed header param parsing & dump if header as no value --- src/content/header-param.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/content/header-param.cpp b/src/content/header-param.cpp index 31c89caa5..cbc07d8a7 100644 --- a/src/content/header-param.cpp +++ b/src/content/header-param.cpp @@ -42,11 +42,12 @@ HeaderParam::HeaderParam (const string ¶m) : ClonableObject(*new HeaderParam size_t pos = param.find("="); size_t end = param.length(); - if (pos == string::npos) - return; - - setName(param.substr(0, pos)); - setValue(param.substr(pos + 1, end)); + if (pos == string::npos) { + setName(param); + } else { + setName(param.substr(0, pos)); + setValue(param.substr(pos + 1, end)); + } } HeaderParam::HeaderParam (const string &name, const string &value) : ClonableObject(*new HeaderParamPrivate) { @@ -98,7 +99,9 @@ bool HeaderParam::setValue (const string &value) { string HeaderParam::asString () const { L_D(); - string asString = ";" + d->name + "=" + d->value; + string asString = ";" + d->name; + if (!d->value.empty()) + asString += "=" + d->value; return asString; } From 5fd6a68b94d7111c15bdfd3a8583bc111aaf335e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 21 Mar 2018 16:09:36 +0100 Subject: [PATCH 2/2] Fixed another issue with ContentType & HeaderParam constructors doing parsing --- src/content/content-type.cpp | 2 +- src/content/header-param.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/content-type.cpp b/src/content/content-type.cpp index 6036f3d46..4af2f2195 100644 --- a/src/content/content-type.cpp +++ b/src/content/content-type.cpp @@ -75,7 +75,7 @@ ContentType::ContentType (const string &contentType) : ClonableObject(*new Conte string token; do { posParam = params.find(";"); - if (posParam != string::npos) { + if (posParam == string::npos) { token = params; } else { token = params.substr(0, posParam); diff --git a/src/content/header-param.cpp b/src/content/header-param.cpp index cbc07d8a7..9605a2f84 100644 --- a/src/content/header-param.cpp +++ b/src/content/header-param.cpp @@ -46,7 +46,7 @@ HeaderParam::HeaderParam (const string ¶m) : ClonableObject(*new HeaderParam setName(param); } else { setName(param.substr(0, pos)); - setValue(param.substr(pos + 1, end)); + setValue(param.substr(pos + 1, end - (pos + 1))); } }