diff --git a/U_Check-for-NULL-strings-before-getting-their-lengths.patch b/U_Check-for-NULL-strings-before-getting-their-lengths.patch new file mode 100644 index 0000000..ae91bf9 --- /dev/null +++ b/U_Check-for-NULL-strings-before-getting-their-lengths.patch @@ -0,0 +1,160 @@ +From ab2f59530b16bdfbf023b8e025c7c8aba3b6fd0c Mon Sep 17 00:00:00 2001 +From: Matthieu Herrb +Date: Sun, 30 May 2021 16:33:48 +0200 +Subject: [PATCH] Check for NULL strings before getting their lengths + +Problem reported by Karsten Trulsen + +Signed-off-by: Matthieu Herrb +--- + src/Font.c | 2 +- + src/FontInfo.c | 2 +- + src/FontNames.c | 2 +- + src/GetColor.c | 2 +- + src/LoadFont.c | 2 +- + src/LookupCol.c | 2 ++ + src/ParseCol.c | 2 +- + src/QuExt.c | 2 +- + src/StNColor.c | 2 +- + src/StName.c | 4 ++-- + 10 files changed, 12 insertions(+), 10 deletions(-) + +Index: libX11-1.7.1/src/Font.c +=================================================================== +--- libX11-1.7.1.orig/src/Font.c ++++ libX11-1.7.1/src/Font.c +@@ -102,7 +102,7 @@ XFontStruct *XLoadQueryFont( + XF86BigfontCodes *extcodes = _XF86BigfontCodes(dpy); + #endif + +- if (strlen(name) >= USHRT_MAX) ++ if (name != NULL && strlen(name) >= USHRT_MAX) + return NULL; + if (_XF86LoadQueryLocaleFont(dpy, name, &font_result, (Font *)0)) + return font_result; +Index: libX11-1.7.1/src/FontInfo.c +=================================================================== +--- libX11-1.7.1.orig/src/FontInfo.c ++++ libX11-1.7.1/src/FontInfo.c +@@ -58,7 +58,7 @@ XFontStruct **info) /* RETURN */ + register xListFontsReq *req; + int j; + +- if (strlen(pattern) >= USHRT_MAX) ++ if (pattern != NULL && strlen(pattern) >= USHRT_MAX) + return NULL; + + LockDisplay(dpy); +Index: libX11-1.7.1/src/FontNames.c +=================================================================== +--- libX11-1.7.1.orig/src/FontNames.c ++++ libX11-1.7.1/src/FontNames.c +@@ -51,7 +51,7 @@ int *actualCount) /* RETURN */ + register xListFontsReq *req; + unsigned long rlen = 0; + +- if (strlen(pattern) >= USHRT_MAX) ++ if (pattern != NULL && strlen(pattern) >= USHRT_MAX) + return NULL; + + LockDisplay(dpy); +Index: libX11-1.7.1/src/GetColor.c +=================================================================== +--- libX11-1.7.1.orig/src/GetColor.c ++++ libX11-1.7.1/src/GetColor.c +@@ -49,7 +49,7 @@ XColor *exact_def) /* RETURN */ + XcmsColor cmsColor_exact; + Status ret; + +- if (strlen(colorname) >= USHRT_MAX) ++ if (colorname != NULL && strlen(colorname) >= USHRT_MAX) + return (0); + + #ifdef XCMS +Index: libX11-1.7.1/src/LoadFont.c +=================================================================== +--- libX11-1.7.1.orig/src/LoadFont.c ++++ libX11-1.7.1/src/LoadFont.c +@@ -39,7 +39,7 @@ XLoadFont ( + Font fid; + register xOpenFontReq *req; + +- if (strlen(name) >= USHRT_MAX) ++ if (name != NULL && strlen(name) >= USHRT_MAX) + return (0); + + if (_XF86LoadQueryLocaleFont(dpy, name, (XFontStruct **)0, &fid)) +Index: libX11-1.7.1/src/LookupCol.c +=================================================================== +--- libX11-1.7.1.orig/src/LookupCol.c ++++ libX11-1.7.1/src/LookupCol.c +@@ -47,6 +47,8 @@ XLookupColor ( + XcmsCCC ccc; + XcmsColor cmsColor_exact; + ++ if (spec == NULL) ++ return 0; + n = (int) strlen (spec); + if (n >= USHRT_MAX) + return 0; +Index: libX11-1.7.1/src/ParseCol.c +=================================================================== +--- libX11-1.7.1.orig/src/ParseCol.c ++++ libX11-1.7.1/src/ParseCol.c +@@ -46,7 +46,7 @@ XParseColor ( + XcmsCCC ccc; + XcmsColor cmsColor; + +- if (!spec) return(0); ++ if (!spec) return(0); + n = (int) strlen (spec); + if (n >= USHRT_MAX) + return(0); +Index: libX11-1.7.1/src/QuExt.c +=================================================================== +--- libX11-1.7.1.orig/src/QuExt.c ++++ libX11-1.7.1/src/QuExt.c +@@ -42,7 +42,7 @@ XQueryExtension( + xQueryExtensionReply rep; + register xQueryExtensionReq *req; + +- if (strlen(name) >= USHRT_MAX) ++ if (name != NULL && strlen(name) >= USHRT_MAX) + return false; + + if (name && strlen (name) < 256) +Index: libX11-1.7.1/src/StNColor.c +=================================================================== +--- libX11-1.7.1.orig/src/StNColor.c ++++ libX11-1.7.1/src/StNColor.c +@@ -47,7 +47,7 @@ int flags) /* DoRed, DoGreen, DoBlue */ + XcmsColor cmsColor_exact; + XColor scr_def; + +- if (strlen(name) >= USHRT_MAX) ++ if (name != NULL && strlen(name) >= USHRT_MAX) + return 0; + #ifdef XCMS + /* +Index: libX11-1.7.1/src/StName.c +=================================================================== +--- libX11-1.7.1.orig/src/StName.c ++++ libX11-1.7.1/src/StName.c +@@ -37,7 +37,7 @@ XStoreName ( + Window w, + _Xconst char *name) + { +- if (strlen(name) >= USHRT_MAX) ++ if (name != NULL && strlen(name) >= USHRT_MAX) + return 0; + return XChangeProperty(dpy, w, XA_WM_NAME, XA_STRING, /* */ + 8, PropModeReplace, (_Xconst unsigned char *)name, +@@ -50,7 +50,7 @@ XSetIconName ( + Window w, + _Xconst char *icon_name) + { +- if (strlen(icon_name) >= USHRT_MAX) ++ if (icon_name != NULL && strlen(icon_name) >= USHRT_MAX) + return 0; + return XChangeProperty(dpy, w, XA_WM_ICON_NAME, XA_STRING, 8, + PropModeReplace, (_Xconst unsigned char *)icon_name, diff --git a/libX11.changes b/libX11.changes index b829158..39d4118 100644 --- a/libX11.changes +++ b/libX11.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon May 31 15:33:38 UTC 2021 - Stefan Dirsch + +- U_Check-for-NULL-strings-before-getting-their-lengths.patch + * regression in libX11 1.7.1 (boo#1186643) + fixes segfaults for xforms applications like fdesign + ------------------------------------------------------------------- Tue May 18 15:57:02 UTC 2021 - Stefan Dirsch diff --git a/libX11.spec b/libX11.spec index 0de73b5..e6d08df 100644 --- a/libX11.spec +++ b/libX11.spec @@ -33,6 +33,7 @@ Patch0: p_khmer-compose.diff Patch1: p_xlib_skip_ext_env.diff # PATCH-FIX-UPSTREAM en-locales.diff fdo#48596 bnc#388711 -- Add missing data for more en locales Patch2: en-locales.diff +Patch3: U_Check-for-NULL-strings-before-getting-their-lengths.patch BuildRequires: fdupes BuildRequires: libtool @@ -137,6 +138,7 @@ test -f nls/ja.S90/XLC_LOCALE.pre && exit 1 %patch0 %patch1 %patch2 +%patch3 -p1 %build %configure \