Skip to content

Set fuzzer author as reporter for bugs from external fuzzers#5312

Open
jr2bg wants to merge 10 commits into
masterfrom
feature/report-by-fuzzer-owner
Open

Set fuzzer author as reporter for bugs from external fuzzers#5312
jr2bg wants to merge 10 commits into
masterfrom
feature/report-by-fuzzer-owner

Conversation

@jr2bg

@jr2bg jr2bg commented Jun 4, 2026

Copy link
Copy Markdown

Changes:

  • Added primary_owner field to Fuzzer model in data_types.py.
  • Added "Primary owner" input field to the fuzzer edit form in edit-form.html.
  • Updated fuzzers.py handler to save the primary_owner field.
  • Updated file_issue in issue_filer.py to use fuzzer.primary_owner as the reporter if available.
  • Added unit tests in issue_filer_test.py to verify the new behavior.

Feature tests


Show “owner” textbox

Preconditions

  1. Code already on dev instance

Steps

  1. Enter to https://gosst.development.clusterfuzz.com/fuzzers
  2. Click “CREATE NEW”
  3. Screenshot on the popup, highlighting the “Primary owner (email)” textbox

Evidence

Step 3
Screenshot 2026-07-16 at 9 18 28 a m


Show owner entry on Pantheon Audit Logs

Preconditions

  1. Code already on dev instance

Steps

  1. Enter to https://gosst.development.clusterfuzz.com/fuzzers
  2. Click “CREATE NEW”
  3. Fill the form with the next information
    • Name: new_fuzzer_with_owner_jabg
    • Select/modify jobs: libfuzzer_chrome_asan
    • Owner: jabgonzalez@google.com
    • Corpus: None
    • Fuzzer archive: ???
    • Environment variables: None
    • External contribution: True
  4. Click “Submit”
  5. Go to dev logs https://pantheon.corp.google.com/logs/query;cursorTimestamp=2026-04-21T13:41:59.977146Z?e=-13802955&mods=logs_tg_prod&project=clusterfuzz-development and search for the new fuzzer
  6. Take a screenshot of the result, highlighting the “Primary owner (email)” entry
  7. Go to https://gosst.development.clusterfuzz.com/fuzzers
  8. Search the recently created fuzzer new_fuzzer_with_owner_jabg
  9. Take a screenshot

Evidence

Step 6
Screenshot 2026-07-16 at 1 48 59 p m

Step 10
Screenshot 2026-07-16 at 1 52 00 p m

@jr2bg
jr2bg requested a review from dylanjew June 4, 2026 14:11
@jr2bg
jr2bg requested a review from a team as a code owner June 4, 2026 14:11

@dylanjew dylanjew left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job overall!

A couple things:

  1. Change the branch to merge this into master

  2. Please run python butler.py format and python butler.py lint

  3. Could you add a section to your description explaining the steps that you went through to test this? It would be great to include screenshots of this is in dev and then verifying the field in the Datastore. Let me know if you have any questions

  4. Similarly, the backfill script component of this bug probably warrants another section in the PR description. It should cover the order of operations for rolling out this change and how you're going to get the primary owner data for the backfill. Again, lmk if I can help with this. The state of our blackbox fuzzers is not great, and there are many that we need to track down their status/owners.

Comment thread scripts/migrate_fuzzer_owners.py Outdated
Comment thread scripts/migrate_fuzzer_owners.py Outdated
Comment thread scripts/migrate_fuzzer_owners.py Outdated
Comment thread src/clusterfuzz/_internal/datastore/data_types.py Outdated
Comment thread src/clusterfuzz/_internal/issue_management/issue_filer.py Outdated
Comment thread scripts/migrate_fuzzer_owners.py Outdated
Comment thread scripts/migrate_fuzzer_owners.py Outdated
Comment thread scripts/migrate_fuzzer_owners.py Outdated
Comment thread src/clusterfuzz/_internal/tests/appengine/libs/issue_filer_test.py Outdated
Comment thread src/clusterfuzz/_internal/tests/appengine/libs/issue_filer_test.py Outdated
@jr2bg
jr2bg changed the base branch from dev to master June 12, 2026 20:03
@jr2bg
jr2bg force-pushed the feature/report-by-fuzzer-owner branch 2 times, most recently from 71a3845 to 1c3affd Compare June 15, 2026 18:52
@jr2bg
jr2bg force-pushed the feature/report-by-fuzzer-owner branch from 1c3affd to e4b33cd Compare July 16, 2026 13:51
Comment thread src/clusterfuzz/_internal/issue_management/issue_filer.py Outdated
Comment thread src/clusterfuzz/_internal/issue_management/issue_filer.py Outdated
Comment thread src/local/butler/scripts/migrate_fuzzer_owners.py Outdated
Comment thread src/appengine/handlers/fuzzers.py
Comment thread src/appengine/private/components/fuzzers-page/edit-form.html Outdated
# Intercept new_issue so we can capture the saved issue object.
original_new_issue = issue_tracker.new_issue

def mock_new_issue():

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer to mock as little as possible and keep the mocks to the external calls, e.g. the _execute request in test_filed_issue_google_issue_tracker


issue.reporter = user_email
if fuzzer and getattr(fuzzer, 'primary_owner', None):
issue.reporter = fuzzer.primary_owner

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We sometimes use the reporter to determine whether clusterfuzz filed the bug. Is there another place where we are setting metadata of some kind, e.g. a label/hotlist that stays on the bug so that we can continue to track clusterfuzz filed bugs?

@jr2bg
jr2bg force-pushed the feature/report-by-fuzzer-owner branch from e4b33cd to 4eb3238 Compare July 23, 2026 13:35
@jr2bg
jr2bg force-pushed the feature/report-by-fuzzer-owner branch from 4921ce2 to 5c0f78e Compare July 23, 2026 17:24
@jr2bg
jr2bg requested a review from vitaliset July 23, 2026 20:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants