Skip to content

Intrafile tainting with variadic functions#538

Merged
maciejpirog merged 2 commits intomainfrom
mpir/taint-intrafile-param-rest
Jan 13, 2026
Merged

Intrafile tainting with variadic functions#538
maciejpirog merged 2 commits intomainfrom
mpir/taint-intrafile-param-rest

Conversation

@maciejpirog
Copy link
Contributor

We add tainting via "rest" params, as in:

def test1(*args):
  for x in args.items():
      sink(x)

test1("abc", source(), "xyz")

This is done by adding a new kind of param (ParamRest in IL and PRest in function tainting signature) that corresponds to ParamRest in AST.

NOTE: In tainting signature db, the arity of a variadic function is still counted as if the "rest" param was a single param, so there might be problems when a variadic function is only one of possible overloads. But fixing that will be part of subsequent effort to upgrade naming and overloading resolution.

@maciejpirog maciejpirog force-pushed the mpir/taint-intrafile-param-rest branch from 43e9ae2 to 12b3064 Compare January 13, 2026 16:50
let sig_details = all_sigs |> List.map (fun s ->
Printf.sprintf "(arity=%d, params=%s)" s.arity
(s.sig_.params |> List.map (function Signature.P s -> "P(" ^ s ^ ")" | Signature.Other -> "Other") |> String.concat ",")
(s.sig_.params |> List.map Signature.show_param |> String.concat ",")
Copy link
Collaborator

Choose a reason for hiding this comment

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

I think we still need the "P(" ... ) part to remain compatible in terms of output?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Same for Other vs _?

(* Debug logging for ALL signatures being added *)
let fn_name_str = show_fn_id func_name in
let params_str = signature.sig_.params |> List.map (function Signature.P s -> "P(" ^ s ^ ")" | Signature.Other -> "Other") |> String.concat "," in
let params_str = signature.sig_.params |> List.map Signature.show_param |> String.concat "," in
Copy link
Collaborator

Choose a reason for hiding this comment

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

Ok, maybe better, not sure. Maybe print P(...) and PRest(...) ?

This could be done by adapting show_, not necessarily here.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It is for logging only, I believe

Copy link
Collaborator

Choose a reason for hiding this comment

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

Up to you, lgtm for me.

@dimitris-m dimitris-m added taint enhancement New feature or request labels Jan 13, 2026
@maciejpirog maciejpirog merged commit 5fb2b86 into main Jan 13, 2026
6 checks passed
@maciejpirog maciejpirog deleted the mpir/taint-intrafile-param-rest branch January 13, 2026 17:05
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Jan 17, 2026
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [opengrep/opengrep](https://github.com/opengrep/opengrep) | minor | `v1.14.1` → `v1.15.1` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>opengrep/opengrep (opengrep/opengrep)</summary>

### [`v1.15.1`](https://github.com/opengrep/opengrep/releases/tag/v1.15.1): Opengrep 1.15.1

[Compare Source](opengrep/opengrep@v1.15.0...v1.15.1)

#### Bug fixes

- Clojure translation improvements by [@&#8203;dimitris-m](https://github.com/dimitris-m) in [#&#8203;534](opengrep/opengrep#534)

**Full Changelog**: <opengrep/opengrep@v1.15.0...v1.15.1>

### [`v1.15.0`](https://github.com/opengrep/opengrep/releases/tag/v1.15.0): Opengrep 1.15.0

[Compare Source](opengrep/opengrep@v1.14.1...v1.15.0)

#### What's Changed

- Clojure translation part III by [@&#8203;dimitris-m](https://github.com/dimitris-m) in [#&#8203;527](opengrep/opengrep#527)
- Php modernisation by [@&#8203;corneliuhoffman](https://github.com/corneliuhoffman) in [#&#8203;529](opengrep/opengrep#529)
- Intrafile tainting with variadic functions by [@&#8203;maciejpirog](https://github.com/maciejpirog) in [#&#8203;538](opengrep/opengrep#538)
- C#: The `field` implicit parameter can be skipped in a pattern by [@&#8203;maciejpirog](https://github.com/maciejpirog) in [#&#8203;525](opengrep/opengrep#525)
- C#: Add conditional array access (`?[...]`) to l-values by [@&#8203;maciejpirog](https://github.com/maciejpirog) in [#&#8203;535](opengrep/opengrep#535)
- C#: Collection expressions vs attributes with targets (parser fix) by [@&#8203;maciejpirog](https://github.com/maciejpirog) in [#&#8203;539](opengrep/opengrep#539)
- Add `noopengrep` to the default nosem patterns by [@&#8203;dimitris-m](https://github.com/dimitris-m) in [#&#8203;533](opengrep/opengrep#533)

**Full Changelog**: <opengrep/opengrep@v1.14.1...v1.15.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44MS4yIiwidXBkYXRlZEluVmVyIjoiNDIuODIuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90IiwiYXV0b21hdGlvbjpib3QtYXV0aG9yZWQiLCJkZXBlbmRlbmN5LXR5cGU6Om1pbm9yIl19-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request taint

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants