cpp: how to use macro argument as dataflow sink

Aperta
#21,824 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Documentazione
Chiarezza
Da chiarire
Stato di attività
Tranquilla
Stack tecnologico
cpp
Ambito
security

Direzione di ricerca

Inizia con il predicato CodeQL nell’issue e leggi gli entry point menzionati, MacroInvocation, getArgument e getExpandedArgument. Determina come gli argomenti delle macro possano essere rappresentati come nodi del flusso di dati, oppure se ciò non sia supportato, e documenta un esempio funzionante o la limitazione, in modo che la domanda abbia una risposta definitiva.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

I would like to do something like this:

  predicate isSink(DataFlow::Node sink) {
    exists(MacroInvocation m |
      sink.asExpr() = m.getArgument(0)
      and m.getTarget().getName() = "my_cool_macro"
    )
  }

But getArgument is not defined, and getExpandedArgument returns a string. Doing sink.asExpr().toString() = m.getExpandedArgument(0) returns zero matches.

How do I use macros in dataflow?

Lingua principale
CodeQL
Stelle
10.1k
Fork
2.1k
Merge medio
2g 11h
PR unite (30g)
129

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di github/codeql

Tutte le issue di github/codeql

Issue simili

Altre issue su Security

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.