[prev in list] [next in list] [prev in thread] [next in thread]
List: graphicsmagick-commit
Subject: [GM-commit] GraphicsMagick: Fixes based on Coverity analysis.
From: GraphicsMagick Commits <graphicsmagick-commit () lists ! sourceforge ! net>
Date: 2022-04-01 14:05:05
Message-ID: mailman.11467.1648821920.1506.graphicsmagick-commit () lists ! sourceforge ! net
[Download RAW message or body]
changeset 8c5fdda5297d in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=8c5fdda5297d
summary: Fixes based on Coverity analysis.
diffstat:
ChangeLog | 22 ++++++++++++++
Makefile.am | 8 +++--
Makefile.in | 8 +++--
VisualMagick/installer/inc/version.isx | 4 +-
coders/jp2.c | 25 ++++++++++++----
magick/error.c | 32 ++++++++++++++++----
magick/gradient.c | 8 ++++-
magick/locale.c | 4 +-
magick/magick_types.h.in | 51 ++++++++++++++++++++-------------
magick/render.c | 6 ++--
magick/resize.c | 3 +-
magick/version.h | 4 +-
magick/xwindow.c | 9 +++++-
www/Changelog.html | 18 ++++++++++++
www/Changes.html | 2 +-
www/Changes.rst | 2 +-
www/links.html | 7 ++++
www/links.rst | 3 ++
18 files changed, 163 insertions(+), 53 deletions(-)
diffs (truncated from 525 to 500 lines):
diff -r 230c7f549ba5 -r 8c5fdda5297d ChangeLog
--- a/ChangeLog Sat Mar 26 13:22:31 2022 -0500
+++ b/ChangeLog Fri Apr 01 09:04:54 2022 -0500
@@ -1,3 +1,25 @@
+2022-04-01 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+
+ * magick/error.c (ThrowLoggedException): Silence Coverity 376912
+ "Dereference after null check (FORWARD_NULL)".
+
+ * coders/jp2.c (ReadJP2Image): Silence Coverity 264883 "Division
+ or modulo by float zero (DIVIDE_BY_ZERO)".
+ (ReadJP2Image): Fix Coverity 376911 "Improper use of negative
+ value (NEGATIVE_RETURNS)".
+
+ * magick/xwindow.c (MagickXMakeMagnifyImage): Fix Coverity 376906
+ "Division or modulo by zero (DIVIDE_BY_ZERO)".
+
+ * magick/resize.c (ScaleImage): Fix Coverity 376908 "Resource leak
+ (RESOURCE_LEAK)".
+
+ * magick/locale.c (GetLocaleMessageFromTag): Fix Coverity 376907
+ "Out-of-bounds read (OVERRUN)".
+
+ * magick/render.c (DrawPrimitive): Fix Coverity 376904
+ "Out-of-bounds access (OVERRUN)".
+
2022-03-26 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
* version.sh: Prepare for 1.3.38 release.
diff -r 230c7f549ba5 -r 8c5fdda5297d Makefile.am
--- a/Makefile.am Sat Mar 26 13:22:31 2022 -0500
+++ b/Makefile.am Fri Apr 01 09:04:54 2022 -0500
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2021 GraphicsMagick Group
+# Copyright (C) 2004-2022 GraphicsMagick Group
#
# This program is covered by multiple licenses, which are described in
# Copyright.txt. You should have received a copy of Copyright.txt with this
@@ -425,12 +425,13 @@
COVERITY_TARBALL=GraphicsMagick.xz
COVERITY_VERSION=snapshot-@PACKAGE_CHANGE_DATE@
COVERITY_DESCRIPTION='Ubuntu Q@QuantumDepth@'
-# New URL is https://brb.synopsys.com/?project=GraphicsMagick
+COVERITY_COV_INT='cov-int'
+# New URL is https://scan.coverity.com/projects/graphicsmagick?tab=overview
coverity:
$(MAKE) clean
cov-build --dir cov-int $(MAKE)
tar caf $(COVERITY_TARBALL) cov-int
- curl --limit-rate 50K \
+ curl --limit-rate 34K \
--form token=`cat $$HOME/.coverity_key_gm` \
--form email=$(COVERITY_EMAIL) \
--form file=@$(COVERITY_TARBALL) \
@@ -438,6 +439,7 @@
--form description=$(COVERITY_DESCRIPTION) \
https://scan.coverity.com/builds?project=GraphicsMagick
$(RM) $(COVERITY_TARBALL)
+ $(RM) -rf $(COVERITY_COV_INT)
# Rules for a profiled build (according to Paolo Bonzini <bonzini@gnu.org>)
#.PHONY: profile
diff -r 230c7f549ba5 -r 8c5fdda5297d Makefile.in
--- a/Makefile.in Sat Mar 26 13:22:31 2022 -0500
+++ b/Makefile.in Fri Apr 01 09:04:54 2022 -0500
@@ -14,7 +14,7 @@
@SET_MAKE@
-# Copyright (C) 2004-2021 GraphicsMagick Group
+# Copyright (C) 2004-2022 GraphicsMagick Group
#
# This program is covered by multiple licenses, which are described in
# Copyright.txt. You should have received a copy of Copyright.txt with this
@@ -4927,6 +4927,7 @@
COVERITY_TARBALL = GraphicsMagick.xz
COVERITY_VERSION = snapshot-@PACKAGE_CHANGE_DATE@
COVERITY_DESCRIPTION = 'Ubuntu Q@QuantumDepth@'
+COVERITY_COV_INT = 'cov-int'
# Rules for a profiled build (according to Paolo Bonzini <bonzini@gnu.org>)
#.PHONY: profile
@@ -11445,12 +11446,12 @@
@HasGRAPHICSMAGICK_SNAPSHOT_COPY_FALSE@ done
@HasGRAPHICSMAGICK_SNAPSHOT_COPY_FALSE@ cp $(top_srcdir)/ChangeLog \
$(SNAPSHOT_DIRECTORY)/ChangeLog.txt @HasGRAPHICSMAGICK_SNAPSHOT_COPY_FALSE@ cp \
$(top_srcdir)/www/Changelog.html $(SNAPSHOT_DIRECTORY)/ChangeLog.html
-# New URL is https://brb.synopsys.com/?project=GraphicsMagick
+# New URL is https://scan.coverity.com/projects/graphicsmagick?tab=overview
coverity:
$(MAKE) clean
cov-build --dir cov-int $(MAKE)
tar caf $(COVERITY_TARBALL) cov-int
- curl --limit-rate 50K \
+ curl --limit-rate 34K \
--form token=`cat $$HOME/.coverity_key_gm` \
--form email=$(COVERITY_EMAIL) \
--form file=@$(COVERITY_TARBALL) \
@@ -11458,6 +11459,7 @@
--form description=$(COVERITY_DESCRIPTION) \
https://scan.coverity.com/builds?project=GraphicsMagick
$(RM) $(COVERITY_TARBALL)
+ $(RM) -rf $(COVERITY_COV_INT)
# Build symbols files to add 'gm' prefix to functions
gmsymbols:
diff -r 230c7f549ba5 -r 8c5fdda5297d VisualMagick/installer/inc/version.isx
--- a/VisualMagick/installer/inc/version.isx Sat Mar 26 13:22:31 2022 -0500
+++ b/VisualMagick/installer/inc/version.isx Fri Apr 01 09:04:54 2022 -0500
@@ -10,5 +10,5 @@
#define public MagickPackageName "GraphicsMagick"
#define public MagickPackageVersion "1.4"
-#define public MagickPackageVersionAddendum ".020220326"
-#define public MagickPackageReleaseDate "snapshot-20220326"
+#define public MagickPackageVersionAddendum ".020220401"
+#define public MagickPackageReleaseDate "snapshot-20220401"
diff -r 230c7f549ba5 -r 8c5fdda5297d coders/jp2.c
--- a/coders/jp2.c Sat Mar 26 13:22:31 2022 -0500
+++ b/coders/jp2.c Fri Apr 01 09:04:54 2022 -0500
@@ -725,6 +725,10 @@
/* Get current seek position (normally 0) */
pos=TellBlob(image);
+ if (pos < 0)
+ {
+ ThrowJP2ReaderException(BlobError,UnableToObtainOffset,image);
+ }
/* Read header */
if ((magick_length=ReadBlob(image,sizeof(magick),magick)) != sizeof(magick))
@@ -1007,23 +1011,32 @@
*/
for (component=0; component < (long) number_components; component++)
{
- unsigned long
+ double
+ scale_to_quantum;
+
+ unsigned int
component_depth,
i,
max_value;
- double
- scale_to_quantum;
-
component_depth=jas_image_cmptprec(jp2_image,components[component]);
- max_value=MaxValueGivenBits(component_depth);
+ if ((0 == component_depth) || (component_depth > 16))
+ {
+ (void) LogMagickEvent(CoderEvent,GetMagickModule(),
+ "Component %u depth is %u!",
+ component, component_depth);
+ ThrowJP2ReaderException(CorruptImageError,ImproperImageHeader,image);
+ }
+ max_value=(unsigned int) MaxValueGivenBits(component_depth);
+ if ((0 == max_value) || (max_value > 65535))
+ ThrowJP2ReaderException(CorruptImageError,ImproperImageHeader,image);
scale_to_quantum=MaxRGBDouble/max_value;
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
"Channel %d scale is %g", component, scale_to_quantum);
channel_lut[component]=MagickAllocateResourceLimitedArray(Quantum *, (size_t) \
max_value+1,sizeof(Quantum)); if (channel_lut[component] == (Quantum *) NULL)
ThrowJP2ReaderException(ResourceLimitError,MemoryAllocationFailed,image);
- for(i=0; i <= max_value; i++)
+ for (i=0; i <= max_value; i++)
(channel_lut[component])[i]=scale_to_quantum*i+0.5;
}
diff -r 230c7f549ba5 -r 8c5fdda5297d magick/error.c
--- a/magick/error.c Sat Mar 26 13:22:31 2022 -0500
+++ b/magick/error.c Fri Apr 01 09:04:54 2022 -0500
@@ -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
%
@@ -1030,15 +1030,24 @@
if (reason)
{
if (description)
- (void) LogMagickEvent(severity,module,function,line,"Ignored: %.1024s \
(%.1024s)", + (void) LogMagickEvent(severity,
+ module != NULL ? module : "",
+ function != NULL ? function : "",
+ line,"Ignored: %.1024s (%.1024s)",
reason,description);
else
- (void) LogMagickEvent(severity,module,function,line,"Ignored: %.1024s",
+ (void) LogMagickEvent(severity,
+ module != NULL ? module : "",
+ function != NULL ? function : "",
+ line,"Ignored: %.1024s",
reason);
}
else
{
- (void) LogMagickEvent(severity,module,function,line,
+ (void) LogMagickEvent(severity,
+ module != NULL ? module : "",
+ function != NULL ? function : "",
+ line,
"Ignored: exception contains no reason!");
}
ignore=MagickTrue;
@@ -1085,15 +1094,24 @@
if (exception->reason)
{
if (exception->description)
- (void) LogMagickEvent(severity,module,function,line,"%.1024s (%.1024s)",
+ (void) LogMagickEvent(severity,
+ module != NULL ? module : "",
+ function != NULL ? function : "",
+ line,"%.1024s (%.1024s)",
exception->reason,exception->description );
else
- (void) LogMagickEvent(severity,module,function,line,"%.1024s",
+ (void) LogMagickEvent(severity,
+ module != NULL ? module : "",
+ function != NULL ? function : "",
+ line,"%.1024s",
exception->reason);
}
else
{
- (void) LogMagickEvent(severity,module,function,line,
+ (void) LogMagickEvent(severity,
+ module != NULL ? module : "",
+ function != NULL ? function : "",
+ line,
"exception contains no reason!");
}
}
diff -r 230c7f549ba5 -r 8c5fdda5297d magick/gradient.c
--- a/magick/gradient.c Sat Mar 26 13:22:31 2022 -0500
+++ b/magick/gradient.c Fri Apr 01 09:04:54 2022 -0500
@@ -189,7 +189,13 @@
ThrowBinaryException(ResourceLimitError,MemoryAllocationFailed,
image->filename);
if (span <= MaxColormapSize)
- AllocateImageColormap(image,(unsigned long) span);
+ if (!AllocateImageColormap(image,(unsigned long) span))
+ {
+ MagickFreeMemory(pixel_packets);
+ ThrowException3(&image->exception, \
ResourceLimitError,MemoryAllocationFailed, + \
UnableToConstituteImage); + return MagickFail;
+ }
/*
Generate gradient pixels using alpha blending
diff -r 230c7f549ba5 -r 8c5fdda5297d magick/locale.c
--- a/magick/locale.c Sat Mar 26 13:22:31 2022 -0500
+++ b/magick/locale.c Fri Apr 01 09:04:54 2022 -0500
@@ -1,5 +1,5 @@
/*
-% Copyright (C) 2003, 2004 GraphicsMagick Group
+% Copyright (C) 2003 - 2022 GraphicsMagick Group
%
% This program is covered by multiple licenses, which are described in
% Copyright.txt. You should have received a copy of Copyright.txt with this
@@ -198,7 +198,7 @@
(void) strlcpy(category,tag,MaxTextExtent);
ChopLocaleComponents(category,2);
- for (k=0; k < ArraySize(category_map); k++)
+ for (k=0; k < ArraySize(category_map)-1; k++)
{
if (LocaleCompare(category,category_map[k].name) == 0)
{
diff -r 230c7f549ba5 -r 8c5fdda5297d magick/magick_types.h.in
--- a/magick/magick_types.h.in Sat Mar 26 13:22:31 2022 -0500
+++ b/magick/magick_types.h.in Fri Apr 01 09:04:54 2022 -0500
@@ -113,36 +113,47 @@
#else
/* The following typedefs are subtituted when using Unixish configure */
- typedef @INT8_T@ magick_int8_t;
- typedef @UINT8_T@ magick_uint8_t;
+ typedef @INT8_T@ magick_int8_t; /* int8_t */
+ typedef @UINT8_T@ magick_uint8_t; /* uint8_t */
- typedef @INT16_T@ magick_int16_t;
- typedef @UINT16_T@ magick_uint16_t;
+ typedef @INT16_T@ magick_int16_t; /* int16_t */
+ typedef @UINT16_T@ magick_uint16_t; /* uint16_t */
- typedef @INT32_T@ magick_int32_t;
- typedef @UINT32_T@ magick_uint32_t;
+ typedef @INT32_T@ magick_int32_t; /* int32_t */
+ typedef @UINT32_T@ magick_uint32_t; /* uint32_t */
- typedef @INT64_T@ magick_int64_t;
- typedef @UINT64_T@ magick_uint64_t;
+ typedef @INT64_T@ magick_int64_t; /* int64_t */
+ typedef @UINT64_T@ magick_uint64_t; /* uint64_t */
# if defined(MAGICK_IMPLEMENTATION)
-# define MAGICK_INT32_F @INT32_F@
-# define MAGICK_UINT32_F @UINT32_F@
-# define MAGICK_INT64_F @INT64_F@
-# define MAGICK_UINT64_F @UINT64_F@
+# define MAGICK_INT32_F @INT32_F@ /* %PRId32 */
+# define MAGICK_UINT32_F @UINT32_F@ /* %PRIu32 */
+# define MAGICK_INT64_F @INT64_F@ /* %PRId64 */
+# define MAGICK_UINT64_F @UINT64_F@ /* %PRIu64 */
- typedef @UINTMAX_T@ magick_uintmax_t;
-# define MAGICK_UINTMAX_F @UINTMAX_F@
+ /*
+ C99 special size specifiers:
- typedef @UINTPTR_T@ magick_uintptr_t;
-# define MAGICK_UINTPTR_F @UINTPTR_F@
+ hh - signed char / unsigned char
+ h - short / unsigned short
+ ll - long long / unsigned long long
+ j - intmax_t / uintmax_t
+ z - signed size_t / size_t
+ t - ptrdiff_t / unsigned ptrdiff_t
+ */
-# define MAGICK_SIZE_T_F @MAGICK_SIZE_T_F@
-# define MAGICK_SIZE_T @MAGICK_SIZE_T@
+ typedef @UINTMAX_T@ magick_uintmax_t; /* uintmax_t */
+# define MAGICK_UINTMAX_F @UINTMAX_F@ /* %ju */
+
+ typedef @UINTPTR_T@ magick_uintptr_t; /* uintptr_t */
+# define MAGICK_UINTPTR_F @UINTPTR_F@ /* %tu */
-# define MAGICK_SSIZE_T_F @MAGICK_SSIZE_T_F@
-# define MAGICK_SSIZE_T @MAGICK_SSIZE_T@
+# define MAGICK_SIZE_T_F @MAGICK_SIZE_T_F@ /* %zu */
+# define MAGICK_SIZE_T @MAGICK_SIZE_T@ /* size_t */
+
+# define MAGICK_SSIZE_T_F @MAGICK_SSIZE_T_F@ /* %zd */
+# define MAGICK_SSIZE_T @MAGICK_SSIZE_T@ /* ssize_t */
#endif /* defined(MAGICK_IMPLEMENTATION) */
diff -r 230c7f549ba5 -r 8c5fdda5297d magick/render.c
--- a/magick/render.c Sat Mar 26 13:22:31 2022 -0500
+++ b/magick/render.c Fri Apr 01 09:04:54 2022 -0500
@@ -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
%
@@ -5907,7 +5907,7 @@
dvalue=ceil(primitive_info->point.x-0.5);
if (MAGICK_ISNAN(dvalue) || ((dvalue < DTOLONG_MIN)) || (dvalue > DTOLONG_MAX))
{
- char double_str[18];
+ char double_str[MaxTextExtent];
FormatString(double_str,"%g",dvalue);
ThrowException(&image->exception,DrawError,PrimitiveArithmeticOverflow,double_str);
return MagickFail;
@@ -5916,7 +5916,7 @@
dvalue=ceil(primitive_info->point.y-0.5);
if (MAGICK_ISNAN(dvalue) || ((dvalue < DTOLONG_MIN)) || (dvalue > DTOLONG_MAX))
{
- char double_str[18];
+ char double_str[MaxTextExtent];
FormatString(double_str,"%g",dvalue);
ThrowException(&image->exception,DrawError,PrimitiveArithmeticOverflow,double_str);
return MagickFail;
diff -r 230c7f549ba5 -r 8c5fdda5297d magick/resize.c
--- a/magick/resize.c Sat Mar 26 13:22:31 2022 -0500
+++ b/magick/resize.c Fri Apr 01 09:04:54 2022 -0500
@@ -1,5 +1,5 @@
/*
-% Copyright (C) 2003 - 2019 GraphicsMagick Group
+% Copyright (C) 2003 - 2022 GraphicsMagick Group
% Copyright (C) 2002 ImageMagick Studio
%
% This program is covered by multiple licenses, which are described in
@@ -1805,6 +1805,7 @@
MagickFreeMemory(scale_scanline);
MagickFreeMemory(x_vector);
MagickFreeMemory(y_vector);
+ MagickFreeMemory(y_volumes);
DestroyImage(scale_image);
ThrowImageException3(ResourceLimitError,MemoryAllocationFailed,
UnableToScaleImage);
diff -r 230c7f549ba5 -r 8c5fdda5297d magick/version.h
--- a/magick/version.h Sat Mar 26 13:22:31 2022 -0500
+++ b/magick/version.h Fri Apr 01 09:04:54 2022 -0500
@@ -38,8 +38,8 @@
#define MagickLibVersion 0x272400
#define MagickLibVersionText "1.4"
#define MagickLibVersionNumber 27,24,0
-#define MagickChangeDate "20220326"
-#define MagickReleaseDate "snapshot-20220326"
+#define MagickChangeDate "20220401"
+#define MagickReleaseDate "snapshot-20220401"
/*
The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines
diff -r 230c7f549ba5 -r 8c5fdda5297d magick/xwindow.c
--- a/magick/xwindow.c Sat Mar 26 13:22:31 2022 -0500
+++ b/magick/xwindow.c Fri Apr 01 09:04:54 2022 -0500
@@ -1,5 +1,5 @@
/*
-% Copyright (C) 2003 - 2020 GraphicsMagick Group
+% Copyright (C) 2003 - 2022 GraphicsMagick Group
% Copyright (C) 2002 ImageMagick Studio
%
% This program is covered by multiple licenses, which are described in
@@ -7195,6 +7195,13 @@
magnify>>=1;
while (magnify > windows->magnify.height)
magnify>>=1;
+ if (magnify == 0)
+ {
+ if (previous_magnify != 0)
+ magnify = previous_magnify;
+ else
+ magnify = 1;
+ }
if (magnify != previous_magnify)
{
unsigned int
diff -r 230c7f549ba5 -r 8c5fdda5297d www/Changelog.html
--- a/www/Changelog.html Sat Mar 26 13:22:31 2022 -0500
+++ b/www/Changelog.html Fri Apr 01 09:04:54 2022 -0500
@@ -35,8 +35,26 @@
<div class="document">
+<p>2022-04-01 Bob Friesenhahn <<a class="reference external" \
href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span> \
4;</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p>
+<blockquote>
+<p>* magick/error.c (ThrowLoggedException): Silence Coverity 376912
+"Dereference after null check (FORWARD_NULL)".</p>
+<p>* coders/jp2.c (ReadJP2Image): Silence Coverity 264883 "Division
+or modulo by float zero (DIVIDE_BY_ZERO)".
+(ReadJP2Image): Fix Coverity 376911 "Improper use of negative
+value (NEGATIVE_RETURNS)".</p>
+<p>* magick/xwindow.c (MagickXMakeMagnifyImage): Fix Coverity 376906
+"Division or modulo by zero (DIVIDE_BY_ZERO)".</p>
+<p>* magick/resize.c (ScaleImage): Fix Coverity 376908 "Resource leak
+(RESOURCE_LEAK)".</p>
+<p>* magick/locale.c (GetLocaleMessageFromTag): Fix Coverity 376907
+"Out-of-bounds read (OVERRUN)".</p>
+<p>* magick/render.c (DrawPrimitive): Fix Coverity 376904
+"Out-of-bounds access (OVERRUN)".</p>
+</blockquote>
<p>2022-03-26 Bob Friesenhahn <<a class="reference external" \
href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span> \
4;</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p>
<blockquote>
+<p>* version.sh: Prepare for 1.3.38 release.</p>
<p>* Makefile.am (release, snapshot): Generate SHA-256 checksums as a
by-product of 'make snapshot' or 'make release'.</p>
<p>* www/download.rst: Add documentation regaring SHA-256 checksums.</p>
diff -r 230c7f549ba5 -r 8c5fdda5297d www/Changes.html
--- a/www/Changes.html Sat Mar 26 13:22:31 2022 -0500
+++ b/www/Changes.html Fri Apr 01 09:04:54 2022 -0500
@@ -43,7 +43,7 @@
<p>The following are the <tt class="docutils literal">GraphicsMagick</tt> change \
logs since 2001:</p> <blockquote>
<ul class="simple">
-<li><a class="reference external" href="Changelog.html">2022</a> (nothing released \
yet)</li> +<li><a class="reference external" href="Changelog.html">2022</a> (1.3.38 \
released)</li> <li><a class="reference external" href="ChangeLog-2021.html">2021</a> \
(1.3.37 released)</li> <li><a class="reference external" \
href="ChangeLog-2020.html">2020</a> (1.3.35, 1.3.36 released)</li> <li><a \
class="reference external" href="ChangeLog-2019.html">2019</a> (1.3.32, 1.3.33, \
1.3.34 released)</li>
diff -r 230c7f549ba5 -r 8c5fdda5297d www/Changes.rst
--- a/www/Changes.rst Sat Mar 26 13:22:31 2022 -0500
+++ b/www/Changes.rst Fri Apr 01 09:04:54 2022 -0500
@@ -46,7 +46,7 @@
The following are the ``GraphicsMagick`` change logs since 2001:
- * 2022_ (nothing released yet)
+ * 2022_ (1.3.38 released)
* 2021_ (1.3.37 released)
diff -r 230c7f549ba5 -r 8c5fdda5297d www/links.html
--- a/www/links.html Sat Mar 26 13:22:31 2022 -0500
+++ b/www/links.html Fri Apr 01 09:04:54 2022 -0500
@@ -67,6 +67,7 @@
<p>Debian <a class="reference external" \
href="http://packages.debian.org/search?keywords=GraphicsMagick&amp;searchon=names&amp;suite=all&amp;section=main">GraphicsMagick \
packages</a>.</p> <p><a class="reference external" \
href="http://en.wikipedia.org/wiki/GraphicsMagick">WikiPedia</a> GraphicsMagick \
Entry.</p> <p><a class="reference external" \
href="https://www.openhub.net/p/graphics_magick">Black Duck | Open HUB</a> \
GraphicsMagick Entry.</p> +<p><a href="#id21"><span class="problematic" \
id="id22">`Repology <https://repology.org/project/graphicsmagick/versions`_</span></a> \
GraphicsMagick Package Versions in OS distributions.</p> <p><a class="reference \
external" href="https://sourceforge.net/projects/graphicsmagick/">SourceForge</a> \
GraphicsMagick Entry.</p> <p><a class="reference external" \
href="http://stackoverflow.com/questions/tagged/graphicsmagick?">GraphicsMagick \
questions on StackOverflow</a>.</p> <p><a class="reference external" \
href="https://abi-laboratory.pro/tracker/timeline/graphicsmagick/">GraphicsMagick \
ABI/API Changes</a>.</p> @@ -201,6 +202,12 @@
<h1><a class="toc-backref" href="#id20">Stock Photos</a></h1>
<p><a class="reference external" href="https://morguefile.com/">MorgueFile</a>, Free \
high-resolution stock photo images.</p> </div>
+<div class="system-messages section">
+<h1>Docutils System Messages</h1>
+<div class="system-message" id="id21">
+<p class="system-message-title">System Message: ERROR/3 (<tt \
class="docutils">/home/bfriesen/src/GM/www/links.rst</tt>, line 30); <em><a \
href="#id22">backlink</a></em></p>
_______________________________________________
Graphicsmagick-commit mailing list
Graphicsmagick-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/graphicsmagick-commit
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic