facebook / facebook/zstd

这个是整数溢出的问题(Integer Overflow Vulnerability) util.c mallocAndJoin2Dir

オープン
#4,642 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
C
スター
27.9k
フォーク
2.6k
平均マージ
1日 3時間
マージ済み PR(30日)
8

説明

这个是整数溢出的问题
programs/util.c

``` c
static char* mallocAndJoin2Dir(const char *dir1, const char *dir2)
{
assert(dir1 != NULL && dir2 != NULL);
{ const size_t dir1Size = strlen(dir1);
const size_t dir2Size = strlen(dir2);
char *outDirBuffer, *buffer;

当 (dir1Size + dir2Size +2) 的值溢出后,会变成一个小于实际需要的值(size_t 是unsigned long), 会导致后面的 mempcy 出错
outDirBuffer = (char *) malloc(dir1Size + dir2Size + 2);
CONTROL(outDirBuffer != NULL);

memcpy(outDirBuffer, dir1, dir1Size);
outDirBuffer[dir1Size] = '\0';

buffer = outDirBuffer + dir1Size;
if (dir1Size > 0 && *(buffer - 1) != PATH_SEP) {
*buffer = PATH_SEP;
buffer++;
}
memcpy(buffer, dir2, dir2Size);
buffer[dir2Size] = '\0';

return outDirBuffer;
}
}
```

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

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

評価

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

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

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