GraphicsMagick: coders/wpg.c Fix loop end to, 256 insert "Palett...
GraphicsMagick Commits <[email protected]> Fri, 20 Oct 2023 11:51:52 -0500
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.10287.1697820729.1370.graphicsmagick-commit@lists.sourceforge.net> |
changeset 58b0460d650a in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=58b0460d650a summary: coders/wpg.c Fix loop end to, 256 insert "Palette" chunk header to debug log. diffstat: ChangeLog | 4 ++++ coders/wpg.c | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diffs (70 lines): diff -r 3f829d7af6ff -r 58b0460d650a ChangeLog --- a/ChangeLog Fri Oct 20 10:13:37 2023 +0200 +++ b/ChangeLog Fri Oct 20 18:51:24 2023 +0200 @@ -1,3 +1,7 @@ +2023-10-19 Fojtik Jaroslav <[email protected]> + coders/wpg.c Fix loop end to 256 insert "Palette" chunk header + to debug log. + 2023-10-19 Fojtik Jaroslav <[email protected]> coders/wpg.c Fix for potentiall access to uninitialised object "Palette". diff -r 3f829d7af6ff -r 58b0460d650a coders/wpg.c --- a/coders/wpg.c Fri Oct 20 10:13:37 2023 +0200 +++ b/coders/wpg.c Fri Oct 20 18:51:24 2023 +0200 @@ -1208,8 +1208,8 @@ typedef struct { - unsigned int StartIndex; - unsigned int NumOfEntries; + magick_uint16_t StartIndex; + magick_uint16_t NumOfEntries; } WPGColorMapRec; /* @@ -1265,7 +1265,7 @@ magick_off_t FilePos, filesize; unsigned char *pPalette = NULL; - unsigned char PaletteItems = 0; + magick_uint16_t PaletteItems = 0; //unsigned char PaletteStartIDX = 0; tCTM CTM; /*current transform matrix*/ @@ -1401,6 +1401,10 @@ case 0x0E: /*Color palette */ WPG_Palette.StartIndex=ReadBlobLSBShort(image); WPG_Palette.NumOfEntries=ReadBlobLSBShort(image); + if(logging) (void)LogMagickEvent(CoderEvent,GetMagickModule(), + "WPG Color palette:\n" + " StartIndex=%u\n" + " NumOfEntries=%u\n", (unsigned)WPG_Palette.StartIndex, (unsigned)WPG_Palette.NumOfEntries); PaletteItems = WPG_Palette.NumOfEntries; if(pPalette==NULL) @@ -1408,7 +1412,7 @@ pPalette = MagickAllocateResourceLimitedMemory(unsigned char *,(size_t)3*256); if(pPalette==NULL) ThrowReaderException(ResourceLimitError,MemoryAllocationFailed,image); - for(i=0; i<255; i++) + for(i=0; i<=255; i++) { pPalette[3*i] = WPG1_Palette[i].Red; pPalette[3*i+1] = WPG1_Palette[i].Green; @@ -1471,11 +1475,13 @@ if(pPalette!=NULL && PaletteItems>0) { - image->colors = PaletteItems; /*WPG_Palette.NumOfEntries;*/ + image->colors = 1 << bpp; + if(PaletteItems < image->colors) + image->colors = PaletteItems; /*WPG_Palette.NumOfEntries;*/ if (!AllocateImageColormap(image,image->colors)) goto NoMemory; image->storage_class = PseudoClass; - for (i=0; i<(int)PaletteItems; i++) + for (i=0; i<image->colors; i++) { image->colormap[i].red = ScaleCharToQuantum(pPalette[3*i]); image->colormap[i].green=ScaleCharToQuantum(pPalette[3*i+1]);