libcaca/bsc1184751-add-space-for-NUL-byte.patch

51 lines
2.0 KiB
Diff

Index: libcaca-da28e9684ef445ac8d42745644336b8a75c01855/caca/codec/export.c
===================================================================
--- libcaca-da28e9684ef445ac8d42745644336b8a75c01855.orig/caca/codec/export.c
+++ libcaca-da28e9684ef445ac8d42745644336b8a75c01855/caca/codec/export.c
@@ -944,21 +944,21 @@ static void *export_tga(caca_canvas_t co
cur = data = malloc(*bytes);
/* ID Length */
- cur += sprintf(cur, "%c", 0);
+ *cur++ = 0;
/* Color Map Type: no colormap */
- cur += sprintf(cur, "%c", 0);
+ *cur++ = 0;
/* Image Type: uncompressed truecolor */
- cur += sprintf(cur, "%c", 2);
+ *cur++ = 2;
/* Color Map Specification: no color map */
memset(cur, 0, 5); cur += 5;
/* Image Specification */
- cur += sprintf(cur, "%c%c", 0, 0); /* X Origin */
- cur += sprintf(cur, "%c%c", 0, 0); /* Y Origin */
- cur += sprintf(cur, "%c%c", w & 0xff, w >> 8); /* Width */
- cur += sprintf(cur, "%c%c", h & 0xff, h >> 8); /* Height */
- cur += sprintf(cur, "%c", 32); /* Pixel Depth */
- cur += sprintf(cur, "%c", 40); /* Image Descriptor */
+ *cur++ = 0; *cur++ = 0; /* X Origin */
+ *cur++ = 0; *cur++ = 0; /* Y Origin */
+ *cur++ = w & 0xff; *cur++ = w >> 8; /* Width */
+ *cur++ = h & 0xff; *cur++ = h >> 8; /* Height */
+ *cur++ = 32; /* Pixel Depth */
+ *cur++ = 40; /* Image Descriptor */
/* Image ID: no ID */
/* Color Map Data: no colormap */
@@ -995,9 +995,13 @@ static void *export_troff(caca_canvas_t
* + 4 bytes = 33
* Each line has a \n (1) and maybe 0xc2 0xa0 (2)
* Header has .nf\n (3)
+ * Kludge alert:
+ * The sprintf functions all append a NUL byte, so
+ * add one byte for any terminating NUL byte,
+ * but don't tell the caller.
*/
*bytes = 3 + cv->height * 3 + (cv->width * cv->height * 33);
- cur = data = malloc(*bytes);
+ cur = data = malloc(*bytes + 1); /* Add space for a terminating NUL byte */
cur += sprintf(cur, ".nf\n");