OpenSDE Packages Database (without history before r20070)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

808 lines
35 KiB

  1. # --- SDE-COPYRIGHT-NOTE-BEGIN ---
  2. # This copyright note is auto-generated by ./scripts/Create-CopyPatch.
  3. #
  4. # Filename: package/.../libtiff/libtiff-4.0.3-0102-CVE-2013-1961.patch
  5. # Copyright (C) 2013 The OpenSDE Project
  6. #
  7. # More information can be found in the files COPYING and README.
  8. #
  9. # This patch file is dual-licensed. It is available under the license the
  10. # patched project is licensed under, as long as it is an OpenSource license
  11. # as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
  12. # of the GNU General Public License as published by the Free Software
  13. # Foundation; either version 2 of the License, or (at your option) any later
  14. # version.
  15. # --- SDE-COPYRIGHT-NOTE-END ---
  16. From a3da4adee9c2e37cf0df346671e02f53587ae401 Mon Sep 17 00:00:00 2001
  17. From: tgl <tgl>
  18. Date: Thu, 2 May 2013 14:44:29 +0000
  19. Subject: [PATCH] Replace sprintf with snprintf, to fix CVE-2013-1961
  20. original ChangeLog entry:
  21. ----------------------------------------------------------------------------
  22. 2013-05-02 Tom Lane <tgl@sss.pgh.pa.us>
  23. * contrib/dbs/xtiff/xtiff.c, libtiff/tif_codec.c,
  24. libtiff/tif_dirinfo.c, tools/rgb2ycbcr.c, tools/tiff2bw.c,
  25. tools/tiff2pdf.c, tools/tiff2ps.c, tools/tiffcrop.c,
  26. tools/tiffdither.c: Enlarge some fixed-size buffers that weren't
  27. large enough, and eliminate substantially all uses of sprintf(buf,
  28. ...) in favor of using snprintf(buf, sizeof(buf), ...), so as to
  29. protect against overflow of fixed-size buffers. This responds in
  30. particular to CVE-2013-1961 concerning overflow in tiff2pdf.c's
  31. t2p_write_pdf_page(), but in general it seems like a good idea to
  32. deprecate use of sprintf().
  33. ----------------------------------------------------------------------------
  34. diff --git a/contrib/dbs/xtiff/xtiff.c b/contrib/dbs/xtiff/xtiff.c
  35. index 82541b6..16f77e0 100644
  36. --- a/contrib/dbs/xtiff/xtiff.c
  37. +++ b/contrib/dbs/xtiff/xtiff.c
  38. @@ -512,9 +512,9 @@ SetNameLabel()
  39. Arg args[1];
  40. if (tfMultiPage)
  41. - sprintf(buffer, "%s - page %d", fileName, tfDirectory);
  42. + snprintf(buffer, sizeof(buffer), "%s - page %d", fileName, tfDirectory);
  43. else
  44. - strcpy(buffer, fileName);
  45. + snprintf(buffer, sizeof(buffer), "%s", fileName);
  46. XtSetArg(args[0], XtNlabel, buffer);
  47. XtSetValues(labelWidget, args, 1);
  48. }
  49. diff --git a/libtiff/tif_codec.c b/libtiff/tif_codec.c
  50. index 4a9abe3..4041570 100644
  51. --- a/libtiff/tif_codec.c
  52. +++ b/libtiff/tif_codec.c
  53. @@ -108,7 +108,8 @@ _notConfigured(TIFF* tif)
  54. const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
  55. char compression_code[20];
  56. - sprintf( compression_code, "%d", tif->tif_dir.td_compression );
  57. + snprintf(compression_code, sizeof(compression_code), "%d",
  58. + tif->tif_dir.td_compression );
  59. TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
  60. "%s compression support is not configured",
  61. c ? c->name : compression_code );
  62. diff --git a/libtiff/tif_dirinfo.c b/libtiff/tif_dirinfo.c
  63. index c1d4c74..16eb875 100644
  64. --- a/libtiff/tif_dirinfo.c
  65. +++ b/libtiff/tif_dirinfo.c
  66. @@ -711,7 +711,7 @@ _TIFFCreateAnonField(TIFF *tif, uint32 tag, TIFFDataType field_type)
  67. * note that this name is a special sign to TIFFClose() and
  68. * _TIFFSetupFields() to free the field
  69. */
  70. - sprintf(fld->field_name, "Tag %d", (int) tag);
  71. + snprintf(fld->field_name, 32, "Tag %d", (int) tag);
  72. return fld;
  73. }
  74. diff --git a/tools/rgb2ycbcr.c b/tools/rgb2ycbcr.c
  75. index 06aa881..c2d83be 100644
  76. --- a/tools/rgb2ycbcr.c
  77. +++ b/tools/rgb2ycbcr.c
  78. @@ -332,7 +332,8 @@ tiffcvt(TIFF* in, TIFF* out)
  79. TIFFSetField(out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
  80. { char buf[2048];
  81. char *cp = strrchr(TIFFFileName(in), '/');
  82. - sprintf(buf, "YCbCr conversion of %s", cp ? cp+1 : TIFFFileName(in));
  83. + snprintf(buf, sizeof(buf), "YCbCr conversion of %s",
  84. + cp ? cp+1 : TIFFFileName(in));
  85. TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, buf);
  86. }
  87. TIFFSetField(out, TIFFTAG_SOFTWARE, TIFFGetVersion());
  88. diff --git a/tools/tiff2bw.c b/tools/tiff2bw.c
  89. index 8d16b29..22467cd 100644
  90. --- a/tools/tiff2bw.c
  91. +++ b/tools/tiff2bw.c
  92. @@ -205,7 +205,7 @@ main(int argc, char* argv[])
  93. }
  94. }
  95. TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
  96. - sprintf(thing, "B&W version of %s", argv[optind]);
  97. + snprintf(thing, sizeof(thing), "B&W version of %s", argv[optind]);
  98. TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, thing);
  99. TIFFSetField(out, TIFFTAG_SOFTWARE, "tiff2bw");
  100. outbuf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out));
  101. diff --git a/tools/tiff2pdf.c b/tools/tiff2pdf.c
  102. index b9a6075..6b0d021 100644
  103. --- a/tools/tiff2pdf.c
  104. +++ b/tools/tiff2pdf.c
  105. @@ -3609,7 +3609,9 @@ tsize_t t2p_write_pdf_header(T2P* t2p, TIFF* output){
  106. char buffer[16];
  107. int buflen=0;
  108. - buflen=sprintf(buffer, "%%PDF-%u.%u ", t2p->pdf_majorversion&0xff, t2p->pdf_minorversion&0xff);
  109. + buflen = snprintf(buffer, sizeof(buffer), "%%PDF-%u.%u ",
  110. + t2p->pdf_majorversion&0xff,
  111. + t2p->pdf_minorversion&0xff);
  112. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  113. written += t2pWriteFile(output, (tdata_t)"\n%\342\343\317\323\n", 7);
  114. @@ -3623,10 +3625,10 @@ tsize_t t2p_write_pdf_header(T2P* t2p, TIFF* output){
  115. tsize_t t2p_write_pdf_obj_start(uint32 number, TIFF* output){
  116. tsize_t written=0;
  117. - char buffer[16];
  118. + char buffer[32];
  119. int buflen=0;
  120. - buflen=sprintf(buffer, "%lu", (unsigned long)number);
  121. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)number);
  122. written += t2pWriteFile(output, (tdata_t) buffer, buflen );
  123. written += t2pWriteFile(output, (tdata_t) " 0 obj\n", 7);
  124. @@ -3665,13 +3667,13 @@ tsize_t t2p_write_pdf_name(unsigned char* name, TIFF* output){
  125. written += t2pWriteFile(output, (tdata_t) "/", 1);
  126. for (i=0;i<namelen;i++){
  127. if ( ((unsigned char)name[i]) < 0x21){
  128. - sprintf(buffer, "#%.2X", name[i]);
  129. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  130. buffer[sizeof(buffer) - 1] = '\0';
  131. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  132. nextchar=1;
  133. }
  134. if ( ((unsigned char)name[i]) > 0x7E){
  135. - sprintf(buffer, "#%.2X", name[i]);
  136. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  137. buffer[sizeof(buffer) - 1] = '\0';
  138. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  139. nextchar=1;
  140. @@ -3679,57 +3681,57 @@ tsize_t t2p_write_pdf_name(unsigned char* name, TIFF* output){
  141. if (nextchar==0){
  142. switch (name[i]){
  143. case 0x23:
  144. - sprintf(buffer, "#%.2X", name[i]);
  145. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  146. buffer[sizeof(buffer) - 1] = '\0';
  147. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  148. break;
  149. case 0x25:
  150. - sprintf(buffer, "#%.2X", name[i]);
  151. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  152. buffer[sizeof(buffer) - 1] = '\0';
  153. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  154. break;
  155. case 0x28:
  156. - sprintf(buffer, "#%.2X", name[i]);
  157. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  158. buffer[sizeof(buffer) - 1] = '\0';
  159. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  160. break;
  161. case 0x29:
  162. - sprintf(buffer, "#%.2X", name[i]);
  163. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  164. buffer[sizeof(buffer) - 1] = '\0';
  165. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  166. break;
  167. case 0x2F:
  168. - sprintf(buffer, "#%.2X", name[i]);
  169. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  170. buffer[sizeof(buffer) - 1] = '\0';
  171. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  172. break;
  173. case 0x3C:
  174. - sprintf(buffer, "#%.2X", name[i]);
  175. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  176. buffer[sizeof(buffer) - 1] = '\0';
  177. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  178. break;
  179. case 0x3E:
  180. - sprintf(buffer, "#%.2X", name[i]);
  181. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  182. buffer[sizeof(buffer) - 1] = '\0';
  183. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  184. break;
  185. case 0x5B:
  186. - sprintf(buffer, "#%.2X", name[i]);
  187. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  188. buffer[sizeof(buffer) - 1] = '\0';
  189. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  190. break;
  191. case 0x5D:
  192. - sprintf(buffer, "#%.2X", name[i]);
  193. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  194. buffer[sizeof(buffer) - 1] = '\0';
  195. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  196. break;
  197. case 0x7B:
  198. - sprintf(buffer, "#%.2X", name[i]);
  199. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  200. buffer[sizeof(buffer) - 1] = '\0';
  201. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  202. break;
  203. case 0x7D:
  204. - sprintf(buffer, "#%.2X", name[i]);
  205. + snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
  206. buffer[sizeof(buffer) - 1] = '\0';
  207. written += t2pWriteFile(output, (tdata_t) buffer, 3);
  208. break;
  209. @@ -3844,14 +3846,14 @@ tsize_t t2p_write_pdf_stream_end(TIFF* output){
  210. tsize_t t2p_write_pdf_stream_dict(tsize_t len, uint32 number, TIFF* output){
  211. tsize_t written=0;
  212. - char buffer[16];
  213. + char buffer[32];
  214. int buflen=0;
  215. written += t2pWriteFile(output, (tdata_t) "/Length ", 8);
  216. if(len!=0){
  217. written += t2p_write_pdf_stream_length(len, output);
  218. } else {
  219. - buflen=sprintf(buffer, "%lu", (unsigned long)number);
  220. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)number);
  221. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  222. written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
  223. }
  224. @@ -3892,10 +3894,10 @@ tsize_t t2p_write_pdf_stream_dict_end(TIFF* output){
  225. tsize_t t2p_write_pdf_stream_length(tsize_t len, TIFF* output){
  226. tsize_t written=0;
  227. - char buffer[16];
  228. + char buffer[32];
  229. int buflen=0;
  230. - buflen=sprintf(buffer, "%lu", (unsigned long)len);
  231. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)len);
  232. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  233. written += t2pWriteFile(output, (tdata_t) "\n", 1);
  234. @@ -3909,7 +3911,7 @@ tsize_t t2p_write_pdf_stream_length(tsize_t len, TIFF* output){
  235. tsize_t t2p_write_pdf_catalog(T2P* t2p, TIFF* output)
  236. {
  237. tsize_t written = 0;
  238. - char buffer[16];
  239. + char buffer[32];
  240. int buflen = 0;
  241. written += t2pWriteFile(output,
  242. @@ -3948,7 +3950,6 @@ tsize_t t2p_write_pdf_info(T2P* t2p, TIFF* input, TIFF* output)
  243. written += t2p_write_pdf_string(t2p->pdf_datetime, output);
  244. }
  245. written += t2pWriteFile(output, (tdata_t) "\n/Producer ", 11);
  246. - _TIFFmemset((tdata_t)buffer, 0x00, sizeof(buffer));
  247. snprintf(buffer, sizeof(buffer), "libtiff / tiff2pdf - %d", TIFFLIB_VERSION);
  248. written += t2p_write_pdf_string(buffer, output);
  249. written += t2pWriteFile(output, (tdata_t) "\n", 1);
  250. @@ -4089,7 +4090,7 @@ tsize_t t2p_write_pdf_pages(T2P* t2p, TIFF* output)
  251. {
  252. tsize_t written=0;
  253. tdir_t i=0;
  254. - char buffer[16];
  255. + char buffer[32];
  256. int buflen=0;
  257. int page=0;
  258. @@ -4097,7 +4098,7 @@ tsize_t t2p_write_pdf_pages(T2P* t2p, TIFF* output)
  259. (tdata_t) "<< \n/Type /Pages \n/Kids [ ", 26);
  260. page = t2p->pdf_pages+1;
  261. for (i=0;i<t2p->tiff_pagecount;i++){
  262. - buflen=sprintf(buffer, "%d", page);
  263. + buflen=snprintf(buffer, sizeof(buffer), "%d", page);
  264. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  265. written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
  266. if ( ((i+1)%8)==0 ) {
  267. @@ -4112,8 +4113,7 @@ tsize_t t2p_write_pdf_pages(T2P* t2p, TIFF* output)
  268. }
  269. }
  270. written += t2pWriteFile(output, (tdata_t) "] \n/Count ", 10);
  271. - _TIFFmemset(buffer, 0x00, 16);
  272. - buflen=sprintf(buffer, "%d", t2p->tiff_pagecount);
  273. + buflen=snprintf(buffer, sizeof(buffer), "%d", t2p->tiff_pagecount);
  274. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  275. written += t2pWriteFile(output, (tdata_t) " \n>> \n", 6);
  276. @@ -4128,28 +4128,28 @@ tsize_t t2p_write_pdf_page(uint32 object, T2P* t2p, TIFF* output){
  277. unsigned int i=0;
  278. tsize_t written=0;
  279. - char buffer[16];
  280. + char buffer[256];
  281. int buflen=0;
  282. written += t2pWriteFile(output, (tdata_t) "<<\n/Type /Page \n/Parent ", 24);
  283. - buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_pages);
  284. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_pages);
  285. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  286. written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
  287. written += t2pWriteFile(output, (tdata_t) "/MediaBox [", 11);
  288. - buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.x1);
  289. + buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.x1);
  290. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  291. written += t2pWriteFile(output, (tdata_t) " ", 1);
  292. - buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.y1);
  293. + buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.y1);
  294. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  295. written += t2pWriteFile(output, (tdata_t) " ", 1);
  296. - buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.x2);
  297. + buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.x2);
  298. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  299. written += t2pWriteFile(output, (tdata_t) " ", 1);
  300. - buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.y2);
  301. + buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.y2);
  302. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  303. written += t2pWriteFile(output, (tdata_t) "] \n", 3);
  304. written += t2pWriteFile(output, (tdata_t) "/Contents ", 10);
  305. - buflen=sprintf(buffer, "%lu", (unsigned long)(object + 1));
  306. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(object + 1));
  307. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  308. written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
  309. written += t2pWriteFile(output, (tdata_t) "/Resources << \n", 15);
  310. @@ -4157,15 +4157,13 @@ tsize_t t2p_write_pdf_page(uint32 object, T2P* t2p, TIFF* output){
  311. written += t2pWriteFile(output, (tdata_t) "/XObject <<\n", 12);
  312. for(i=0;i<t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount;i++){
  313. written += t2pWriteFile(output, (tdata_t) "/Im", 3);
  314. - buflen = sprintf(buffer, "%u", t2p->pdf_page+1);
  315. + buflen = snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1);
  316. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  317. written += t2pWriteFile(output, (tdata_t) "_", 1);
  318. - buflen = sprintf(buffer, "%u", i+1);
  319. + buflen = snprintf(buffer, sizeof(buffer), "%u", i+1);
  320. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  321. written += t2pWriteFile(output, (tdata_t) " ", 1);
  322. - buflen = sprintf(
  323. - buffer,
  324. - "%lu",
  325. + buflen = snprintf(buffer, sizeof(buffer), "%lu",
  326. (unsigned long)(object+3+(2*i)+t2p->tiff_pages[t2p->pdf_page].page_extra));
  327. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  328. written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
  329. @@ -4177,12 +4175,10 @@ tsize_t t2p_write_pdf_page(uint32 object, T2P* t2p, TIFF* output){
  330. } else {
  331. written += t2pWriteFile(output, (tdata_t) "/XObject <<\n", 12);
  332. written += t2pWriteFile(output, (tdata_t) "/Im", 3);
  333. - buflen = sprintf(buffer, "%u", t2p->pdf_page+1);
  334. + buflen = snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1);
  335. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  336. written += t2pWriteFile(output, (tdata_t) " ", 1);
  337. - buflen = sprintf(
  338. - buffer,
  339. - "%lu",
  340. + buflen = snprintf(buffer, sizeof(buffer), "%lu",
  341. (unsigned long)(object+3+(2*i)+t2p->tiff_pages[t2p->pdf_page].page_extra));
  342. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  343. written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
  344. @@ -4191,9 +4187,7 @@ tsize_t t2p_write_pdf_page(uint32 object, T2P* t2p, TIFF* output){
  345. if(t2p->tiff_transferfunctioncount != 0) {
  346. written += t2pWriteFile(output, (tdata_t) "/ExtGState <<", 13);
  347. t2pWriteFile(output, (tdata_t) "/GS1 ", 5);
  348. - buflen = sprintf(
  349. - buffer,
  350. - "%lu",
  351. + buflen = snprintf(buffer, sizeof(buffer), "%lu",
  352. (unsigned long)(object + 3));
  353. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  354. written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
  355. @@ -4566,7 +4560,7 @@ tsize_t t2p_write_pdf_page_content_stream(T2P* t2p, TIFF* output){
  356. if(t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount>0){
  357. for(i=0;i<t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount; i++){
  358. box=t2p->tiff_tiles[t2p->pdf_page].tiles_tiles[i].tile_box;
  359. - buflen=sprintf(buffer,
  360. + buflen=snprintf(buffer, sizeof(buffer),
  361. "q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d_%ld Do Q\n",
  362. t2p->tiff_transferfunctioncount?"/GS1 gs ":"",
  363. box.mat[0],
  364. @@ -4581,7 +4575,7 @@ tsize_t t2p_write_pdf_page_content_stream(T2P* t2p, TIFF* output){
  365. }
  366. } else {
  367. box=t2p->pdf_imagebox;
  368. - buflen=sprintf(buffer,
  369. + buflen=snprintf(buffer, sizeof(buffer),
  370. "q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d Do Q\n",
  371. t2p->tiff_transferfunctioncount?"/GS1 gs ":"",
  372. box.mat[0],
  373. @@ -4606,59 +4600,48 @@ tsize_t t2p_write_pdf_xobject_stream_dict(ttile_t tile,
  374. TIFF* output){
  375. tsize_t written=0;
  376. - char buffer[16];
  377. + char buffer[32];
  378. int buflen=0;
  379. written += t2p_write_pdf_stream_dict(0, t2p->pdf_xrefcount+1, output);
  380. written += t2pWriteFile(output,
  381. (tdata_t) "/Type /XObject \n/Subtype /Image \n/Name /Im",
  382. 42);
  383. - buflen=sprintf(buffer, "%u", t2p->pdf_page+1);
  384. + buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1);
  385. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  386. if(tile != 0){
  387. written += t2pWriteFile(output, (tdata_t) "_", 1);
  388. - buflen=sprintf(buffer, "%lu", (unsigned long)tile);
  389. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)tile);
  390. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  391. }
  392. written += t2pWriteFile(output, (tdata_t) "\n/Width ", 8);
  393. - _TIFFmemset((tdata_t)buffer, 0x00, 16);
  394. if(tile==0){
  395. - buflen=sprintf(buffer, "%lu", (unsigned long)t2p->tiff_width);
  396. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->tiff_width);
  397. } else {
  398. if(t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)!=0){
  399. - buflen=sprintf(
  400. - buffer,
  401. - "%lu",
  402. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  403. (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilewidth);
  404. } else {
  405. - buflen=sprintf(
  406. - buffer,
  407. - "%lu",
  408. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  409. (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilewidth);
  410. }
  411. }
  412. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  413. written += t2pWriteFile(output, (tdata_t) "\n/Height ", 9);
  414. - _TIFFmemset((tdata_t)buffer, 0x00, 16);
  415. if(tile==0){
  416. - buflen=sprintf(buffer, "%lu", (unsigned long)t2p->tiff_length);
  417. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->tiff_length);
  418. } else {
  419. if(t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)!=0){
  420. - buflen=sprintf(
  421. - buffer,
  422. - "%lu",
  423. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  424. (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilelength);
  425. } else {
  426. - buflen=sprintf(
  427. - buffer,
  428. - "%lu",
  429. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  430. (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength);
  431. }
  432. }
  433. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  434. written += t2pWriteFile(output, (tdata_t) "\n/BitsPerComponent ", 19);
  435. - _TIFFmemset((tdata_t)buffer, 0x00, 16);
  436. - buflen=sprintf(buffer, "%u", t2p->tiff_bitspersample);
  437. + buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_bitspersample);
  438. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  439. written += t2pWriteFile(output, (tdata_t) "\n/ColorSpace ", 13);
  440. written += t2p_write_pdf_xobject_cs(t2p, output);
  441. @@ -4702,11 +4685,10 @@ tsize_t t2p_write_pdf_xobject_cs(T2P* t2p, TIFF* output){
  442. t2p->pdf_colorspace ^= T2P_CS_PALETTE;
  443. written += t2p_write_pdf_xobject_cs(t2p, output);
  444. t2p->pdf_colorspace |= T2P_CS_PALETTE;
  445. - buflen=sprintf(buffer, "%u", (0x0001 << t2p->tiff_bitspersample)-1 );
  446. + buflen=snprintf(buffer, sizeof(buffer), "%u", (0x0001 << t2p->tiff_bitspersample)-1 );
  447. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  448. written += t2pWriteFile(output, (tdata_t) " ", 1);
  449. - _TIFFmemset(buffer, 0x00, 16);
  450. - buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_palettecs );
  451. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_palettecs );
  452. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  453. written += t2pWriteFile(output, (tdata_t) " 0 R ]\n", 7);
  454. return(written);
  455. @@ -4740,10 +4722,10 @@ tsize_t t2p_write_pdf_xobject_cs(T2P* t2p, TIFF* output){
  456. X_W /= Y_W;
  457. Z_W /= Y_W;
  458. Y_W = 1.0F;
  459. - buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
  460. + buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
  461. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  462. written += t2pWriteFile(output, (tdata_t) "/Range ", 7);
  463. - buflen=sprintf(buffer, "[%d %d %d %d] \n",
  464. + buflen=snprintf(buffer, sizeof(buffer), "[%d %d %d %d] \n",
  465. t2p->pdf_labrange[0],
  466. t2p->pdf_labrange[1],
  467. t2p->pdf_labrange[2],
  468. @@ -4759,26 +4741,26 @@ tsize_t t2p_write_pdf_xobject_cs(T2P* t2p, TIFF* output){
  469. tsize_t t2p_write_pdf_transfer(T2P* t2p, TIFF* output){
  470. tsize_t written=0;
  471. - char buffer[16];
  472. + char buffer[32];
  473. int buflen=0;
  474. written += t2pWriteFile(output, (tdata_t) "<< /Type /ExtGState \n/TR ", 25);
  475. if(t2p->tiff_transferfunctioncount == 1){
  476. - buflen=sprintf(buffer, "%lu",
  477. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  478. (unsigned long)(t2p->pdf_xrefcount + 1));
  479. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  480. written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
  481. } else {
  482. written += t2pWriteFile(output, (tdata_t) "[ ", 2);
  483. - buflen=sprintf(buffer, "%lu",
  484. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  485. (unsigned long)(t2p->pdf_xrefcount + 1));
  486. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  487. written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
  488. - buflen=sprintf(buffer, "%lu",
  489. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  490. (unsigned long)(t2p->pdf_xrefcount + 2));
  491. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  492. written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
  493. - buflen=sprintf(buffer, "%lu",
  494. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  495. (unsigned long)(t2p->pdf_xrefcount + 3));
  496. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  497. written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
  498. @@ -4800,7 +4782,7 @@ tsize_t t2p_write_pdf_transfer_dict(T2P* t2p, TIFF* output, uint16 i){
  499. written += t2pWriteFile(output, (tdata_t) "/FunctionType 0 \n", 17);
  500. written += t2pWriteFile(output, (tdata_t) "/Domain [0.0 1.0] \n", 19);
  501. written += t2pWriteFile(output, (tdata_t) "/Range [0.0 1.0] \n", 18);
  502. - buflen=sprintf(buffer, "/Size [%u] \n", (1<<t2p->tiff_bitspersample));
  503. + buflen=snprintf(buffer, sizeof(buffer), "/Size [%u] \n", (1<<t2p->tiff_bitspersample));
  504. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  505. written += t2pWriteFile(output, (tdata_t) "/BitsPerSample 16 \n", 19);
  506. written += t2p_write_pdf_stream_dict(((tsize_t)1)<<(t2p->tiff_bitspersample+1), 0, output);
  507. @@ -4827,7 +4809,7 @@ tsize_t t2p_write_pdf_transfer_stream(T2P* t2p, TIFF* output, uint16 i){
  508. tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
  509. tsize_t written=0;
  510. - char buffer[128];
  511. + char buffer[256];
  512. int buflen=0;
  513. float X_W=0.0;
  514. @@ -4895,16 +4877,16 @@ tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
  515. written += t2pWriteFile(output, (tdata_t) "<< \n", 4);
  516. if(t2p->pdf_colorspace & T2P_CS_CALGRAY){
  517. written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12);
  518. - buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
  519. + buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
  520. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  521. written += t2pWriteFile(output, (tdata_t) "/Gamma 2.2 \n", 12);
  522. }
  523. if(t2p->pdf_colorspace & T2P_CS_CALRGB){
  524. written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12);
  525. - buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
  526. + buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
  527. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  528. written += t2pWriteFile(output, (tdata_t) "/Matrix ", 8);
  529. - buflen=sprintf(buffer, "[%.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f] \n",
  530. + buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f] \n",
  531. X_R, Y_R, Z_R,
  532. X_G, Y_G, Z_G,
  533. X_B, Y_B, Z_B);
  534. @@ -4923,11 +4905,11 @@ tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
  535. tsize_t t2p_write_pdf_xobject_icccs(T2P* t2p, TIFF* output){
  536. tsize_t written=0;
  537. - char buffer[16];
  538. + char buffer[32];
  539. int buflen=0;
  540. written += t2pWriteFile(output, (tdata_t) "[/ICCBased ", 11);
  541. - buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_icccs);
  542. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_icccs);
  543. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  544. written += t2pWriteFile(output, (tdata_t) " 0 R] \n", 7);
  545. @@ -4937,11 +4919,11 @@ tsize_t t2p_write_pdf_xobject_icccs(T2P* t2p, TIFF* output){
  546. tsize_t t2p_write_pdf_xobject_icccs_dict(T2P* t2p, TIFF* output){
  547. tsize_t written=0;
  548. - char buffer[16];
  549. + char buffer[32];
  550. int buflen=0;
  551. written += t2pWriteFile(output, (tdata_t) "/N ", 3);
  552. - buflen=sprintf(buffer, "%u \n", t2p->tiff_samplesperpixel);
  553. + buflen=snprintf(buffer, sizeof(buffer), "%u \n", t2p->tiff_samplesperpixel);
  554. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  555. written += t2pWriteFile(output, (tdata_t) "/Alternate ", 11);
  556. t2p->pdf_colorspace ^= T2P_CS_ICCBASED;
  557. @@ -5006,7 +4988,7 @@ tsize_t t2p_write_pdf_xobject_decode(T2P* t2p, TIFF* output){
  558. tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t tile, T2P* t2p, TIFF* output){
  559. tsize_t written=0;
  560. - char buffer[16];
  561. + char buffer[32];
  562. int buflen=0;
  563. if(t2p->pdf_compression==T2P_COMPRESS_NONE){
  564. @@ -5021,41 +5003,33 @@ tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t tile, T2P* t2p, TIFF* output
  565. written += t2pWriteFile(output, (tdata_t) "<< /K -1 ", 9);
  566. if(tile==0){
  567. written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
  568. - buflen=sprintf(buffer, "%lu",
  569. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  570. (unsigned long)t2p->tiff_width);
  571. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  572. written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
  573. - buflen=sprintf(buffer, "%lu",
  574. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  575. (unsigned long)t2p->tiff_length);
  576. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  577. } else {
  578. if(t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)==0){
  579. written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
  580. - buflen=sprintf(
  581. - buffer,
  582. - "%lu",
  583. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  584. (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilewidth);
  585. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  586. } else {
  587. written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
  588. - buflen=sprintf(
  589. - buffer,
  590. - "%lu",
  591. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  592. (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilewidth);
  593. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  594. }
  595. if(t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)==0){
  596. written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
  597. - buflen=sprintf(
  598. - buffer,
  599. - "%lu",
  600. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  601. (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength);
  602. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  603. } else {
  604. written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
  605. - buflen=sprintf(
  606. - buffer,
  607. - "%lu",
  608. + buflen=snprintf(buffer, sizeof(buffer), "%lu",
  609. (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilelength);
  610. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  611. }
  612. @@ -5082,21 +5056,17 @@ tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t tile, T2P* t2p, TIFF* output
  613. if(t2p->pdf_compressionquality%100){
  614. written += t2pWriteFile(output, (tdata_t) "/DecodeParms ", 13);
  615. written += t2pWriteFile(output, (tdata_t) "<< /Predictor ", 14);
  616. - _TIFFmemset(buffer, 0x00, 16);
  617. - buflen=sprintf(buffer, "%u", t2p->pdf_compressionquality%100);
  618. + buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_compressionquality%100);
  619. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  620. written += t2pWriteFile(output, (tdata_t) " /Columns ", 10);
  621. - _TIFFmemset(buffer, 0x00, 16);
  622. - buflen = sprintf(buffer, "%lu",
  623. + buflen = snprintf(buffer, sizeof(buffer), "%lu",
  624. (unsigned long)t2p->tiff_width);
  625. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  626. written += t2pWriteFile(output, (tdata_t) " /Colors ", 9);
  627. - _TIFFmemset(buffer, 0x00, 16);
  628. - buflen=sprintf(buffer, "%u", t2p->tiff_samplesperpixel);
  629. + buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_samplesperpixel);
  630. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  631. written += t2pWriteFile(output, (tdata_t) " /BitsPerComponent ", 19);
  632. - _TIFFmemset(buffer, 0x00, 16);
  633. - buflen=sprintf(buffer, "%u", t2p->tiff_bitspersample);
  634. + buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_bitspersample);
  635. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  636. written += t2pWriteFile(output, (tdata_t) ">>\n", 3);
  637. }
  638. @@ -5116,16 +5086,16 @@ tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t tile, T2P* t2p, TIFF* output
  639. tsize_t t2p_write_pdf_xreftable(T2P* t2p, TIFF* output){
  640. tsize_t written=0;
  641. - char buffer[21];
  642. + char buffer[64];
  643. int buflen=0;
  644. uint32 i=0;
  645. written += t2pWriteFile(output, (tdata_t) "xref\n0 ", 7);
  646. - buflen=sprintf(buffer, "%lu", (unsigned long)(t2p->pdf_xrefcount + 1));
  647. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(t2p->pdf_xrefcount + 1));
  648. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  649. written += t2pWriteFile(output, (tdata_t) " \n0000000000 65535 f \n", 22);
  650. for (i=0;i<t2p->pdf_xrefcount;i++){
  651. - sprintf(buffer, "%.10lu 00000 n \n",
  652. + snprintf(buffer, sizeof(buffer), "%.10lu 00000 n \n",
  653. (unsigned long)t2p->pdf_xrefoffsets[i]);
  654. written += t2pWriteFile(output, (tdata_t) buffer, 20);
  655. }
  656. @@ -5149,17 +5119,14 @@ tsize_t t2p_write_pdf_trailer(T2P* t2p, TIFF* output)
  657. snprintf(t2p->pdf_fileid + i, 9, "%.8X", rand());
  658. written += t2pWriteFile(output, (tdata_t) "trailer\n<<\n/Size ", 17);
  659. - buflen = sprintf(buffer, "%lu", (unsigned long)(t2p->pdf_xrefcount+1));
  660. + buflen = snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(t2p->pdf_xrefcount+1));
  661. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  662. - _TIFFmemset(buffer, 0x00, 32);
  663. written += t2pWriteFile(output, (tdata_t) "\n/Root ", 7);
  664. - buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_catalog);
  665. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_catalog);
  666. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  667. - _TIFFmemset(buffer, 0x00, 32);
  668. written += t2pWriteFile(output, (tdata_t) " 0 R \n/Info ", 12);
  669. - buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_info);
  670. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_info);
  671. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  672. - _TIFFmemset(buffer, 0x00, 32);
  673. written += t2pWriteFile(output, (tdata_t) " 0 R \n/ID[<", 11);
  674. written += t2pWriteFile(output, (tdata_t) t2p->pdf_fileid,
  675. sizeof(t2p->pdf_fileid) - 1);
  676. @@ -5167,9 +5134,8 @@ tsize_t t2p_write_pdf_trailer(T2P* t2p, TIFF* output)
  677. written += t2pWriteFile(output, (tdata_t) t2p->pdf_fileid,
  678. sizeof(t2p->pdf_fileid) - 1);
  679. written += t2pWriteFile(output, (tdata_t) ">]\n>>\nstartxref\n", 16);
  680. - buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_startxref);
  681. + buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_startxref);
  682. written += t2pWriteFile(output, (tdata_t) buffer, buflen);
  683. - _TIFFmemset(buffer, 0x00, 32);
  684. written += t2pWriteFile(output, (tdata_t) "\n%%EOF\n", 7);
  685. return(written);
  686. diff --git a/tools/tiff2ps.c b/tools/tiff2ps.c
  687. index 7882d30..45209c1 100644
  688. --- a/tools/tiff2ps.c
  689. +++ b/tools/tiff2ps.c
  690. @@ -1781,8 +1781,8 @@ PS_Lvl2ImageDict(FILE* fd, TIFF* tif, uint32 w, uint32 h)
  691. imageOp = "imagemask";
  692. (void)strcpy(im_x, "0");
  693. - (void)sprintf(im_y, "%lu", (long) h);
  694. - (void)sprintf(im_h, "%lu", (long) h);
  695. + (void)snprintf(im_y, sizeof(im_y), "%lu", (long) h);
  696. + (void)snprintf(im_h, sizeof(im_h), "%lu", (long) h);
  697. tile_width = w;
  698. tile_height = h;
  699. if (TIFFIsTiled(tif)) {
  700. @@ -1803,7 +1803,7 @@ PS_Lvl2ImageDict(FILE* fd, TIFF* tif, uint32 w, uint32 h)
  701. }
  702. if (tile_height < h) {
  703. fputs("/im_y 0 def\n", fd);
  704. - (void)sprintf(im_y, "%lu im_y sub", (unsigned long) h);
  705. + (void)snprintf(im_y, sizeof(im_y), "%lu im_y sub", (unsigned long) h);
  706. }
  707. } else {
  708. repeat_count = tf_numberstrips;
  709. @@ -1815,7 +1815,7 @@ PS_Lvl2ImageDict(FILE* fd, TIFF* tif, uint32 w, uint32 h)
  710. fprintf(fd, "/im_h %lu def\n",
  711. (unsigned long) tile_height);
  712. (void)strcpy(im_h, "im_h");
  713. - (void)sprintf(im_y, "%lu im_y sub", (unsigned long) h);
  714. + (void)snprintf(im_y, sizeof(im_y), "%lu im_y sub", (unsigned long) h);
  715. }
  716. }
  717. diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c
  718. index 7ab3e53..e22ed2b 100644
  719. --- a/tools/tiffcrop.c
  720. +++ b/tools/tiffcrop.c
  721. @@ -2077,7 +2077,7 @@ update_output_file (TIFF **tiffout, char *mode, int autoindex,
  722. return 1;
  723. }
  724. - sprintf (filenum, "-%03d%s", findex, export_ext);
  725. + snprintf(filenum, sizeof(filenum), "-%03d%s", findex, export_ext);
  726. filenum[14] = '\0';
  727. strncat (exportname, filenum, 15);
  728. }
  729. @@ -2230,8 +2230,8 @@ main(int argc, char* argv[])
  730. /* dump.infilename is guaranteed to be NUL termimated and have 20 bytes
  731. fewer than PATH_MAX */
  732. - memset (temp_filename, '\0', PATH_MAX + 1);
  733. - sprintf (temp_filename, "%s-read-%03d.%s", dump.infilename, dump_images,
  734. + snprintf(temp_filename, sizeof(temp_filename), "%s-read-%03d.%s",
  735. + dump.infilename, dump_images,
  736. (dump.format == DUMP_TEXT) ? "txt" : "raw");
  737. if ((dump.infile = fopen(temp_filename, dump.mode)) == NULL)
  738. {
  739. @@ -2249,8 +2249,8 @@ main(int argc, char* argv[])
  740. /* dump.outfilename is guaranteed to be NUL termimated and have 20 bytes
  741. fewer than PATH_MAX */
  742. - memset (temp_filename, '\0', PATH_MAX + 1);
  743. - sprintf (temp_filename, "%s-write-%03d.%s", dump.outfilename, dump_images,
  744. + snprintf(temp_filename, sizeof(temp_filename), "%s-write-%03d.%s",
  745. + dump.outfilename, dump_images,
  746. (dump.format == DUMP_TEXT) ? "txt" : "raw");
  747. if ((dump.outfile = fopen(temp_filename, dump.mode)) == NULL)
  748. {
  749. diff --git a/tools/tiffdither.c b/tools/tiffdither.c
  750. index 08eb59d..91152d4 100644
  751. --- a/tools/tiffdither.c
  752. +++ b/tools/tiffdither.c
  753. @@ -260,7 +260,7 @@ main(int argc, char* argv[])
  754. TIFFSetField(out, TIFFTAG_FILLORDER, fillorder);
  755. else
  756. CopyField(TIFFTAG_FILLORDER, shortv);
  757. - sprintf(thing, "Dithered B&W version of %s", argv[optind]);
  758. + snprintf(thing, sizeof(thing), "Dithered B&W version of %s", argv[optind]);
  759. TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, thing);
  760. CopyField(TIFFTAG_PHOTOMETRIC, shortv);
  761. CopyField(TIFFTAG_ORIENTATION, shortv);
  762. --
  763. 1.7.10.2