Avoid use of NULL picture data pointers

The sanitizer would scream, and LibRaw would rather confusingly
return I/O errors.
This commit is contained in:
Přemysl Eric Janouch 2023-05-20 23:46:39 +02:00
parent 5af36f4954
commit 00110a639a
Signed by: p
GPG Key ID: A0420B94F92B9493

View File

@ -281,6 +281,12 @@ fiv_thumbnail_extract(GFile *target, FivThumbnailSize max_size, GError **error)
// TODO(p): Implement our own thumbnail extractors. // TODO(p): Implement our own thumbnail extractors.
set_error(error, "unsupported file"); set_error(error, "unsupported file");
#else // HAVE_LIBRAW #else // HAVE_LIBRAW
// In this case, g_mapped_file_get_contents() returns NULL, causing issues.
if (!g_mapped_file_get_length(mf)) {
set_error(error, "empty file");
goto fail;
}
libraw_data_t *iprc = libraw_init( libraw_data_t *iprc = libraw_init(
LIBRAW_OPIONS_NO_MEMERR_CALLBACK | LIBRAW_OPIONS_NO_DATAERR_CALLBACK); LIBRAW_OPIONS_NO_MEMERR_CALLBACK | LIBRAW_OPIONS_NO_DATAERR_CALLBACK);
if (!iprc) { if (!iprc) {
@ -535,7 +541,13 @@ fiv_thumbnail_produce(GFile *target, FivThumbnailSize max_size, GError **error)
return produce_fallback(target, max_size, error); return produce_fallback(target, max_size, error);
} }
// In this case, g_mapped_file_get_bytes() has NULL data, causing issues.
gsize filesize = g_mapped_file_get_length(mf); gsize filesize = g_mapped_file_get_length(mf);
if (!filesize) {
set_error(error, "empty file");
return NULL;
}
gboolean color_managed = FALSE; gboolean color_managed = FALSE;
cairo_surface_t *surface = cairo_surface_t *surface =
render(target, g_mapped_file_get_bytes(mf), &color_managed, error); render(target, g_mapped_file_get_bytes(mf), &color_managed, error);