File libexif-0.5.12-strncat.patch of Package libexif5
--- libexif/exif-entry.c
+++ libexif/exif-entry.c
@@ -227,20 +227,20 @@
strncpy (v, e->data, MIN (sizeof (v) - 1, e->size));
else
strncpy (v, _("[None]"), sizeof (v) - 1);
- strncat (v, " ", sizeof (v) - 1);
- strncat (v, _("(Photographer)"), sizeof (v) - 1);
+ strncat (v, " ", sizeof (v) - strlen(v) - 1);
+ strncat (v, _("(Photographer)"), sizeof (v) - strlen(v) - 1);
/* Second part: Editor. */
- strncat (v, " - ", sizeof (v) - 1);
+ strncat (v, " - ", sizeof (v) - strlen(v) - 1);
if (e->size && e->data &&
(strlen ((char *) e->data) + 1 < e->size) &&
(strspn (e->data, " ") != strlen ((char *) e->data)))
strncat (v, e->data + strlen (e->data) + 1,
- sizeof (v) - 1);
+ sizeof (v) - strlen(v) - 1);
else
- strncat (v, _("[None]"), sizeof (v) - 1);
- strncat (v, " ", sizeof (v) - 1);
- strncat (v, _("(Editor)"), sizeof (v) - 1);
+ strncat (v, _("[None]"), sizeof (v) - strlen(v) - 1);
+ strncat (v, " ", sizeof (v) - strlen(v) - 1);
+ strncat (v, _("(Editor)"), sizeof (v) - strlen(v) - 1);
break;
case EXIF_TAG_FNUMBER:
@@ -393,8 +393,8 @@
case 6: c = _("B"); break;
default: c = _("reserved"); break;
}
- strncat (v, c, sizeof (v));
- if (i < 3) strncat (v, " ", sizeof (v));
+ strncat (v, c, sizeof (v) - strlen(v) - 1);
+ if (i < 3) strncat (v, " ", sizeof (v) - strlen(v) - 1);
}
break;
case EXIF_TAG_SENSING_METHOD:
@@ -920,8 +920,8 @@
for (i = 1; i < e->components; i++) {
v_byte = e->data[i];
snprintf (b, sizeof (b), "0x%02x", v_byte);
- strncat (v, ", ", sizeof (v));
- strncat (v, b, sizeof (v));
+ strncat (v, ", ", sizeof (v) - strlen(v) - 1);
+ strncat (v, b, sizeof (v) - strlen(v) - 1);
}
break;
case EXIF_FORMAT_SHORT:
@@ -933,8 +933,8 @@
exif_format_get_size (e->format) *
i, o);
snprintf (b, sizeof (b), "%i", v_short);
- strncat (v, ", ", sizeof (v));
- strncat (v, b, sizeof (v));
+ strncat (v, ", ", sizeof (v) - strlen(v) - 1);
+ strncat (v, b, sizeof (v) - strlen(v) - 1);
}
break;
case EXIF_FORMAT_LONG:
@@ -945,8 +945,8 @@
exif_format_get_size (e->format) *
i, o);
snprintf (b, sizeof (b), "%li", v_long);
- strncat (v, ", ", sizeof (v));
- strncat (v, b, sizeof (v));
+ strncat (v, ", ", sizeof (v) - strlen(v) - 1);
+ strncat (v, b, sizeof (v) - strlen(v) - 1);
}
break;
case EXIF_FORMAT_SLONG:
@@ -957,8 +957,8 @@
exif_format_get_size (e->format) *
i, o);
snprintf (b, sizeof (b), "%li", v_long);
- strncat (v, ", ", sizeof (v));
- strncat (v, b, sizeof (v));
+ strncat (v, ", ", sizeof (v) - strlen(v) - 1);
+ strncat (v, b, sizeof (v) - strlen(v) - 1);
}
break;
case EXIF_FORMAT_ASCII:
@@ -975,8 +975,8 @@
snprintf (b, sizeof (b), "%i/%i",
(int) v_rat.numerator,
(int) v_rat.denominator);
- strncat (v, ", ", sizeof (v));
- strncat (v, b, sizeof (v));
+ strncat (v, ", ", sizeof (v) - strlen(v) - 1);
+ strncat (v, b, sizeof (v) - strlen(v) - 1);
}
break;
case EXIF_FORMAT_SRATIONAL:
@@ -990,8 +990,8 @@
snprintf (b, sizeof (b), "%i/%i",
(int) v_srat.numerator,
(int) v_srat.denominator);
- strncat (v, ", ", sizeof (v));
- strncat (v, b, sizeof (v));
+ strncat (v, ", ", sizeof (v) - strlen(v) - 1);
+ strncat (v, b, sizeof (v) - strlen(v) - 1);
}
break;
case EXIF_FORMAT_DOUBLE: