Skip to content

ARVO reproducer for OSS-Fuzz Merging#6

Open
n132 wants to merge 453 commits intomainfrom
ARVO-OSS-Fuzz
Open

ARVO reproducer for OSS-Fuzz Merging#6
n132 wants to merge 453 commits intomainfrom
ARVO-OSS-Fuzz

Conversation

@n132
Copy link
Owner

@n132 n132 commented May 13, 2025

New Feat:
ARVO reproducer for OSS-Fuzz

Done:

  • Initial Version of Reproducer

Todo:

  • Tests

Copy link
Collaborator

@oliverchang oliverchang left a comment

Choose a reason for hiding this comment

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

thanks! some surface level / style comments for now, will take a closer look!

Can you please also use yapf to format these files (using
https://github.com/google/oss-fuzz/blob/master/.style.yapf for the style config?)

'BuildData', ['project_name', 'engine', 'sanitizer', 'architecture'])
warnings.filterwarnings("ignore", category=UserWarning, module="google.auth._default")
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
class DfTool():
Copy link
Collaborator

Choose a reason for hiding this comment

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

nit: I assume this is a Df is short for Dockerfile?

Could we please rename this DockerfileModifier to be clearer?

Copy link
Owner Author

Choose a reason for hiding this comment

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

nit: I assume this is a Df is short for Dockerfile?

Could we please rename this DockerfileModifier to be clearer?

I fixed the naming issue at c499d6

return new/self.name
except:
return False
def getRecentCommit(self,commits_list,time_seconds=3600*24*(2.5)):
Copy link
Collaborator

Choose a reason for hiding this comment

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

can we consistently rename functions to have snake_case ?

Copy link
Owner Author

Choose a reason for hiding this comment

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

can we consistently rename functions to have snake_case ?

The scripts' naming style is changed in b2541b

else:
return False
return tmp
class GitTool():
Copy link
Collaborator

Choose a reason for hiding this comment

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

nit: this is more like a VersionControlTool instead of just GitTool right?

Copy link
Owner Author

Choose a reason for hiding this comment

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

nit: this is more like a VersionControlTool instead of just GitTool right?

The naming issue is fixed at 2f3f6e

if res['project'] == "NOTFOUND":
res['project'] = res['job_type'].split("_")[-1]
return res
def fetchIssue(localId):
Copy link
Collaborator

Choose a reason for hiding this comment

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

can you add a TODO here to replace this with proper issue tracker API calls?

Copy link
Owner Author

Choose a reason for hiding this comment

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

can you add a TODO here to replace this with proper issue tracker API calls?

Issue was fixed in a1c8d5

if not file.exists():
return True
dft = DfTool(file)
if pname == "uwebsockets":
Copy link
Collaborator

Choose a reason for hiding this comment

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

does it make sense to put this inside arvo_data.py instead so we have a single place for these one-off replacements?

Copy link
Owner Author

Choose a reason for hiding this comment

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

I refactored the structure of the reproducer and move project hacks to arvo_data:

1b7339,7c21ba,ef70c3,3611e1,0f533c

dft.replaceOnce(r'RUN apt',"RUN apt update -y && apt install git ca-certificates -y && git config --global http.sslVerify false && git config --global --add safe.directory '*'\nRUN apt")
dft.strReplaceAll(globalStrReplace)

if project == "lcms":
Copy link
Collaborator

Choose a reason for hiding this comment

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

same comment here -- can we add these per-project hacks in arvo_data.py ?

Copy link
Owner Author

Choose a reason for hiding this comment

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

Same as the previous issue, I solved them in

1b7339
7c21ba
ef70c3
3611e1
0f533c

@n132
Copy link
Owner Author

n132 commented May 14, 2025

thanks! some surface level / style comments for now, will take a closer look!

Can you please also use yapf to format these files (using https://github.com/google/oss-fuzz/blob/master/.style.yapf for the style config?)

Thanks so much for the code review; I really appreciate it! And I am sorry for the mental damage caused by my code since I just made the code run, but not for reading. I was kind of too busy to refactor it, but I cleaned it a bit now, and I'll reply to each comment with related updates.

For the style issue, I fixed it at 10a0b0.

@n132
Copy link
Owner Author

n132 commented May 15, 2025

  • Add unitTests and reproducing tests

Copy link
Collaborator

@oliverchang oliverchang left a comment

Choose a reason for hiding this comment

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

thank you for addressing the comments!

I have some more suggestions to make the code a bit more readable and maintainable.

Do you also want to move this PR over to the main oss-fuzz repo ?

I think we can create it under infra/experimental/contrib/arvo.

079035 pushed a commit to 079035/oss-fuzz that referenced this pull request Aug 29, 2025
This adds fuzzing support for Arvo under the experimental contrib directory.

Original work from: n132/ARVO#6
@079035
Copy link
Collaborator

079035 commented Aug 31, 2025

Thanks for the review! I've moved this PR to the main oss-fuzz repo at google/oss-fuzz#13897. Signed the CLA form.

Please Let us know if there are more action items needed from our end.

P.S. I had some trouble figuring out email problems with CLA form due to commit history. Inspired by this, I decided to change all my commit's username/email to a single one. No files changed for the last push.

oliverchang added a commit to google/oss-fuzz that referenced this pull request Oct 24, 2025
"Add ARVO fuzzing infrastructure

This adds ARVO under the experimental contrib directory.

Original work from: n132/ARVO#6
Paper: https://arxiv.org/abs/2408.02153"

---------

Co-authored-by: Oliver Chang <oliverchang@users.noreply.github.com>
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.

3 participants