delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2019/08/24/14:29:39

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp AT delorie DOT com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
s=badeba3b8450; t=1566671105;
bh=QmdeLQ5hLoQ82A7zMUH5/vtF0Nokh9Awrf5UqTMhmTc=;
h=X-UI-Sender-Class:Date:From:To:Subject:References:In-Reply-To;
b=jVPo3azCkMZv4I/f6gZzt1vjxgnPr7gmXVJ/Jz7Hw/hWBqtsANUOP4eK/3ROhYsQS
Wccp8KmSrc5hkc/w7nH45qg68dzQInI3Fq3pJQIW82H9qOs0tdc7pJX4BCOmlcTXmt
faNt54VDPVexDnUFo6uJ1FMiVEMGRV6SmgLyWz1E=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Message-ID: <5D618105.9020108@gmx.de>
Date: Sat, 24 Aug 2019 20:25:09 +0200
From: "Juan Manuel Guerrero (juan DOT guerrero AT gmx DOT de) [via djgpp AT delorie DOT com]" <djgpp AT delorie DOT com>
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.13) Gecko/20101206 SUSE/3.1.7 Thunderbird/3.1.7
MIME-Version: 1.0
To: djgpp AT delorie DOT com
Subject: Re: [PATCH] exec: fix inversions in leak detection logic
References: <964e3268-2f75-ee73-ab5a-b01bf1aadb98 AT yandex DOT ru> <qjb14m$1kqj$1 AT gioia DOT aioe DOT org> <7209026e-1f1b-e590-00a3-4ed1a424cc0d AT yandex DOT ru> <qjfkbp$1o2c$1 AT gioia DOT aioe DOT org> <bd347f78-b176-6992-291c-2e542241efa1 AT yandex DOT ru> <qjgf7r$1b15$1 AT gioia DOT aioe DOT org> <83d0gzlxgq DOT fsf AT gnu DOT org>
In-Reply-To: <83d0gzlxgq.fsf@gnu.org>
X-Provags-ID: V03:K1:2LCGWaAXezmk4++uX/NtSzHS6sjLgbTGAdkj7jIzYg+kP4G3QQC
NwcxDWq8ERItx4rDvL++PQBplj84QCBS3YgZ0aTY9tuyy9HY6IUP5oxE6Ht2SnTuv45F22a
jqLD3jynPerOMfxY8Tgkw6Mk88qpj33Ki0dd/we0eBB1WgPOn1bUFyLKRG0xQXGAxGX6cAB
GbY/Rt/wtZW63v5uUl2Wg==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:1JDV62GwHDs=:Hlrn5urio0+xEPWVtvnMad
BBuG2MbRl1J5TgI9OdgrV1R4GTI2/TKOMlcSJ6kBmIfe2J3hDHfsT/hwY8rw2teoT22cBYcsM
sgPIOMnJLDZDHEmWo63VWWOh73f79yJtT4j5zszpuNwCXBkRG/RWT5jwvk/1ocv+G+Eqy2dPZ
xJqfueAPIqy0Lpsxz5hMLUUObHPZ9erLuLzHRR2vGt3/9qrO9eYT/BrGY25ikEbEhSCX5gWJs
hRpwpt0Stm874GvkSWU0sBNnC5Lz+VaFQuHRgM9LcVHFv0FEj63SxmocCdq+/vNK78HPM/hBh
OZk6LDGyp8WxNl19ZgjWLuQNEIdiXYFlmac4MXKzCUjA7S4Tk4TUCu6oFSeHYMgEmVEpu0lWY
4qJQ025ZzGMPJJPxI9ECGO098+9H/deE7+PbFjf9gp9eVgTgtensAvX3S12nUhZZ0In5+Kb/c
AGJgPneJGv53c34W6vIFdcqhrxeeojAqXs8AxyiPklPTTIwWF8p46pjkj327/R5HNTangRtbc
82gyDpOtoi4ukOmoKWj6xiHYappVYMpDXmW6aMYcu1nDxr0Kk01yXd8kNrFhn1NWiN+kRf2si
L42VtHQvj96bxwf2ZlEsQkzovWzpIxmKo3oEMsO+FV/WDFXDGCIknBETVv6x/LX0R4wkvbMDI
VgeectpuKP0wbaPB4o7zIKFzo+KAWtOmTWcZfpmjbpUeCWKtjcSNytYnHqHm/qZ2hm0Yqnzx3
k/DbYL/BmpA32VTjB2Bhpi+adhyRp+/zRfJnYBQmpN19yrgwkg+wLFVqQJS6cwKNNaWsVuRee
doRpDbNrAzxCL1UPlB60c9ubRIR7p/KQNaDdNh/CUGDDs4wWlkv85e8B5MN73HPKaoJhpGe+T
lr4FzfERELkEcK+vNTnmdaozjfBdwex9CGVJ3oaY/0YRwA3pA9xVPMx0q67viXyfwTOIeI2Np
wDRF6CgMQrJlyNsDYHX0M2LHrR2sCr3O7Sa1VneCR8D5EDfMfX9dLpcQbA5lGx9od4OGtnyHB
EatDdVPcVsR7kKmKkfurnRofNyUZlkZVkrg0lKyUlVlM6/WMMKdrWbonbEFP26MxQR7yHAXku
YLynaOYCf9WDTlJxC0ivPxv0H5/3tGf0X4DRBgWVpN26BMFnhPDOD/O0AP6gMsIb816hIg8a/
CP0ZUgYFAmnYqS7vkoypM0EojU/YeJgXI/1OFkPVwBkLH5hA==
Reply-To: djgpp AT delorie DOT com

Am 20.08.2019 16:31, schrieb Eli Zaretskii (eliz AT gnu DOT org) [via djgpp AT delorie DOT com]:
>> From: Rod Pemberton<invalid AT lkntrgzxc DOT com>
>> Date: Tue, 20 Aug 2019 05:43:54 -0400
>>
>> DOS and Windows are DJGPP's primary target environments.  If the
>> DJGPP code works properly for DOS and Windows consoles, there is no need
>> to make it compatible with some other environment
>
> That is true, but OTOH there's no special need to refuse the change
> up front.  If the change doesn't cause any trouble to the CWSDPMI
> based setup on DOS, and helps some other environment do something
> useful, why should we refuse to make simple changes?  I see no reason.

I agree with this and thus it is time to bring this issue to an end.
The proposed changes do not break a CWSDPMI based DJGPP setup on DOS
thus I see no reason why the changes should not be accepted.  If I do
not get a proof until tomorrow that the patch below breaks something
I will commit it.  The patch has been out there for more than a week
and that was more than enough time for all realy interested parties
to evaluate/review it.

Regards,
Juan M. Guerrero



	* djgpp/include/process.h: make descriptor leak work-around conditional.
	Provided by Stas Sergeev (stsp2 AT yandex DOT ru).
	See http://www.delorie.com/djgpp/mail-archives/browse.cgi?p=djgpp/2019/08/17/21:43:14

	* djgpp/src/libc/dos/process/dosexec.c: make descriptor leak work-around conditional.
	Provided by Stas Sergeev (stsp2 AT yandex DOT ru).
	See http://www.delorie.com/djgpp/mail-archives/browse.cgi?p=djgpp/2019/08/17/21:43:14



diff -aprNU3 djgpp.orig/include/process.h djgpp/include/process.h
--- djgpp.orig/include/process.h	2015-05-02 07:31:46 +0000
+++ djgpp/include/process.h	2019-08-24 19:41:06 +0000
@@ -52,6 +52,10 @@ int __djgpp_spawn(int _mode, const char
  #define SPAWN_EXTENSION_SRCH    1
  #define SPAWN_NO_EXTENSION_SRCH 2

+#define __spawn_leak_workaround             0x0001 /* free descriptor leaks */
+
+extern int __spawn_flags;
+
  #endif /* !_POSIX_SOURCE */
  #endif /* !__STRICT_ANSI__ */
  #endif /* !__dj_ENFORCE_ANSI_FREESTANDING */
diff -aprNU3 djgpp.orig/src/libc/dos/process/dosexec.c djgpp/src/libc/dos/process/dosexec.c
--- djgpp.orig/src/libc/dos/process/dosexec.c	2018-05-16 20:55:56 +0000
+++ djgpp/src/libc/dos/process/dosexec.c	2019-08-24 19:41:06 +0000
@@ -45,6 +45,7 @@
  extern char **_environ;

  int __dosexec_in_system = 0;
+int __spawn_flags = __spawn_leak_workaround;

  typedef struct {
    unsigned short eseg;
@@ -492,7 +493,8 @@ static int direct_exec_tail (const char
      /* r5 as corresponding DPMI call is supported beginning with v5.  */

      ret = __dpmi_get_capabilities(&flags, dpmi_vendor);
-    if (ret == 0 && strcmp(dpmi_vendor + 2, "CWSDPMI") == 0)
+    if ((ret == 0 && strcmp(dpmi_vendor + 2, "CWSDPMI") == 0)
+        || (__spawn_flags & __spawn_leak_workaround) == 0)
        workaround_descriptor_leaks = 0;
      else
      {

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019