You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.1 KiB
41 lines
1.1 KiB
1 year ago
|
From fa329f37dca4a2c938f8abb50ee4a7ef93e64fbb Mon Sep 17 00:00:00 2001
|
||
|
From: Alex Tutubalin <lexa@lexa.ru>
|
||
|
Date: Mon, 12 Apr 2021 13:21:52 +0300
|
||
|
Subject: [PATCH] check for input buffer size on datastream::gets
|
||
|
|
||
|
---
|
||
|
src/libraw_datastream.cpp | 3 +++
|
||
|
1 file changed, 3 insertions(+)
|
||
|
|
||
|
diff --git a/src/libraw_datastream.cpp b/src/libraw_datastream.cpp
|
||
|
index 606e5de73618..7e95bc749688 100644
|
||
|
--- a/src/libraw_datastream.cpp
|
||
|
+++ b/src/libraw_datastream.cpp
|
||
|
@@ -286,6 +286,7 @@ INT64 LibRaw_file_datastream::tell()
|
||
|
|
||
|
char *LibRaw_file_datastream::gets(char *str, int sz)
|
||
|
{
|
||
|
+ if(sz<1) return NULL;
|
||
|
LR_STREAM_CHK();
|
||
|
std::istream is(f.get());
|
||
|
is.getline(str, sz);
|
||
|
@@ -417,6 +418,7 @@ INT64 LibRaw_buffer_datastream::tell()
|
||
|
|
||
|
char *LibRaw_buffer_datastream::gets(char *s, int sz)
|
||
|
{
|
||
|
+ if(sz<1) return NULL;
|
||
|
unsigned char *psrc, *pdest, *str;
|
||
|
str = (unsigned char *)s;
|
||
|
psrc = buf + streampos;
|
||
|
@@ -609,6 +611,7 @@ INT64 LibRaw_bigfile_datastream::tell()
|
||
|
|
||
|
char *LibRaw_bigfile_datastream::gets(char *str, int sz)
|
||
|
{
|
||
|
+ if(sz<1) return NULL;
|
||
|
LR_BF_CHK();
|
||
|
return fgets(str, sz, f);
|
||
|
}
|
||
|
--
|
||
|
2.39.2
|
||
|
|