cpp: how to use macro argument as dataflow sink

Aberta
#21,824 3 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
35/100
Tipo de issue
Documentação
Clareza
Precisa de esclarecimento
Status de atividade
Pouca atividade
Stack de tecnologia
cpp
Domínio
security

Direção de pesquisa

Comece pelo predicado CodeQL na issue e leia os entry points mencionados, MacroInvocation, getArgument e getExpandedArgument. Determine como os argumentos de macro podem ser representados como nós de fluxo de dados, ou se isso não é compatível, e documente um exemplo funcional ou a limitação para que a questão tenha uma resposta definitiva.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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?

Linguagem predominante
CodeQL
Estrelas
10.1k
Forks
2.1k
Merge médio
2d 10h
PRs com merge (30d)
134

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de github/codeql

Todas as issues de github/codeql

Issues semelhantes

Mais issues de Security

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.