This is the mail archive of the
cygwin-patches
mailing list for the Cygwin project.
[PATCH] Cygwin: fhandler_termios::tcsetpgrp: check that argument is non-negative
- From: Ken Brown <kbrown at cornell dot edu>
- To: "cygwin-patches at cygwin dot com" <cygwin-patches at cygwin dot com>
- Date: Wed, 24 Jul 2019 15:34:55 +0000
- Subject: [PATCH] Cygwin: fhandler_termios::tcsetpgrp: check that argument is non-negative
- Arc-authentication-results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=cornell.edu;dmarc=pass action=none header.from=cornell.edu;dkim=pass header.d=cornell.edu;arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pTGsK9ol2WW1aPD7SstNvMOOstHHU53J5eU2jCQ/6RE=; b=UNqnfgYUXIKyHfm42gjLK7mV4m+l8rPc52ZXmyc2Wsoz36VE8tH+u90sRrAijdBFRGUGGvek30mfGKwg+FB2FBYUSiaYUueVj1TrurzQJX9yf7K1V3NZSs3o+P9RGHfWiOJhm9J5UFeA/Mel6j1BjxC9dmRtPviE7kOEq+On535ERoXejoelsn5S0C6Ozo0TaAE3UnPqANKPEQY1XjBAGGLuahC1F6Uf9dW+ASfhmia2heyWPpzN06aiieJemThazTfQVHdb21s+QuPEWMWqRWKSI/69WuKz9rGwJcIKc2qplY/UEII8e5xpqgpDLoqmDBuu8WyjovAVj2Rwxq3+2A==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c1Dpd6QI3+v5r0sOL6F/FIbxF9F6WKoKgujwZJsxczZx40U0AKqTV1KLRgVYMSUrR1tRAe5rVmCRi8dIm7aNG3J514Pn98idqO1F3E0+Q9HtBqcoRNUBo7laQNZGMcVfcm2aeDnRCpQelRbBmgEygkBQYvuTMjNNAG9Jv2wOwUcixDeIqHkMJGVuZQ9YNoKHVp2UrGalFSS9YlhjmxA+ax46eKEW1+O1eb4wAEUb3QIoUqrAHAezHNM/UYQAKzSi+CINxCFQb5nIC6iNOO07VYqwKJ+z7bBbwbSR4LQjYP670ywFIPqk6tN7rHF5g+wQbdppICQ/sXLVkqTj7stJRg==
Return -1 with EINVAL if pgid < 0. This fixes the gdb problem
reported here:
https://cygwin.com/ml/cygwin/2019-07/msg00166.html
---
winsup/cygwin/fhandler_termios.cc | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/winsup/cygwin/fhandler_termios.cc b/winsup/cygwin/fhandler_termios.cc
index 4ce53433a..5b0ba5603 100644
--- a/winsup/cygwin/fhandler_termios.cc
+++ b/winsup/cygwin/fhandler_termios.cc
@@ -69,6 +69,11 @@ fhandler_termios::tcsetpgrp (const pid_t pgid)
set_errno (EPERM);
return -1;
}
+ else if (pgid < 0)
+ {
+ set_errno (EINVAL);
+ return -1;
+ }
int res;
while (1)
{
--
2.21.0