facebook / facebook/zstd

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

Đang mở
#4,642 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
C
Star
27.9k
Fork
2.6k
Merge trung bình
1 ngày 3 giờ
Pull request đã merge (30 ngày)
8

Mô tả

这个是整数溢出的问题
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;
}
}
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.