GraphicsMagick: Replace strcpy() with strlcpy(), replace strcat(...
GraphicsMagick Commits <[email protected]>
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.16582.1668271247.1350.graphicsmagick-commit@lists.sourceforge.net> |
changeset 1d0727a50c9a in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=1d0727a50c9a summary: Replace strcpy() with strlcpy(), replace strcat() with strlcat(), replace sprintf() with snprintf(). Prefer using bounded string functions. diffstat: ChangeLog | 6 +++ README.txt | 8 ++-- VisualMagick/installer/inc/version.isx | 4 +- coders/dcm.c | 6 +- coders/dpx.c | 8 ++-- coders/ept.c | 12 +++--- coders/fax.c | 4 +- coders/fpx.c | 6 +- coders/gradient.c | 6 +- coders/heif.c | 2 +- coders/html.c | 6 +- coders/icon.c | 6 +- coders/jpeg.c | 2 +- coders/jxl.c | 2 +- coders/locale.c | 6 +- coders/logo.c | 14 +++--- coders/mat.c | 4 +- coders/meta.c | 6 +- coders/miff.c | 20 +++++----- coders/mpc.c | 12 +++--- coders/pict.c | 2 +- coders/png.c | 18 ++++---- coders/pnm.c | 14 +++--- coders/preview.c | 16 ++++---- coders/ps2.c | 10 ++-- coders/svg.c | 18 ++++----- coders/uil.c | 4 +- coders/webp.c | 4 +- coders/wmf.c | 6 +- coders/wpg.c | 2 +- coders/xbm.c | 12 +++--- coders/xpm.c | 8 ++-- coders/xtrn.c | 16 ++++---- magick/animate.c | 2 +- magick/attribute.c | 8 ++-- magick/blob.c | 4 +- magick/command.c | 67 ++++++++++++++++++++++++--------- magick/constitute.c | 8 ++-- magick/delegate.c | 14 +++--- magick/display.c | 23 ++++++----- magick/image.c | 12 +++--- magick/module.c | 6 +- magick/studio.h | 13 ++++++- magick/utility.c | 18 ++++---- magick/version.h | 4 +- magick/widget.c | 36 +++++++++--------- www/Changelog.html | 8 ++++ www/README.html | 8 ++-- 48 files changed, 278 insertions(+), 223 deletions(-) diffs (truncated from 1764 to 500 lines): diff -r 6ccfd7d001df -r 1d0727a50c9a ChangeLog --- a/ChangeLog Wed Nov 09 19:20:38 2022 -0600 +++ b/ChangeLog Sat Nov 12 10:40:23 2022 -0600 @@ -1,3 +1,9 @@ +2022-11-12 Bob Friesenhahn <[email protected]> + + * ALL: Replace strcpy() with strlcpy(), replace strcat() with + strlcat(), replace sprintf() with snprintf(). Prefer using + bounded string functions. + 2022-11-09 Bob Friesenhahn <[email protected]> * coders/png.c (ReadOnePNGImage): Change ping_file_depth to diff -r 6ccfd7d001df -r 1d0727a50c9a README.txt --- a/README.txt Wed Nov 09 19:20:38 2022 -0600 +++ b/README.txt Sat Nov 12 10:40:23 2022 -0600 @@ -378,10 +378,10 @@ https://github.com/strukturag/libde265 - to read HEIF/h.265 files. Libheif makes use of libde265 for - h.265/HEVC decoding and libx265 for encoding. GraphicsMagick does - not itself provide any h.265/HEVC algoriths and it does not - currently support encoding. + to read HEIF/h.265 files and HEIF/AVIF files. Libheif makes use of + libde265 for h.265/HEVC decoding and libx265 for encoding. + GraphicsMagick does not itself provide any h.265/HEVC algoriths and + it does not currently support encoding. The HEVC codec is covered by a huge number of patents (the MPEG LA HEVC patent list is 164 pages long!). While GraphicsMagick is diff -r 6ccfd7d001df -r 1d0727a50c9a VisualMagick/installer/inc/version.isx --- a/VisualMagick/installer/inc/version.isx Wed Nov 09 19:20:38 2022 -0600 +++ b/VisualMagick/installer/inc/version.isx Sat Nov 12 10:40:23 2022 -0600 @@ -10,5 +10,5 @@ #define public MagickPackageName "GraphicsMagick" #define public MagickPackageVersion "1.4" -#define public MagickPackageVersionAddendum ".020221109" -#define public MagickPackageReleaseDate "snapshot-20221109" +#define public MagickPackageVersionAddendum ".020221112" +#define public MagickPackageReleaseDate "snapshot-20221112" diff -r 6ccfd7d001df -r 1d0727a50c9a coders/dcm.c --- a/coders/dcm.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/dcm.c Sat Nov 12 10:40:23 2022 -0600 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003-2021 GraphicsMagick Group +% Copyright (C) 2003-2022 GraphicsMagick Group % Copyright (C) 2002 ImageMagick Studio % Copyright 1991-1999 E. I. du Pont de Nemours and Company % @@ -6150,7 +6150,7 @@ 2) element vr is set as "xs" ie is not of a fixed type */ use_explicit=True; - strcpy(implicit_vr,explicit_vr); + strlcpy(implicit_vr,explicit_vr,sizeof(implicit_vr)); } } if ((!use_explicit) || (strcmp(implicit_vr,"!!") == 0)) @@ -7360,7 +7360,7 @@ } if (status == MagickPass) { - strcpy(next_image->filename,(*image)->filename); + strlcpy(next_image->filename,(*image)->filename,sizeof(next_image->filename)); next_image->scene=scene; if (image_list == (Image*)NULL) image_list=next_image; diff -r 6ccfd7d001df -r 1d0727a50c9a coders/dpx.c --- a/coders/dpx.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/dpx.c Sat Nov 12 10:40:23 2022 -0600 @@ -531,7 +531,7 @@ \ if (!IS_UNDEFINED_U32(member)) \ { \ - SMPTEBitsToString(member,buffer_); \ + SMPTEBitsToString(member,buffer_,sizeof(buffer_)); \ (void) SetImageAttribute(image,name,buffer_); \ LogSetImageAttribute(name,buffer_); \ } \ @@ -622,7 +622,7 @@ MagickSwabFloat(&tv_info->white_level.f); MagickSwabFloat(&tv_info->integration_time.f); } -STATIC void SMPTEBitsToString(const U32 value, char *str) +STATIC void SMPTEBitsToString(const U32 value, char *str, size_t str_length) { unsigned int pos, @@ -630,11 +630,11 @@ for (pos=8; pos != 0; pos--, shift -= 4) { - (void) sprintf(str,"%01u",(unsigned int) ((value >> shift) & 0x0fU)); + (void) snprintf(str,3,"%01u",(unsigned int) ((value >> shift) & 0x0fU)); str += 1; if ((pos > 2) && (pos % 2)) { - (void) strcat(str,":"); + (void) strlcat(str,":",str_length); str++; } } diff -r 6ccfd7d001df -r 1d0727a50c9a coders/ept.c --- a/coders/ept.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/ept.c Sat Nov 12 10:40:23 2022 -0600 @@ -402,8 +402,8 @@ { do { - (void) strcpy(image->magick,"PS"); - (void) strlcpy(image->filename,filename,MaxTextExtent); + (void) strlcpy(image->magick,"PS",sizeof(image->magick)); + (void) strlcpy(image->filename,filename,sizeof(image->filename)); next_image=SyncNextImageInList(image); if (next_image != (Image *) NULL) image=next_image; @@ -575,16 +575,16 @@ ThrowWriterTemporaryFileException(ps_filename); /* Select desired EPS level */ - (void) strcpy(subformat,"eps"); + (void) strlcpy(subformat,"eps",sizeof(subformat)); if (LocaleCompare(image_info->magick,"EPT2") == 0) - (void) strcpy(subformat,"eps2"); + (void) strlcpy(subformat,"eps2",sizeof(subformat)); else if (LocaleCompare(image_info->magick,"EPT3") == 0) - (void) strcpy(subformat,"eps3"); + (void) strlcpy(subformat,"eps3",sizeof(subformat)); /* JPEG compression requires at least EPS2 */ if ((image->compression == JPEGCompression) && (LocaleCompare(subformat,"EPS") == 0)) - (void) strcpy(subformat,"eps2"); + (void) strlcpy(subformat,"eps2",sizeof(subformat)); FormatString(image->filename,"%s:%.1024s",subformat,ps_filename); if (logging) diff -r 6ccfd7d001df -r 1d0727a50c9a coders/fax.c --- a/coders/fax.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/fax.c Sat Nov 12 10:40:23 2022 -0600 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003-2018 GraphicsMagick Group +% Copyright (C) 2003-2022 GraphicsMagick Group % Copyright (C) 2002 ImageMagick Studio % Copyright 1991-1999 E. I. du Pont de Nemours and Company % @@ -309,7 +309,7 @@ ThrowWriterException(FileOpenError,UnableToOpenFile,image); image_list_length=GetImageListLength(image); clone_info=CloneImageInfo(image_info); - (void) strcpy(clone_info->magick,"FAX"); + (void) strlcpy(clone_info->magick,"FAX",sizeof(clone_info->magick)); scene=0; do { diff -r 6ccfd7d001df -r 1d0727a50c9a coders/fpx.c --- a/coders/fpx.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/fpx.c Sat Nov 12 10:40:23 2022 -0600 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003-2020 GraphicsMagick Group +% Copyright (C) 2003-2022 GraphicsMagick Group % Copyright (C) 2002 ImageMagick Studio % Copyright 1991-1999 E. I. du Pont de Nemours and Company % @@ -894,9 +894,9 @@ summary_info.comments_valid=True; summary_info.comments.length=strlen(comment->value); summary_info.comments.ptr=MagickAllocateMemory(unsigned char *, - strlen(comment->value)+1); + summary_info.comments.length+1); if (summary_info.comments.ptr != (unsigned char *) NULL) - (void) strcpy((char *) summary_info.comments.ptr,comment->value); + (void) strlcpy((char *) summary_info.comments.ptr,comment->value,summary_info.comments.length+1); else ThrowWriterException(CoderError,UnableToSetImageComments,image); } diff -r 6ccfd7d001df -r 1d0727a50c9a coders/gradient.c --- a/coders/gradient.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/gradient.c Sat Nov 12 10:40:23 2022 -0600 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003-2019 GraphicsMagick Group +% Copyright (C) 2003-2022 GraphicsMagick Group % Copyright (C) 2002 ImageMagick Studio % Copyright 1991-1999 E. I. du Pont de Nemours and Company % @@ -139,9 +139,9 @@ DestroyImage(image); return((Image *) NULL); } - (void) strcpy(colorname,"white"); + (void) strlcpy(colorname,"white",sizeof(colorname)); if (PixelIntensityToQuantum(&start_color) > (0.5*MaxRGB)) - (void) strcpy(colorname,"black"); + (void) strlcpy(colorname,"black",sizeof(colorname)); (void) sscanf(image_info->filename,"%*[^-]-%s",colorname); if (!QueryColorDatabase(colorname,&stop_color,exception)) { diff -r 6ccfd7d001df -r 1d0727a50c9a coders/heif.c --- a/coders/heif.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/heif.c Sat Nov 12 10:40:23 2022 -0600 @@ -543,7 +543,7 @@ heif_minor=(encoder_version >> 8) & 0xff; heif_revision=encoder_version & 0xff; *version='\0'; - (void) sprintf(version, + (void) snprintf(version, sizeof(version), "heif v%u.%u.%u", heif_major, heif_minor, heif_revision); diff -r 6ccfd7d001df -r 1d0727a50c9a coders/html.c --- a/coders/html.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/html.c Sat Nov 12 10:40:23 2022 -0600 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003-2017 GraphicsMagick Group +% Copyright (C) 2003-2022 GraphicsMagick Group % Copyright (C) 2002 ImageMagick Studio % Copyright 1991-1999 E. I. du Pont de Nemours and Company % @@ -371,7 +371,7 @@ AppendImageFormat("gif",image->filename); next=image->next; image->next=(Image *) NULL; - (void) strcpy(image->magick,"GIF"); + (void) strlcpy(image->magick,"GIF",sizeof(image->magick)); (void) WriteImage(clone_info,image); image->next=next; /* @@ -385,7 +385,7 @@ image->filename[p-filename]='\0'; break; } - (void) strcat(image->filename,"_map.shtml"); + (void) strlcat(image->filename,"_map.shtml",sizeof(image->filename)); } /* Open image map. diff -r 6ccfd7d001df -r 1d0727a50c9a coders/icon.c --- a/coders/icon.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/icon.c Sat Nov 12 10:40:23 2022 -0600 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003-2020 GraphicsMagick Group +% Copyright (C) 2003-2022 GraphicsMagick Group % Copyright (C) 2002 ImageMagick Studio % Copyright 1991-1999 E. I. du Pont de Nemours and Company % @@ -304,9 +304,9 @@ } format[0]='\0'; if (memcmp(data,"\050\000\000\000",4) == 0) - (void) strcpy(format,"ICODIB"); + (void) strlcpy(format,"ICODIB",sizeof(format)); else if (memcmp(data,"\211PNG\r\n\032\n",8) == 0) - (void) strcpy(format,"PNG"); + (void) strlcpy(format,"PNG",sizeof(format)); if (format[0] == '\0') { MagickFreeResourceLimitedMemory(data); diff -r 6ccfd7d001df -r 1d0727a50c9a coders/jpeg.c --- a/coders/jpeg.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/jpeg.c Sat Nov 12 10:40:23 2022 -0600 @@ -2138,7 +2138,7 @@ profile=MagickAllocateResourceLimitedMemory(unsigned char *,length+14); if (profile == (unsigned char *) NULL) break; - (void) strcpy((char *) profile,"ICC_PROFILE"); + (void) strlcpy((char *) profile,"ICC_PROFILE",sizeof(profile)); profile[12]=(unsigned char) ((i/65519)+1); profile[13]=(unsigned char) ((profile_length/65519)+1); for (j=0; j < (long) length; j++) diff -r 6ccfd7d001df -r 1d0727a50c9a coders/jxl.c --- a/coders/jxl.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/jxl.c Sat Nov 12 10:40:23 2022 -0600 @@ -1126,7 +1126,7 @@ jxl_minor=(encoder_version >> 8) & 0xff; jxl_revision=encoder_version & 0xff; *version='\0'; - (void) sprintf(version, + (void) snprintf(version,sizeof(version), "jxl v%u.%u.%u", jxl_major, jxl_minor, jxl_revision); diff -r 6ccfd7d001df -r 1d0727a50c9a coders/locale.c --- a/coders/locale.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/locale.c Sat Nov 12 10:40:23 2022 -0600 @@ -217,7 +217,7 @@ if (LocaleCompare(keyword,"</locale>") == 0) { ChopLocaleComponents(locale,1); - (void) strcat(locale,"/"); + (void) strlcat(locale,"/",sizeof(locale)); continue; } if (LocaleCompare(keyword,"<localemap>") == 0) @@ -257,7 +257,7 @@ if (LocaleCompare(keyword,"</message>") == 0) { ChopLocaleComponents(locale,2); - (void) strcat(locale,"/"); + (void) strlcat(locale,"/",sizeof(locale)); continue; } if (*keyword == '<') @@ -270,7 +270,7 @@ if (*(keyword+1) == '/') { ChopLocaleComponents(locale,1); - (void) strcat(locale,"/"); + (void) strlcat(locale,"/",sizeof(locale)); continue; } token[strlen(token)-1]='\0'; diff -r 6ccfd7d001df -r 1d0727a50c9a coders/logo.c --- a/coders/logo.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/logo.c Sat Nov 12 10:40:23 2022 -0600 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003-2020 GraphicsMagick Group +% Copyright (C) 2003-2022 GraphicsMagick Group % Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul % Parts Copyright (c) 1989-2000 by Brian V. Smith % Parts Copyright (c) 1991 by Paul King @@ -5011,7 +5011,7 @@ */ if (!(LocaleCompare(image_info->magick,"IMAGE") == 0) && !(LocaleCompare(image_info->magick,"PATTERN") == 0)) - (void) strcpy(clone_info->filename,image_info->magick); + (void) strlcpy(clone_info->filename,image_info->magick,sizeof(clone_info->filename)); /* Search for image name in list @@ -5019,7 +5019,7 @@ for( i=0; i < ArraySize(EmbeddedImageList); i++) if (LocaleCompare(clone_info->filename, EmbeddedImageList[i].name) == 0) { - (void) strcpy(clone_info->magick,EmbeddedImageList[i].magick); + (void) strlcpy(clone_info->magick,EmbeddedImageList[i].magick,sizeof(clone_info->magick)); blob=EmbeddedImageList[i].blob; extent=EmbeddedImageList[i].extent; break; @@ -5273,17 +5273,17 @@ if ((characteristics.monochrome) && (logo_image->columns*logo_image->rows < 4097)) { - (void) strcpy(logo_image->magick,"PBM"); + (void) strlcpy(logo_image->magick,"PBM",sizeof(logo_image->magick)); length=((logo_image->columns*logo_image->rows)/8)+16; } else if (LocaleCompare(image_info->magick,"ROSE") == 0) { - (void) strcpy(logo_image->magick,"PPM"); + (void) strlcpy(logo_image->magick,"PPM",sizeof(logo_image->magick)); length=3*logo_image->columns*logo_image->rows; } else { - (void) strcpy(logo_image->magick,"GIF"); + (void) strlcpy(logo_image->magick,"GIF",sizeof(logo_image->magick)); length=logo_image->columns*logo_image->rows; } blob=ImageToBlob(image_info,logo_image,&length,&image->exception); @@ -5311,7 +5311,7 @@ (void) WriteBlobString(image,buffer); if (((i+1) % 12) == 0) { - (void) strcpy(buffer,"\n "); + (void) strlcpy(buffer,"\n ",sizeof(buffer)); (void) WriteBlobString(image,buffer); } p++; diff -r 6ccfd7d001df -r 1d0727a50c9a coders/mat.c --- a/coders/mat.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/mat.c Sat Nov 12 10:40:23 2022 -0600 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003-2021 GraphicsMagick Group +% Copyright (C) 2003-2022 GraphicsMagick Group % Copyright (C) 2002 ImageMagick Studio % % This program is covered by multiple licenses, which are described in @@ -1462,7 +1462,7 @@ Store MAT header. */ (void) memset(MATLAB_HDR,' ',Min(sizeof(MATLAB_HDR),124)); - sprintf(MATLAB_HDR,"MATLAB 5.0 MAT-file, Platform: %.8s, Created on: %.3s %.3s %2d %2d:%2d:%2d %d", + snprintf(MATLAB_HDR,sizeof(MATLAB_HDR),"MATLAB 5.0 MAT-file, Platform: %.8s, Created on: %.3s %.3s %2d %2d:%2d:%2d %d", OsDesc, DayOfWTab[t->tm_wday], MonthsTab[t->tm_mon], diff -r 6ccfd7d001df -r 1d0727a50c9a coders/meta.c --- a/coders/meta.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/meta.c Sat Nov 12 10:40:23 2022 -0600 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003-2021 GraphicsMagick Group +% Copyright (C) 2003-2022 GraphicsMagick Group % Copyright (C) 2002 ImageMagick Studio % % This program is covered by multiple licenses, which are described in @@ -392,7 +392,7 @@ name = MagickAllocateResourceLimitedMemory(char *,strlen(newstr)+1); if (name == (char *) NULL) goto parse8BIM_failure; - (void) strcpy(name,newstr); + (void) strlcpy(name,newstr,sizeof(name)); break; } state++; @@ -692,7 +692,7 @@ name = MagickAllocateResourceLimitedMemory(char *,strlen(newstr)+1); if (name == (char *) NULL) goto parse8BIMW_failure; - (void) strcpy(name,newstr); + (void) strlcpy(name,newstr,sizeof(name)); break; } state++; diff -r 6ccfd7d001df -r 1d0727a50c9a coders/miff.c --- a/coders/miff.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/miff.c Sat Nov 12 10:40:23 2022 -0600 @@ -2511,11 +2511,11 @@ /* Set image resolution. */ - (void) strcpy(units,"undefined"); + (void) strlcpy(units,"undefined",sizeof(units)); if (image->units == PixelsPerInchResolution) - (void) strcpy(units,"pixels-per-inch"); + (void) strlcpy(units,"pixels-per-inch",sizeof(units)); if (image->units == PixelsPerCentimeterResolution) - (void) strcpy(units,"pixels-per-centimeter"); + (void) strlcpy(units,"pixels-per-centimeter",sizeof(units)); FormatString(buffer,"Resolution=%gx%g units=%.1024s\n", image->x_resolution,image->y_resolution,units); (void) WriteBlobString(image,buffer); @@ -2557,26 +2557,26 @@ if (image->dispose != UndefinedDispose) { if (image->dispose == BackgroundDispose) - (void) strcpy(buffer,"dispose=background\n"); + (void) strlcpy(buffer,"dispose=background\n",sizeof(buffer)); else if (image->dispose == NoneDispose) - (void) strcpy(buffer,"dispose=none\n"); + (void) strlcpy(buffer,"dispose=none\n",sizeof(buffer)); else - (void) strcpy(buffer,"dispose=previous\n"); + (void) strlcpy(buffer,"dispose=previous\n",sizeof(buffer)); (void) WriteBlobString(image,buffer); } if (image->rendering_intent != UndefinedIntent) { if (image->rendering_intent == SaturationIntent) - (void) strcpy(buffer,"rendering-intent=saturation\n"); + (void) strlcpy(buffer,"rendering-intent=saturation\n",sizeof(buffer)); else if (image->rendering_intent == PerceptualIntent) - (void) strcpy(buffer,"rendering-intent=perceptual\n"); + (void) strlcpy(buffer,"rendering-intent=perceptual\n",sizeof(buffer)); else if (image->rendering_intent == AbsoluteIntent) - (void) strcpy(buffer,"rendering-intent=absolute\n"); + (void) strlcpy(buffer,"rendering-intent=absolute\n",sizeof(buffer)); else - (void) strcpy(buffer,"rendering-intent=relative\n"); + (void) strlcpy(buffer,"rendering-intent=relative\n",sizeof(buffer)); (void) WriteBlobString(image,buffer); } if (image->gamma != 0.0) diff -r 6ccfd7d001df -r 1d0727a50c9a coders/mpc.c --- a/coders/mpc.c Wed Nov 09 19:20:38 2022 -0600 +++ b/coders/mpc.c Sat Nov 12 10:40:23 2022 -0600 @@ -1233,11 +1233,11 @@ /* Set image resolution. */ - (void) strcpy(units,"undefined"); + (void) strlcpy(units,"undefined",sizeof(units)); if (image->units == PixelsPerInchResolution) - (void) strcpy(units,"pixels-per-inch"); + (void) strlcpy(units,"pixels-per-inch",sizeof(units)); if (image->units == PixelsPerCentimeterResolution) - (void) strcpy(units,"pixels-per-centimeter"); + (void) strlcpy(units,"pixels-per-centimeter",sizeof(units)); FormatString(buffer,"Resolution=%gx%g units=%.1024s\n", image->x_resolution,image->y_resolution,units); (void) WriteBlobString(image,buffer); @@ -1279,12 +1279,12 @@ if (image->dispose != UndefinedDispose) { if (image->dispose == BackgroundDispose) - (void) strcpy(buffer,"dispose=background\n"); + (void) strlcpy(buffer,"dispose=background\n",sizeof(buffer));