* Fix a crash when scanning images without read access. (SF bug #3395670)
This commit is contained in:
parent
546175743a
commit
1fc5f599f1
@ -482,7 +482,7 @@ image_new_from_jpeg(const char * path, int is_file, const char * buf, int size,
|
||||
if(cinfo.output_components == 3)
|
||||
{
|
||||
ofs = 0;
|
||||
if((ptr = (unsigned char *)malloc(w * 3 * cinfo.rec_outbuf_height + 8)) == NULL)
|
||||
if((ptr = (unsigned char *)malloc(w * 3 * cinfo.rec_outbuf_height + 16)) == NULL)
|
||||
{
|
||||
DPRINTF(E_WARN, L_METADATA, "malloc failed\n");
|
||||
image_free(vimage);
|
||||
|
29
metadata.c
29
metadata.c
@ -592,19 +592,22 @@ no_exifdata:
|
||||
if( image_get_jpeg_resolution(path, &width, &height) != 0 || !width || !height )
|
||||
{
|
||||
infile = fopen(path, "r");
|
||||
cinfo.err = jpeg_std_error(&jerr);
|
||||
jerr.error_exit = libjpeg_error_handler;
|
||||
jpeg_create_decompress(&cinfo);
|
||||
if( setjmp(setjmp_buffer) )
|
||||
goto error;
|
||||
jpeg_stdio_src(&cinfo, infile);
|
||||
jpeg_read_header(&cinfo, TRUE);
|
||||
jpeg_start_decompress(&cinfo);
|
||||
width = cinfo.output_width;
|
||||
height = cinfo.output_height;
|
||||
error:
|
||||
jpeg_destroy_decompress(&cinfo);
|
||||
fclose(infile);
|
||||
if( infile )
|
||||
{
|
||||
cinfo.err = jpeg_std_error(&jerr);
|
||||
jerr.error_exit = libjpeg_error_handler;
|
||||
jpeg_create_decompress(&cinfo);
|
||||
if( setjmp(setjmp_buffer) )
|
||||
goto error;
|
||||
jpeg_stdio_src(&cinfo, infile);
|
||||
jpeg_read_header(&cinfo, TRUE);
|
||||
jpeg_start_decompress(&cinfo);
|
||||
width = cinfo.output_width;
|
||||
height = cinfo.output_height;
|
||||
error:
|
||||
jpeg_destroy_decompress(&cinfo);
|
||||
fclose(infile);
|
||||
}
|
||||
}
|
||||
//DEBUG DPRINTF(E_DEBUG, L_METADATA, " * resolution: %dx%d\n", width, height);
|
||||
|
||||
|
@ -779,7 +779,7 @@ ScanDirectory(const char * dir, const char * parent, enum media_types dir_type)
|
||||
sprintf(parent_id, "%s$%X", (parent ? parent:""), i+startID);
|
||||
ScanDirectory(full_path, parent_id, dir_type);
|
||||
}
|
||||
else if( type == TYPE_FILE )
|
||||
else if( type == TYPE_FILE && (access(full_path, R_OK|X_OK) == 0) )
|
||||
{
|
||||
if( insert_file(name, full_path, (parent ? parent:""), i+startID) == 0 )
|
||||
fileno++;
|
||||
|
Loading…
x
Reference in New Issue
Block a user