2023-05-31 Fred Gleason <fredg@paravelsystems.com>

* Fixed a regression in 'RDFormPost' that caused the last character
	of the last variable in the post to be truncated when using
	'application/x-www-form-urlencoded' encoding.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason
2023-05-31 13:33:26 -04:00
parent dba2fe299b
commit ac91f3fcfc
3 changed files with 51 additions and 1 deletions

View File

@@ -414,6 +414,50 @@ QString RDFormPost::headerContentType() const
}
QByteArray RDFormPost::rawPost() const
{
return QByteArray(post_data,post_bytes_downloaded);
}
QString RDFormPost::parsedPost() const
{
QString ret="";
ret+="<table cellpadding=\"5\" cellspacing=\"0\" border=\"1\">\n";
ret+="<tr>\n";
ret+="<td colspan=\"3\" align=\"center\"><strong>RDFormPost Data Dump</strong></td>\n";
ret+="</tr>\n";
ret+="<tr>\n";
ret+="<th align=\"center\">NAME</th>\n";
ret+="<th align=\"center\">VALUE</th>\n";
ret+="<th align=\"center\">FILE</th>\n";
ret+="</tr>\n";
for(QMap<QString,QVariant>::const_iterator ci=post_values.begin();
ci!=post_values.end();ci++) {
ret+="<tr>\n";
ret+=QString::asprintf("<td align=\"left\">|%s|</td>\n",ci.key().toUtf8().constData());
ret+=QString::asprintf("<td align=\"left\">|%s|</td>\n",
ci.value().toString().toUtf8().constData());
if(post_filenames[ci.key()]) {
ret+="<td align=\"center\">Yes</td>\n";
}
else {
ret+="<td align=\"center\">No</td>\n";
}
ret+="</tr>\n";
}
ret+="</table>\n";
return ret;
}
void RDFormPost::dump()
{
printf("Content-type: text/html\n\n");
@@ -576,7 +620,7 @@ void RDFormPost::LoadUrlEncoding(char first)
total_read+=n;
}
post_data[total_read]=0;
post_data[total_read+1]=0;
lines=QString(post_data).split("&");
for(int i=0;i<lines.size();i++) {

View File

@@ -58,6 +58,8 @@ class RDFormPost
QString tempDir() const;
unsigned headerContentLength() const;
QString headerContentType() const;
QByteArray rawPost() const;
QString parsedPost() const;
void dump();
void dumpRawPost();
static QString errorString(RDFormPost::Error err);