Undefined behavior while passing a null pointer as an argument to a nonnull...
Swiss army knife of image processing
Brought to you by:
bfriesen
Command Input
gm convert poc_file /dev/null
poc_file are attached.
Sanitizer Dump
coders/tiff.c:2349:9: runtime error: null pointer passed as argument 2, which is declared to never be null
/usr/include/string.h:44:28: note: nonnull attribute specified here
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior coders/tiff.c:2349:9 in
Environment
we built GraphicsMagick with UndefinedBehaviourSanitizer (UBSAN).
CC = clang
CFLAGS = -fopenmp -fsanitize=undefined -g -O0 -Wall
CPPFLAGS = -I/usr/include/freetype2 -I/usr/include/libxml2
CXX = clang++
CXXFLAGS = -fsanitize=undefined -g -O0
DEFS = -DHAVE_CONFIG_H
LDFLAGS =
LIBS = -ljbig -lwebp -lwebpmux -ltiff -lfreetype -ljpeg -lpng16 -lXext -lSM -lICE -lX11 -llzma -lbz2 -lxml2 -lz -lm -lpthread
This issue seems to depend on the version of libtiff used. With current libtiff I get this error message from libtiff, and there is no crash:
Defined set_field_type of custom tag 230 (Tag 230) is TIFF_SETGET_UNDEFINED and thus tag is not read from file. (TIFFFetchNormalTag)
I will add more defensive programming for the case where libtiff reports apparent success but useful values are not returned.
This issue is fixed by Mercurial changeset 17037:c9b750fbb01f