Closed Bug 148674 Opened 22 years ago Closed 22 years ago

Boolean Charts don't work in Netpositive because '-' is sent as '%2D'


(Bugzilla :: Query/Bug List, defect)

Not set



Bugzilla 2.14


(Reporter: timeless, Assigned: timeless)




(Whiteboard: applied to 2.14.2)


(1 file)

We need to treat this url:
the same as we treat this url:

User-Agent: Mozilla/3.0 (compatible; NetPositive/2.2)

Be lenient in what you accept.
Attached patch url_decode nameSplinter Review
Comment on attachment 85984 [details] [diff] [review]
url_decode name

Looks like it should solve the symptoms of the problem.

Also, I looked at the code on the 2.14.1-BRANCH and it has the same problem;
justdave: should this be "wanted for 2.14.2"? This seems low-risk/useful enough
to include there as well.

Attachment #85984 - Flags: review+
-> patch author
Assignee: endico → timeless
Comment on attachment 85984 [details] [diff] [review]
url_decode name

r= justdave

fix is pretty obvious, and I can't imagine it breaking anything.  I've posted
to the reviewers list regarding the suggestion of including this in 2.14.2.
Attachment #85984 - Flags: review+
Severity: normal → major
Target Milestone: --- → Bugzilla 2.16
Are we sure that we can do this? ie is there somewhere where something won't be
escaped, but will look like it is? There shouldn't be, of course, but...

The real fix is to use
Severity: major → normal
Target Milestone: Bugzilla 2.16 → ---
Target Milestone: --- → Bugzilla 2.16
But we are using  In fact, that's what this patch is patching. :)
Err,, rather.

You know, the standard perl module which should handle almost anything we throw
at it.... (Yes, I know we can't use it ATM for various reasons)
For reference, here's the relevant chunk of code from

sub parse_params {
    my($self,$tosplit) = @_;
    my(@pairs) = split(/[&;]/,$tosplit);
    foreach (@pairs) {
        ($param,$value) = split('=',$_,2);
        $param = unescape($param);
        $value = unescape($value);
        push (@{$self->{$param}},$value);

Notice it does the unescape both on the name and the value.  So we're in the clear.
Fair enough. OK, lets get this into the 2.16 branch and trunk - the general
consensus was that we didn't want this for 2.14.
fixed on HEAD and BUGZILLA-2_16-BRANCH
Closed: 22 years ago
Resolution: --- → FIXED
OK, in light of:

which timeless brought up on IRC, looks like this qualifies as a security bug
after all....

the group bits are defined in the form as "bit-1", "bit-2", "bit-512" etc.

If a member of one of those groups makes ANY changes to that bug with a browser
that encodes the param names this way, those become "bit%2D1" etc.  And since
the "bit-1" field isn't present in the form, it gets removed, thus making the
bug public without the user's intention to do so.
Whiteboard: wanted for 2.14.2
fixed on BUGZILLA-2_14_1-BRANCH
Whiteboard: wanted for 2.14.2
Target Milestone: Bugzilla 2.16 → Bugzilla 2.14
Version: 2.15 → 2.14.1
I don't really mind here, but just having the tag "security" doesn't make it
serious without the "exploitable" tag.  If this was the case, you should also
bring bug #130821 and bug #63018 onto the branch.
Whiteboard: applied to 2.14.2
QA Contact: matty_is_a_geek → default-qa
You need to log in before you can comment on or make changes to this bug.