Issue #345 - discard leading spaces in href

This commit is contained in:
Geoff McLane 2016-02-01 20:07:55 +01:00
parent e8ca2aa5f3
commit 7d0d8a853a

View file

@ -1497,18 +1497,34 @@ void TY_(CheckUrl)( TidyDocImpl* doc, Node *node, AttVal *attval)
else if ((c > 0x7e) || (c <= 0x20) || (strchr("<>", c))) else if ((c > 0x7e) || (c <= 0x20) || (strchr("<>", c)))
++escape_count; ++escape_count;
} }
if ( cfgBool(doc, TidyFixUri) && escape_count ) if ( cfgBool(doc, TidyFixUri) && escape_count )
{ {
Bool hadnonspace = no;
len = TY_(tmbstrlen)(p) + escape_count * 2 + 1; len = TY_(tmbstrlen)(p) + escape_count * 2 + 1;
dest = (tmbstr) TidyDocAlloc(doc, len); dest = (tmbstr) TidyDocAlloc(doc, len);
for (i = 0; 0 != (c = p[i]); ++i) for (i = 0; 0 != (c = p[i]); ++i)
{ {
if ((c > 0x7e) || (c <= 0x20) || (strchr("<>", c))) if ((c > 0x7e) || (c <= 0x20) || (strchr("<>", c)))
pos += sprintf( dest + pos, "%%%02X", (byte)c ); {
if (c == 0x20)
{
/* #345 - special case for leading spaces - discard */
if (hadnonspace)
pos += sprintf( dest + pos, "%%%02X", (byte)c );
}
else
{
pos += sprintf( dest + pos, "%%%02X", (byte)c );
hadnonspace = yes;
}
}
else else
{
hadnonspace = yes;
dest[pos++] = c; dest[pos++] = c;
}
} }
dest[pos] = 0; dest[pos] = 0;