Bug 27115 - openmotif-2.2 compat
Summary: openmotif-2.2 compat
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: openmotif (show other bugs)
Version: unstable
Hardware: all Linux
: P3 major
Assignee: Michael Shigorin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-03-24 18:24 MSK by Aleksandr Yakimov
Modified: 2012-04-11 20:42 MSK (History)
6 users (show)

See Also:


Attachments
gentoo distfiles/openmotif-2.2.3-patches-4.tar.bz2 (20.12 KB, application/octet-stream)
2012-03-25 00:23 MSK, Michael Shigorin
no flags Details
Патч c XtNumber() (282 bytes, patch)
2012-03-25 01:30 MSK, vx8400
no flags Details | Diff
malloc/free (551 bytes, text/plain)
2012-03-25 01:32 MSK, vx8400
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Aleksandr Yakimov 2012-03-24 18:24:50 MSK
Для многих бинарных пакетов, например http://altlinux.org/CryptoPro ( cprocsp-rdr-gui ) нужны библиотеки libMrm.so.3 и libXm.so.3 из openmotif-2.2.

В RHEL есть пакет openmotif22 с этими библиотеками (в openmotif-2.3 уже *.so.4), и в ALT это актуальная проблема.
Comment 2 Aleksandr Yakimov 2012-03-24 20:25:47 MSK
Спасибо, а в p5-p6-p7 это имеет шансы появиться?
Comment 3 Michael Shigorin 2012-03-24 20:29:10 MSK
2.2 перестал собираться (сегфолт в демках), продолжаю пилить 2.2.{3,4}.

С архивным пакетом заработало?
Comment 4 Michael Shigorin 2012-03-24 21:46:32 MSK
Вспомнил: 2.2.4 собирался на x86_64, но взрывался на i586 (а обновление до 2.3.x было ещё и по причине bug #20114):

In file included from /usr/include/string.h:658:0,
                 from /usr/include/X11/Intrinsic.h:61,
                 from ./../Mrm/MrmAppl.h:51,
                 from MrmIheader.c:83:
In function 'strcpy',
    inlined from 'Idb__HDR_GetHeader' at MrmIheader.c:232:11:
/usr/include/bits/string3.h:105:3: error: call to __builtin___strcpy_chk will always overflow destination buffer
make[3]: *** [MrmIheader.lo] Error 1

Если хотите, помогите исправить сборку http://fly.osdn.org.ua/~mike/tmp/libopenmotif3-2.2.4-alt2.src.rpm на сизифе/[pt]{6,7}; и если удобно, проверьте на p5: http://fly.osdn.org.ua/~mike/repos/libopenmotif3-M51/
Comment 5 Michael Shigorin 2012-03-24 21:55:58 MSK
2 cas: тебе по части совместимости может быть важно, посмотри.
Comment 6 Andrey Cherepanov 2012-03-24 23:30:54 MSK
(В ответ на комментарий №5)
> 2 cas: тебе по части совместимости может быть важно, посмотри.
Миша, я читаю все баги. Я в курсе проблемы, сам с нею натыкался при тестировании CryptoPro. Но, так как пакет не из основных, то я решил подождать. Проблема актуальна, буду по мере сил помогать.
Comment 7 Michael Shigorin 2012-03-25 00:23:12 MSK
Created attachment 5409 [details]
gentoo distfiles/openmotif-2.2.3-patches-4.tar.bz2

(In reply to comment #6)
> Я в курсе проблемы, сам с нею натыкался при тестировании CryptoPro.
Так сказал бы хоть...

Не хватало однострочного patch/16_all_mrm_buffer_overflow.patch из distfiles/openmotif-2.2.3-patches-4.tar.bz2, обнаружившегося в гентушечке.

Просьба потестировать: http://git.altlinux.org/tasks/67760/
Comment 8 vx8400 2012-03-25 01:30:32 MSK
Created attachment 5410 [details]
Патч c XtNumber()
Comment 9 vx8400 2012-03-25 01:32:51 MSK
Created attachment 5411 [details]
malloc/free
Comment 10 vx8400 2012-03-25 01:34:27 MSK
(In reply to comment #7)
> Не хватало однострочного patch/16_all_mrm_buffer_overflow.patch из
> distfiles/openmotif-2.2.3-patches-4.tar.bz2, обнаружившегося в гентушечке.

Патч не спасает от переполнения. 
Неправильно используется XtNumber(), которое в этом случае возвращает (размер указателя на строку / sizeof(char)), а не длину строки.

Пример:

#include <stdio.h>
#include "X11/Intrinsic.h"
/* 
В /usr/include/X11/Intrinsic.h определено:
typedef unsigned int    Cardinal;
#define XtNumber(arr)   ((Cardinal) (sizeof(arr) / sizeof(arr[0])))
*/
#define   URMversion              "URM 1.2"
static const  char *idb__database_version = URMversion;
static const  char arr[] = URMversion;

int main (void) {
        printf("XtNumber(idb..): %d\n",XtNumber(idb__database_version));
        printf("sizeof(idb...): %d\n", sizeof(idb__database_version));
        printf("XtNumber(arr): %d\n",XtNumber(arr));
        printf("sizeof(arr): %d\n",sizeof(arr));
        return 0;
}

XtNumber(idb..): 4 -- размер char*
sizeof(idb...): 4
XtNumber(arr): 8   -- длина строки "URM 1.2" с \0
sizeof(arr): 8

Если оставить XtNumber, то cм. "патч с XtNumber()".
Надежнее: второй патч "malloc/free".
Comment 11 vx8400 2012-03-25 01:40:16 MSK
Comment on attachment 5411 [details]
malloc/free

>--- /afs/cern.ch/user/o/olezenin/tmp/MrmIheader.c.orig	2012-03-24 22:18:19.000000001 +0100
>+++ MrmIheader.c	2012-03-24 22:24:47.428975247 +0100
>@@ -229,9 +229,10 @@
> 
>   {
>     /* sscanf() may call ungetc(), which would write the XmConst string. */
>-    char buf[XtNumber(idb__database_version) + 1];
>+    char *buf = malloc(sizeof(idb__database_version[0])*(strlen(idb__database_version) + 1));
>     strcpy(buf, idb__database_version);
>     sscanf(buf, "URM %d.%d", &db_major, &db_minor);
>+    free(buf);
>   }
>     
>   if ((file_major > db_major) ||
Comment 12 vx8400 2012-03-25 01:44:03 MSK
(In reply to comment #10)
> (In reply to comment #7)
> > Не хватало однострочного patch/16_all_mrm_buffer_overflow.patch из
> > distfiles/openmotif-2.2.3-patches-4.tar.bz2, обнаружившегося в гентушечке.
> 
> Если оставить XtNumber, то cм. "патч с XtNumber()".
> Надежнее: второй патч "malloc/free".

Sorry, дубль. Не заметил, что в гентушном патче strlen().
Патч с const char * = ...  ---> const char[] = ... остается в силе.
Comment 13 Aleksandr Yakimov 2012-03-25 08:41:57 MSK
Набор патчей есть в ftp://ftp.redhat.com/redhat/linux/enterprise/6Workstation/en/os/SRPMS/openmotif22-2.2.3-19.el6.src.rpm

openMotif-2.2.3-CAN-2004-0687-0688.patch
openMotif-2.2.3-CAN-2004-0914.patch
openMotif-2.2.3-CAN-2004-0914_autofoo.patch
openMotif-2.2.3-CAN-2005-0605.patch
openMotif-2.2.3-CVE-2005-3964.patch
openMotif-2.2.3-acinclude.patch
openMotif-2.2.3-autofoo.patch
openMotif-2.2.3-bindings.patch
openMotif-2.2.3-char_not_supported.patch
openMotif-2.2.3-free_children.patch
openMotif-2.2.3-libdir.patch
openMotif-2.2.3-long64.patch
openMotif-2.2.3-motifzone_1193.patch
openMotif-2.2.3-motifzone_1202.patch
openMotif-2.2.3-motifzone_1231.patch
openMotif-2.2.3-mrm.patch
openMotif-2.2.3-multiscreen.patch
openMotif-2.2.3-mwmrc_dir.patch
openMotif-2.2.3-no_Xaw.patch
openMotif-2.2.3-no_demos.patch
openMotif-2.2.3-overrun.patch
openMotif-2.2.3-pixel_length.patch
openMotif-2.2.3-popup_timeout.patch
openMotif-2.2.3-rgbtxt.patch
openMotif-2.2.3-text_paste.patch
openMotif-2.2.3-tmpnam.patch
openMotif-2.2.3-uil_lib.patch
openMotif-2.2.3-utf8.patch
openMotif-2.2.3-vizcount.patch
openMotif-2.2.3-xim-onthespot.patch
openMotif-2.2.3-xmlist_fix.patch
openMotif-2.2.3.tar.gz
openMotif-2.3.0-no_X11R6.patch
openmotif-2.2.3-CAN-2004-0914_sec8.patch

надо посмотреть насколько они пересекаются с гентушными.
Comment 14 Michael Shigorin 2012-03-25 12:55:06 MSK
Вот я и думал вчера, какой отправлять -- 2.2.3 (который в stable/) или 2.2.4 (который тоже доступен).  Последний несколько перекурочен и часть пробегавших патчей там была смержена, судя по прошлогодней записке:

merged upstream:
patch1, ~patch21

dropped:
patch2
patch9
!patch22
!patch23
patch43
patch4

Потому и прошу: проверьте, погоняйте, отзовитесь.  Теперь желательно и архивный 2.2.3, и вчерашний 2.2.4.

2 vx8400: спасибо!
Comment 15 Michael Shigorin 2012-03-26 18:58:42 MSK
(In reply to comment #12)
> Патч с const char * = ...  ---> const char[] = ... остается в силе.
Приложен в libopenmotif3-2.2.4-alt3 в том же таске.

(In reply to comment #13)
> Набор патчей есть в openmotif22-2.2.3-19.el6.src.rpm
Помнится, туда тоже заглядывал, но уже довольно давно (могло быть el5).

Попробую добраться, продолжаю ждать результатов проверки -- иначе придётся заливать as is.
Comment 16 vx8400 2012-03-26 19:13:23 MSK
(В ответ на комментарий №15)
> Попробую добраться, продолжаю ждать результатов проверки -- иначе придётся
> заливать as is.

src.rpm из http://git.altlinux.org/tasks/67760/ собирается на p6, p5, 4.0.

На p6 есть проблема.

Cобрал с libopenmotif3-2.2.4-alt2 программу: http://www.clearskyinstitute.com/xephem/

Вылетает с sigsegv:

% gdb ./xephem
...
(gdb) run
...
Program received signal SIGSEGV, Segmentation fault.
0xb7ea5780 in ?? () from /usr/lib/libXm.so.3
(gdb) bt
#0  0xb7ea5780 in ?? () from /usr/lib/libXm.so.3
#1  0xb7eabf5b in XmStringConcatAndFree () from /usr/lib/libXm.so.3
#2  0xb7f01780 in XmStringLtoRCreate () from /usr/lib/libXm.so.3
#3  0xb7f017c6 in XmStringCreateLtoR () from /usr/lib/libXm.so.3
#4  0x0813122c in set_xmstring (w=0x829bd00, resource=0x820200f "labelString", 
    txt=0x8197720 "ABCDEFGHIJKLMNOPQRSTUVWXYZ\nabcdefghijklmnopqrstuvwxyz\n01234567890 \261\262\263\264\265\266\267\270\271\260") at xmisc.c:172
#5  0x080d6b4e in create_srfshell () at saveres.c:2853
#6  sr_init () at saveres.c:1225
#7  0x080d3bac in sr_reg (w=0x82668e0, res=0x0, cat=0x81bec20 "Main -- Preferences", 
    autosav=1) at saveres.c:623
#8  0x080bd263 in pref_build (menu_bar=0x82453d8) at preferences.c:247
#9  pref_create_pulldown (menu_bar=0x82453d8) at preferences.c:151
#10 0x08130771 in make_main_window (argc=1, argv=0xbfffed74) at xephem.c:696
#11 main (argc=1, argv=0xbfffed74) at xephem.c:212

На p5 и 4.0 все в порядке. Это может быть баг самого xephem, вылезающий только на gcc4.5, etc.

Есть какие-л. стандартные тесты motif?
Comment 17 vx8400 2012-03-26 19:26:29 MSK
(В ответ на комментарий №15)
> (In reply to comment #12)
> > Патч с const char * = ...  ---> const char[] = ... остается в силе.
> Приложен в libopenmotif3-2.2.4-alt3 в том же таске.

Если накладывается openmotif-2.2.3-gentoo-buffer.patch (buf = malloc( strlen(idb..) + 1 ); ... free(buf);), то openmotif-2.2.x-alt-types.patch не нужен. И наоборот.
Comment 18 Aleksandr Yakimov 2012-03-26 23:16:17 MSK
(В ответ на комментарий №15)
> Попробую добраться, продолжаю ждать результатов проверки -- иначе придётся
> заливать as is.

Наверно только к концу недели проверю на ALT, до этого под рукой будет только система-источник патчей ;)
Comment 19 vx8400 2012-03-27 00:12:15 MSK
(In reply to comment #18)
> 
> Наверно только к концу недели проверю на ALT, до этого под рукой будет только
> система-источник патчей ;)

Если поделитесь дистрибутивом КриптоПро CSP 3.6, то могу проверить на ALT.
Comment 20 Aleksandr Yakimov 2012-03-27 00:40:57 MSK
(В ответ на комментарий №19)
> Если поделитесь дистрибутивом КриптоПро CSP 3.6, то могу проверить на ALT.

спокойно можно скачать по ссылке в комментарий №1.
Comment 21 vx8400 2012-03-27 20:26:46 MSK
(В ответ на комментарий №20)
> (В ответ на комментарий №19)
> > Если поделитесь дистрибутивом КриптоПро CSP 3.6, то могу проверить на ALT.
> 
> спокойно можно скачать по ссылке в комментарий №1.

Thx, скачалось, установилось. 
Вопрос: как протестировать линкующиеся с libMrm, libXm библиотеки librdrrndmbio_gui.so libxcpui.so?
Comment 22 Aleksandr Yakimov 2012-03-27 22:05:39 MSK
(В ответ на комментарий №21)
> Вопрос: как протестировать линкующиеся с libMrm, libXm библиотеки
> librdrrndmbio_gui.so libxcpui.so?

судя по документации (качать там же) например включить "биологический ДСЧ" и сгенерировать сертификат.
Comment 23 Lenar Shakirov 2012-03-29 09:56:05 MSK
(В ответ на комментарий №21)
> Thx, скачалось, установилось. 
> Вопрос: как протестировать линкующиеся с libMrm, libXm библиотеки
> librdrrndmbio_gui.so libxcpui.so?

Установить cprocsp-rdr-gui и запустить:
/opt/cprocsp/bin/ia32/cryptcp -creatrqst -dn 'CN=Ivanov E=Ivanov_I@mail.ru' -cont '\\.\HDIMAGE\ivanov' /tmp/zap/rqst

Запустится окно с заголовком "main" в котором прогресс-бар и написано "Press keys or move mouse"

судя по strace оно юзает /usr/lib/libXm.so.3

у меня на p5 без каких либо изменений это работает (и всегда работало)
Comment 24 Michael Shigorin 2012-03-29 13:40:54 MSK
Oops, рука дрогнула и task #67760 отправлен на дежурную пересборку без --test-only.  Я пока не считаю этот баг закрытым, если что.

(In reply to comment #16)
> Есть какие-л. стандартные тесты motif?
Как минимум стопка демок в тарболе.
Comment 25 Repository Robot 2012-03-29 13:49:16 MSK
libopenmotif3-2.2.4-alt3 -> sisyphus:

* Mon Mar 26 2012 Michael Shigorin <mike@altlinux> 2.2.4-alt3
- added patch by vx8400@ (see #27115)
- enabled JPEG and PNG support (thx at@, see 2.3.3-alt2)

* Sat Mar 24 2012 Michael Shigorin <mike@altlinux> 2.2.4-alt2
- fixed build in recent environments with gentoo patch (closes: #27115)
Comment 26 Michael Shigorin 2012-03-29 16:14:55 MSK
Постараюсь досмотреть патчсет.
Comment 27 Aleksandr Yakimov 2012-03-31 16:39:42 MSK
На p5,p6 в отличии от 4.1 какая-то ерунда с установкой lsb-cprocsp-rdr (то что ставит там же и пытается использовать для инициализации своих конфигов). Motif-часть проверить не удалось.
Comment 28 vx8400 2012-03-31 17:22:33 MSK
(В ответ на комментарий №27)
> На p5,p6 в отличии от 4.1 какая-то ерунда с установкой lsb-cprocsp-rdr (то что
> ставит там же и пытается использовать для инициализации своих конфигов).

После apt-get install cprocsp-compat-altlinux-1.0.0-1.noarch.rpm lsb-cprocsp-base-3.6.1-4.noarch.rpm lsb-cprocsp-rdr-3.6.1-4.i486.rpm на p6:

# rpm -ql `rpm -qa | grep -- lsb-cprocsp-rdr`
/etc/opt/cprocsp/config.ini
/opt/cprocsp/bin/ia32
/opt/cprocsp/bin/ia32/cpverify
/opt/cprocsp/bin/ia32/csptest
/opt/cprocsp/bin/ia32/wipefile
/opt/cprocsp/lib/hashes/lsb-cprocsp-rdr
/opt/cprocsp/lib/ia32
/opt/cprocsp/lib/ia32/libcapi10.so
/opt/cprocsp/lib/ia32/libcapi10.so.3
/opt/cprocsp/lib/ia32/libcapi10.so.3.6.1
/opt/cprocsp/lib/ia32/libcpui.so
/opt/cprocsp/lib/ia32/libcpui.so.3
/opt/cprocsp/lib/ia32/libcpui.so.3.6.1
/opt/cprocsp/lib/ia32/librdrdsrf.so
/opt/cprocsp/lib/ia32/librdrdsrf.so.3
/opt/cprocsp/lib/ia32/librdrdsrf.so.3.6.1
/opt/cprocsp/lib/ia32/librdrfat12.so
/opt/cprocsp/lib/ia32/librdrfat12.so.3
/opt/cprocsp/lib/ia32/librdrfat12.so.3.6.1
/opt/cprocsp/lib/ia32/librdrrdr.so
/opt/cprocsp/lib/ia32/librdrrdr.so.3
/opt/cprocsp/lib/ia32/librdrrdr.so.3.6.1
/opt/cprocsp/lib/ia32/librdrrndm.so
/opt/cprocsp/lib/ia32/librdrrndm.so.3
/opt/cprocsp/lib/ia32/librdrrndm.so.3.6.1
/opt/cprocsp/lib/ia32/librdrsup.so
/opt/cprocsp/lib/ia32/librdrsup.so.3
/opt/cprocsp/lib/ia32/librdrsup.so.3.6.1
/opt/cprocsp/sbin/ia32
/opt/cprocsp/sbin/ia32/cpconfig
/opt/cprocsp/sbin/ia32/mount_flash.sh
/opt/cprocsp/sbin/ia32/set_driver_license.sh

Это правильно?
Comment 29 Andrey Cherepanov 2012-04-02 18:10:06 MSK
(В ответ на комментарий №23)
> Установить cprocsp-rdr-gui и запустить:
> /opt/cprocsp/bin/ia32/cryptcp -creatrqst -dn 'CN=Ivanov E=Ivanov_I@mail.ru'
> -cont '\\.\HDIMAGE\ivanov' /tmp/zap/rqst
[cas@cas ~]$ /opt/cprocsp/bin/ia32/cryptcp -creatrqst -dn 'CN=Ivanov E=Ivanov_I@mail.ru' -cont '\\.\HDIMAGE\ivanov' /tmp/zap
CryptCP 3.31 (Debug version) (c) "Crypto-Pro", 2002-2009.
Command prompt Utility for data protection.
���������: -creatrqst -dn CN=Ivanov E=Ivanov_I@mail.ru -cont \\.\HDIMAGE\ivanov /tmp/zap
 -creatrqst - Creates certificate request and saves it into PKCS #10 file.
Error: The Keyset parameter is invalid. (0x8009001F)
[ErrorCode: 0x8009001f]

Очевидно, нужна лицензия. Буду доставать.
Comment 30 Aleksandr Yakimov 2012-04-04 00:37:12 MSK
(В ответ на комментарий №29)
> (В ответ на комментарий №23)
> > Установить cprocsp-rdr-gui и запустить:
> > /opt/cprocsp/bin/ia32/cryptcp -creatrqst -dn 'CN=Ivanov E=Ivanov_I@mail.ru'
> > -cont '\\.\HDIMAGE\ivanov' /tmp/zap/rqst
> [cas@cas ~]$ /opt/cprocsp/bin/ia32/cryptcp -creatrqst -dn 'CN=Ivanov
> E=Ivanov_I@mail.ru' -cont '\\.\HDIMAGE\ivanov' /tmp/zap
> CryptCP 3.31 (Debug version) (c) "Crypto-Pro", 2002-2009.
> Command prompt Utility for data protection.
> ���������: -creatrqst -dn CN=Ivanov E=Ivanov_I@mail.ru -cont \\.\HDIMAGE\ivanov
> /tmp/zap
>  -creatrqst - Creates certificate request and saves it into PKCS #10 file.
> Error: The Keyset parameter is invalid. (0x8009001F)
> [ErrorCode: 0x8009001f]
> 
> Очевидно, нужна лицензия. Буду доставать.
на 4.1 Desktop все работает без особой лицензии. В p5,p6 он не может ld.conf пропатчить и неправильно устанавливается.
Comment 31 Repository Robot 2012-04-09 15:32:53 MSK
libopenmotif3-2.2.4-alt2.M60C.1 -> c6:

* Mon Apr 09 2012 Andrey Cherepanov <cas@altlinux> 2.2.4-alt2.M60C.1
- Backport to c6 for CryptoPro

* Mon Mar 26 2012 Michael Shigorin <mike@altlinux> 2.2.4-alt3
- added patch by vx8400@ (see #27115)
- enabled JPEG and PNG support (thx at@, see 2.3.3-alt2)

* Sat Mar 24 2012 Michael Shigorin <mike@altlinux> 2.2.4-alt2
- fixed build in recent environments with gentoo patch (closes: #27115)
Comment 32 vx8400 2012-04-09 15:46:34 MSK
(В ответ на комментарий №31)
> libopenmotif3-2.2.4-alt2.M60C.1 -> c6:
> 
>
> * Mon Mar 26 2012 Michael Shigorin <mike@altlinux> 2.2.4-alt3
> - added patch by vx8400@ (see #27115)
> 
> * Sat Mar 24 2012 Michael Shigorin <mike@altlinux> 2.2.4-alt2
> - fixed build in recent environments with gentoo patch (closes: #27115)

Если накладывается openmotif-2.2.3-gentoo-buffer.patch, то openmotif-2.2.x-alt-types.patch не нужен, и наоборот.
Comment 33 Michael Shigorin 2012-04-09 20:00:22 MSK
(In reply to comment #31)
> * Mon Apr 09 2012 Andrey Cherepanov <cas@altlinux> 2.2.4-alt2.M60C.1
> - Backport to c6 for CryptoPro
Тебя сборка удовлетворила?

(In reply to comment #32)
> Если накладывается openmotif-2.2.3-gentoo-buffer.patch, то
> openmotif-2.2.x-alt-types.patch не нужен, и наоборот.
Вот потому баг и открыт -- всё пытаюсь выделить ещё кусок времени, взять их cpro и посмотреть самому (а также и патчсет доутрясти).  Сейчас в основном занимался mkimage-profiles.
Comment 34 Repository Robot 2012-04-10 13:11:36 MSK
libopenmotif3-2.2.4-alt3 -> p6:

* Mon Mar 26 2012 Michael Shigorin <mike@altlinux> 2.2.4-alt3
- added patch by vx8400@ (see #27115)
- enabled JPEG and PNG support (thx at@, see 2.3.3-alt2)

* Sat Mar 24 2012 Michael Shigorin <mike@altlinux> 2.2.4-alt2
- fixed build in recent environments with gentoo patch (closes: #27115)
Comment 35 Michael Shigorin 2012-04-10 13:45:59 MSK
Я понял, покой нам только снится. :)
Comment 36 Repository Robot 2012-04-11 20:42:25 MSK
libopenmotif3-2.2.4-alt3 -> t6:

* Mon Mar 26 2012 Michael Shigorin <mike@altlinux> 2.2.4-alt3
- added patch by vx8400@ (see #27115)
- enabled JPEG and PNG support (thx at@, see 2.3.3-alt2)

* Sat Mar 24 2012 Michael Shigorin <mike@altlinux> 2.2.4-alt2
- fixed build in recent environments with gentoo patch (closes: #27115)