gifecho.c, GenRasterTextLine() indexes the font table with the raw input byte:
Byte = GifAsciiTable8x8[(unsigned short)c][j];
GifAsciiTable8x8 (gif_font.c:26) has exactly 128 rows (ASCII 0..127). Text reaches this function straight from the command line (-t) or stdin with no filtering, so any byte >= 0x80 indexes one or more rows past the end of the global table.
Reproduce (ASan build):
$ ./gifecho -t "$(printf '\x80')"
==ERROR: AddressSanitizer: global-buffer-overflow ... READ of size 1
#0 GenRasterTextLine gifecho.c:216
0x... is located 0 bytes to the right of global variable 'GifAsciiTable8x8'
defined in 'gif_font.c:26:21' ... of size 1024
Same result via printf '\x80\n' | ./gifecho.