diff --git a/ext/exif/exif.c b/ext/exif/exif.c index ff98ad74756..2768e423136 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -1004,18 +1004,21 @@ static char * exif_get_tagname(int tag_num, char *ret, int len, tag_table_type t if (ret && len) { strlcpy(ret, tag_table[i].Desc, abs(len)); if (len < 0) { - memset(ret, ' ', -len - 1); + memset(ret + strlen(ret), ' ', -len - strlen(ret) - 1); + ret[-len] = '\0'; } return ret; } return tag_table[i].Desc; } } + if (ret && len) { snprintf(tmp, sizeof(tmp), "UndefinedTag:0x%04X", tag_num); strlcpy(ret, tmp, abs(len)); if (len < 0) { - memset(ret, ' ', -len - 1); + memset(ret + strlen(ret), ' ', -len - strlen(ret) - 1); + ret[-len] = '\0'; } return ret; }