cpp: how to use macro argument as dataflow sink

Ouverte
#21,824 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Documentation
Clarté
À clarifier
Activité
Calme
Stack technique
cpp
Domaine
security

Piste de recherche

Commencez par le prédicat CodeQL de l’issue et consultez les points d’entrée mentionnés, MacroInvocation, getArgument et getExpandedArgument. Déterminez comment les arguments de macro peuvent être représentés sous forme de nœuds de flux de données, ou si cela n’est pas pris en charge, et documentez un exemple fonctionnel ou la limitation afin que la question ait une réponse définitive.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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?

Langage dominant
CodeQL
Étoiles
10.1k
Forks
2.1k
Merge moyen
2 j 11 h
PR mergées (30 j)
129

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de github/codeql

Toutes les issues de github/codeql

Issues similaires

Plus d'issues Security

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.