php / php/php-src

Inconsistent/missing checks for sqlite3 APIs

オープン
#22,051 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

Bug Extension: sqlite3 Status: Needs Triage
主要言語
C
スター
40.4k
フォーク
8.2k
平均マージ
2日 13時間
マージ済み PR(30日)
96

説明

Description

Several calls to sqlite3_reset and sqlite3_finalize are unchecked.

Some calls to sqlite3_reset are checked and then the value is returned to the user:

https://github.com/php/php-src/blob/cde32beadeee04c16d8607266ea7586078fbc9df/ext/sqlite3/sqlite3.c#L1414-L1417

https://github.com/php/php-src/blob/cde32beadeee04c16d8607266ea7586078fbc9df/ext/sqlite3/sqlite3.c#L2101-L2103

Note however an inconsistency between these two: one of them throw/warns and the other one doesn't. This likely needs to be made consistent.

It's probably best if the calls to sqlite3_reset and sqlite3_finalize are checked consistently everywhere.

Note: found by a static-dynamic hybrid analyzer I'm developing.

PHP Version
Checked on master branch
Operating System

N/A

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

ext/sqlite3/sqlite3.c から始めて、1414-1417 行および 2101-2103 行の箇所を含む sqlite3_reset と sqlite3_finalize の呼び出しを監査します。それらのチェック方法と throw/warn の動作を比較します。関連する呼び出しが一貫してチェックされ、異なる動作が整合されれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
c, sqlite
領域
databases
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
48/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。