antirez / antirez/rax

Potential null pointer dereferences after calling raxStackPop()

オープン
#34 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
C
スター
1.3k
フォーク
177
PR マージ指標
30日以内にマージされた PR はありません

説明

This is just one example that I'm not sure I fixed correctly (and that's why it's not a PR yet).

```patch
diff --git a/rax.c b/rax.c
index 7dcf045..9a8fcda 100644
--- a/rax.c
+++ b/rax.c
@@ -1056,7 +1056,7 @@ int raxRemove(rax *rax, unsigned char *s, size_t len, void **old) {
h = raxStackPop(&ts);
/* If this node has more then one child, or actually holds
* a key, stop here. */
- if (h->iskey || (!h->iscompr && h->size != 1)) break;
+ if (h != NULL && (h->iskey || (!h->iscompr && h->size != 1))) break;
}
if (child) {
debugf("Unlinking child %p from parent %p\n",
```

Other occurrences appear in:
```
10. rax.c:1468: error: NULL_DEREFERENCE
pointer `it->node` last assigned on line 1461 could be null and is dereferenced at line 1468, column 21.

11. rax.c:1608: error: NULL_DEREFERENCE
pointer `it->node` last assigned on line 1517 could be null and is dereferenced at line 1608, column 26.

12. rax.c:1665: error: NULL_DEREFERENCE
pointer `it->node` last assigned on line 1517 could be null and is dereferenced at line 1665, column 17.

13. rax.c:1755: error: NULL_DEREFERENCE
pointer `n` last assigned on line 1754 could be null and is dereferenced at line 1755, column 25.
```

These may well be false positives found by [infer](https://fbinfer.com/) or simply a rare edge case. If it's the latter, we should address it somehow.

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

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

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

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