Petr Gajdos 2017-05-23 09:16:14 +00:00 committed by Git OBS Bridge
parent 25e3a98c17
commit b99517535d

View File

@ -11,24 +11,22 @@ Subject: [PATCH] Secunia SA75000 advisory: several buffer overruns
Index: LibRaw-0.18.2/dcraw/dcraw.c Index: LibRaw-0.18.2/dcraw/dcraw.c
=================================================================== ===================================================================
--- LibRaw-0.18.2.orig/dcraw/dcraw.c 2017-05-23 10:30:39.264790336 +0200 --- LibRaw-0.18.2.orig/dcraw/dcraw.c 2017-05-23 10:30:39.264790336 +0200
+++ LibRaw-0.18.2/dcraw/dcraw.c 2017-05-23 10:33:01.327208294 +0200 +++ LibRaw-0.18.2/dcraw/dcraw.c 2017-05-23 11:15:45.574900958 +0200
@@ -5841,8 +5841,14 @@ int CLASS parse_tiff_ifd (int base) @@ -5841,7 +5841,12 @@ int CLASS parse_tiff_ifd (int base)
if (!strcmp(model,"DSLR-A100") && tiff_ifd[ifd].width == 3872) { if (!strcmp(model,"DSLR-A100") && tiff_ifd[ifd].width == 3872) {
load_raw = &CLASS sony_arw_load_raw; load_raw = &CLASS sony_arw_load_raw;
data_offset = get4()+base; data_offset = get4()+base;
- ifd++; break; - ifd++; break;
+ ifd++; + ifd++;
+#ifdef LIBRAW_LIBRARY_BUILD +#ifdef LIBRAW_LIBRARY_BUILD
+ if (ifd >= sizeof tiff_ifd / sizeof tiff_ifd[0]) + if (ifd >= sizeof tiff_ifd / sizeof tiff_ifd[0])
+ throw LIBRAW_EXCEPTION_IO_CORRUPT; + throw LIBRAW_EXCEPTION_IO_CORRUPT;
+#endif +#endif
+ break;
} }
+ /* not sure what is meant by that :) */
+ break;
while (len--) { while (len--) {
i = ftell(ifp); i = ftell(ifp);
fseek (ifp, get4()+base, SEEK_SET); @@ -6005,6 +6010,8 @@ int CLASS parse_tiff_ifd (int base)
@@ -6005,6 +6011,8 @@ int CLASS parse_tiff_ifd (int base)
break; break;
case 50454: /* Sinar tag */ case 50454: /* Sinar tag */
case 50455: case 50455: