delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2021/02/12/10:11:59

X-Recipient: archive-cygwin AT delorie DOT com
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A07E83858020
Authentication-Results: sourceware.org;
dmarc=none (p=none dis=none) header.from=fexl.com
Authentication-Results: sourceware.org; spf=none smtp.mailfrom=pc AT fexl DOT com
X_CMAE_Category: , ,
X-CNFS-Analysis: v=2.4 cv=MdKpB7zf c=1 sm=1 tr=0 ts=60269a8f cx=a_idp_x
a=PDGaJ8dF8zRAWf39Bu4Cgw==:117 a=PDGaJ8dF8zRAWf39Bu4Cgw==:17
a=KGjhK52YXX0A:10 a=IkcTkHD0fZMA:10 a=qa6Q16uM49sA:10 a=Ehmfxr484HgA:10
a=w_pzkKWiAAAA:8 a=ASX2vHs3AAAA:8 a=PsnnGW_NAAAA:20 a=HfvydwfFgI27Mz5wwLwA:9
a=QEXdDO2ut3YA:10 a=sRI3_1zDfAgwuvI8zelB:22 a=hJFwQfz3FhWSUknangnR:22
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
X-Authed-Username: Y2hrb3JlZmZAd2luZHN0cmVhbS5uZXQ=
Authentication-Results: smtp04.aqua.bos.sync.lan
smtp.user=chkoreff AT windstream DOT net; auth=pass (LOGIN)
Subject: Re: setrlimit always fails
To: cygwin AT cygwin DOT com
References: <b0924bcb-56d0-a026-84b5-71750537facb AT fexl DOT com>
<1c233bc7-401b-568f-36d5-48c4f1d4dcea AT cornell DOT edu>
From: Patrick Chkoreff <pc AT fexl DOT com>
Autocrypt: addr=pc AT fexl DOT com; keydata=
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
Message-ID: <efc6c8da-7c22-4c8a-a334-c9803efb0e10@fexl.com>
Date: Fri, 12 Feb 2021 10:11:09 -0500
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
Thunderbird/68.10.0
MIME-Version: 1.0
In-Reply-To: <1c233bc7-401b-568f-36d5-48c4f1d4dcea@cornell.edu>
X-Vade-Verditct: clean
X-Vade-Analysis: gggruggvucftvghtrhhoucdtuddrgeduledriedugdejgecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfujgfpteevqfftpdghkffpfffuvfftgfetofdpqfgfvfenuceurghilhhouhhtmecufedtudenucenucfjughrpefuvfhfhffkffgfgggjtgfgsehtjeertddtfeejnecuhfhrohhmpefrrghtrhhitghkucevhhhkohhrvghffhcuoehptgesfhgvgihlrdgtohhmqeenucggtffrrghtthgvrhhnpeekleeuhfegieduledtfeekfefffedvjeegkedvffdukefhudfgtdeljefhteevueenucffohhmrghinheptgihghifihhnrdgtohhmpdhfvgiglhdrtghomhdpghhithhhuhgsrdgtohhmnecukfhppeegtddrudefkedrudejfedrkeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepgedtrddufeekrddujeefrdekgeenpdhmrghilhhfrhhomhepphgtsehfvgiglhdrtghomhenpdhrtghpthhtoheptgihghifihhnsegthihgfihinhdrtghomhen
X-Vade-Client: WINDSTREAM
X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS,
KAM_LAZY_DOMAIN_SECURITY, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,
SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.2
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on
server2.sourceware.org
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.29
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Unsubscribe: <https://cygwin.com/mailman/options/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=unsubscribe>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
Errors-To: cygwin-bounces AT cygwin DOT com
Sender: "Cygwin" <cygwin-bounces AT cygwin DOT com>

Ken Brown via Cygwin wrote on 2/11/21 9:06 PM:

> Cygwin's setrlimit only supports a few resources, as you can see in the
> source:
> 
> https://cygwin.com/git/?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/resource.cc;h=97777e9d223466b7635b990d6c9e0bfb9e2e9a46;hb=HEAD#l201

Thank you to all who replied.  Shortly after I sent the email, I did
some more searching and did find some posts to that effect, including
one that said setrlimit was originally added as a stub to support
porting OpenSSH.

Also thank you for the pointer to the source code.

The reason I'm asking about setrlimit is that I'm porting the code for
my functional programming language "Fexl" from Linux to Windows under
Cygwin.  (https://fexl.com)

In that language I have embedded functions limit_time, limit_stack, and
limit_memory which call setrlimit.  Those functions can be used to set
sensible limits before running potentially dangerous code.  It's safe
enough to allow running a program entered by a stranger in a text area
on a web site -- even a program which deliberately tries to use an
unbounded amount of memory.

I don't know if native Windows provides enough to flesh out setrlimit
with the equivalent behavior on Linux, even for my very limited usage
(RLIMIT_CPU, RLIMIT_STACK, RLIMIT_AS).  Therefore the only way for me to
do safe limits in Fexl would be to actually count evaluation steps in my
evaluation loop, and memory usage in my allocation wrapper, and halt the
program if it exceeds any user-imposed limits.

So I would have to check evaluation steps here:

https://github.com/chkoreff/Fexl/blob/956bdf85ff5046ebfa7fe582584fedc6881152db/src/value.c#L137

And check memory usage here:

https://github.com/chkoreff/Fexl/blob/956bdf85ff5046ebfa7fe582584fedc6881152db/src/memory.c#L28

It's either that or deprecate my usage of setrlimit altogether, making
it impossible to protect against runaway execution of potentially
dangerous unvetted code.

I will say that my first attempt at compiling the Linux code under
Cygwin went very well.  The only compiler error was in some code that
calls strptime.  To fix that, I had to use some macros in a sequence
like this:

#ifdef __CYGWIN__
/* Ensure that strptime is accessible. */
#define _XOPEN_SOURCE
#endif

#include <stdint.h>
...
#ifndef __CYGWIN__
/* Ensure that strptime is accessible. */
#define __USE_XOPEN
#endif

#include <time.h>


That seems to be the simplest I can make that.

Thank you to all the Cygwin developers who made this porting effort
possible!


-- Patrick
--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

- Raw text -


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