The default bug view has changed. See this FAQ.

When email_in.pl calls process_bug.cgi in Bugzilla 3.0, no qa_contact field causes update failure

RESOLVED FIXED in Bugzilla 3.0

Status

()

Bugzilla
Creating/Changing Bugs
RESOLVED FIXED
9 years ago
9 years ago

People

(Reporter: Alex Schuilenburg, Assigned: Frédéric Buclin)

Tracking

3.0.3
Bugzilla 3.0
Bug Flags:
approval3.0 +
blocking3.0.4 +

Details

(Whiteboard: [3.0.x branch only][3.2 not affected])

Attachments

(1 attachment, 1 obsolete attachment)

(Reporter)

Description

9 years ago
User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Build Identifier: 3.0.3

With Param('useqacontact') set, when adding only a comment to an existing bug with email_in.pl, process_bug.cgi fails to update when sender is not in caneditbugs group with the error:

You tried to change the
    QA Contact field
      from <Component QA Contact>
    , but only
      the assignee
      of the bug, or
    a sufficiently empowered user may change that field.

<Component QA Contact> is obvioulsy the QA contact for the component.



Reproducible: Always

Steps to Reproduce:
1. Run email_in.pl either directly or through email alias pipe
2. Input or send email with From: field set to a basic user which created the bug and Subject: field set to [Bug XXX] appropriately, with message content a simple comment
3. 
Actual Results:  
View output or receive error that says:
You tried to change the
    QA Contact field
      from <Component QA Contact>
    , but only
      the assignee
      of the bug, or
    a sufficiently empowered user may change that field.

Expected Results:  
Updating Bug XXX

The bug is actually in process_bug.cgi.  

$formhash{'qa_contact'} is set to $qa_contact which may never be defined (e.g. by email_bug.pl), and the later test "exists $formhash{'qa_contact'}" will be true as the value will be undef.

The solution is to only set $formhash{'qa_contact'} when Param('useqacontact') is set AND qa_contact is defined.  See attached patch.
(Reporter)

Comment 1

9 years ago
Created attachment 297761 [details] [diff] [review]
Fix to only define $formhash{'qa_contact'} when $qacontact is also deinfed
(Assignee)

Comment 2

9 years ago
Confirming. This bug also occurs if you hack the URL and omit the QA field.
OS: Windows XP → All
Hardware: PC → All
Target Milestone: --- → Bugzilla 3.0
Version: unspecified → 3.0.3
(Assignee)

Updated

9 years ago
Assignee: create-and-change → alex
Status: UNCONFIRMED → NEW
Ever confirmed: true
(Assignee)

Comment 3

9 years ago
Comment on attachment 297761 [details] [diff] [review]
Fix to only define $formhash{'qa_contact'} when $qacontact is also deinfed

>-    $formhash{'qa_contact'} = $qacontact if Bugzilla->params->{'useqacontact'};
>+    $formhash{'qa_contact'} = $qacontact if (Bugzilla->params->{'useqacontact'} && defined($qacontact));

This fixes the problem with email_in.pl, but introduces a new regression: if a product has no QA contact by default but a QA contact is set on a bug, then your fix lets unprivileged users remove it by hacking the POST data (delete the QA field and set knob = 'reassignbycomponent'). I think I know how to fix the problem. Alex, do you mind if I take the bug and fix it myself, or do you want to give another shot?
Attachment #297761 - Flags: review-
(Assignee)

Updated

9 years ago
Flags: blocking3.0.4?
(Assignee)

Comment 4

9 years ago
Thinking about it a bit more, I wonder if I couldn't already hack the data to reproduce my testcase. Investigating...
(Reporter)

Comment 5

9 years ago
You are most welcome to take the bug and fix it yourself :-)

Updated

9 years ago
Status: NEW → RESOLVED
Last Resolved: 9 years ago
Resolution: --- → DUPLICATE
Duplicate of bug: 391669

Comment 7

9 years ago
Ah, nevermind. I see that this bug applies to 3.0, and the other bug applies to tip, and they're different enough now (that is, process_bug is so different between the releases) that they should have separate bugs.
Status: RESOLVED → REOPENED
Resolution: DUPLICATE → ---
Summary: When email_in.pl call process_bug.cgi, no qa_contact field causes update failure → When email_in.pl calls process_bug.cgi in Bugzilla 3.0, no qa_contact field causes update failure

Updated

9 years ago
Component: Creating/Changing Bugs → Incoming Email

Updated

9 years ago
Component: Incoming Email → Creating/Changing Bugs

Comment 8

9 years ago
And yeah, we should definitely fix this before 3.0.4.
Flags: blocking3.0.4? → blocking3.0.4+
(Assignee)

Comment 9

9 years ago
Created attachment 301160 [details] [diff] [review]
patch, v2

Rather than trying to fix process_bug.cgi and introducing unwanted regressions, I'm fixing email_in.pl to set qa_contact in all cases. If useqacontact is off, $bug->qa_contact is undefined and will be correctly ignored by process_bug.cgi.
Assignee: alex → LpSolit
Attachment #297761 - Attachment is obsolete: true
Status: REOPENED → ASSIGNED
Attachment #301160 - Flags: review?(mkanat)
(Assignee)

Updated

9 years ago
Whiteboard: [3.0.x branch only][3.2 not affected]

Comment 10

9 years ago
Comment on attachment 301160 [details] [diff] [review]
patch, v2

Okay. If you've tested this, this looks sensible.
Attachment #301160 - Flags: review?(mkanat) → review+

Updated

9 years ago
Flags: approval3.0+
(Assignee)

Comment 11

9 years ago
Checking in email_in.pl;
/cvsroot/mozilla/webtools/bugzilla/email_in.pl,v  <--  email_in.pl
new revision: 1.5.2.6; previous revision: 1.5.2.5
done
Status: ASSIGNED → RESOLVED
Last Resolved: 9 years ago9 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.