From 5f4504bb03f4edeeef8c2633dc5ba03a4c2a8a97 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Tue, 15 Jun 2021 15:14:26 +1000 Subject: [PATCH 1/2] Limit sprintf modes to 10 characters --- src/libImaging/Convert.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/libImaging/Convert.c b/src/libImaging/Convert.c index 8c7be36a278..1fa74a13b3b 100644 --- a/src/libImaging/Convert.c +++ b/src/libImaging/Convert.c @@ -1594,9 +1594,8 @@ convert( #ifdef notdef return (Imaging)ImagingError_ValueError("conversion not supported"); #else - static char buf[256]; - /* FIXME: may overflow if mode is too large */ - sprintf(buf, "conversion from %s to %s not supported", imIn->mode, mode); + static char buf[100]; + sprintf(buf, "conversion from %.10s to %.10s not supported", imIn->mode, mode); return (Imaging)ImagingError_ValueError(buf); #endif } @@ -1645,11 +1644,10 @@ ImagingConvertTransparent(Imaging imIn, const char *mode, int r, int g, int b) { } #else { - static char buf[256]; - /* FIXME: may overflow if mode is too large */ + static char buf[100]; sprintf( buf, - "conversion from %s to %s not supported in convert_transparent", + "conversion from %.10s to %.10s not supported in convert_transparent", imIn->mode, mode); return (Imaging)ImagingError_ValueError(buf); From 518ee3722a99d7f7d890db82a20bd81c1c0327fb Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 30 Jun 2021 23:47:10 +1000 Subject: [PATCH 2/2] Use snprintf instead of sprintf --- src/libImaging/Convert.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libImaging/Convert.c b/src/libImaging/Convert.c index 1fa74a13b3b..9012cfcd74b 100644 --- a/src/libImaging/Convert.c +++ b/src/libImaging/Convert.c @@ -1595,7 +1595,7 @@ convert( return (Imaging)ImagingError_ValueError("conversion not supported"); #else static char buf[100]; - sprintf(buf, "conversion from %.10s to %.10s not supported", imIn->mode, mode); + snprintf(buf, 100, "conversion from %.10s to %.10s not supported", imIn->mode, mode); return (Imaging)ImagingError_ValueError(buf); #endif } @@ -1645,8 +1645,9 @@ ImagingConvertTransparent(Imaging imIn, const char *mode, int r, int g, int b) { #else { static char buf[100]; - sprintf( + snprintf( buf, + 100, "conversion from %.10s to %.10s not supported in convert_transparent", imIn->mode, mode);