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:
openSUSE Build Service is sponsored by