Как найти вызовы функций выполнения базы данных в CodeQL Python?Python

Программы на Python
Ответить
Anonymous
 Как найти вызовы функций выполнения базы данных в CodeQL Python?

Сообщение Anonymous »

Я пытаюсь найти все вызовы функций выполнения, присутствующие в репозитории конкретных функций драйвера, используя Python CodeQL. Например, в приведенном ниже фрагменте кода я хочу найти метод выполнения, который является методом курсора, а курсор является методом aiomysql.connect.

Код: Выделить всё

import aiomysql
import asyncio

loop = asyncio.get_event_loop()

async def fetch(cfg: dict):
records = []

if cfg["gmysql-enabled"]:
conn = None
try:
conn = await aiomysql.connect(
host=cfg['gmysql-host'], port=int(cfg['gmysql-port']),
user=cfg['gmysql-user'], password=cfg['gmysql-password'],
db=cfg['gmysql-dbname'], loop=loop
)

async with conn.cursor() as cur:
await cur.execute("""
SELECT domains.name, records.name, records.type, ttl, content, prio
FROM records INNER JOIN domains
WHERE records.domain_id=domains.id
""")
r = await cur.fetchall()
records = list(r)
except Exception as e:

finally:
if conn is not None:
await conn.ensure_closed()
return records
Теперь я могу найти вызовы метода aiomysql.connect, используя приведенный ниже код.

Код: Выделить всё

class AiomysqlCall extends DataFlow::Node {
AiomysqlCall() {
this = API::moduleImport("aiomysql").getMember("connect").getACall()
}
}
Однако, когда я попытался получить доступ к методу выполнения, я не получил никакого результата.

Код: Выделить всё

class AiomysqlCall extends DataFlow::Node {
AiomysqlCall() {
this = API::moduleImport("aiomysql").getMember("connect").getMember("cursor").getMember("execute").getACall()
}
}
Как получить вызов метода «execute» с помощью Python CodeQL?

Подробнее здесь: https://stackoverflow.com/questions/791 ... eql-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»