From patchwork Wed Nov 1 04:52:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yaakov Selkowitz X-Patchwork-Id: 117672 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp422284qgn; Tue, 31 Oct 2017 21:53:52 -0700 (PDT) X-Google-Smtp-Source: ABhQp+TiG6XmvMBklb8luLqYemyknaQojkvZ6OnZGAgUrscL2l0AymMw1aAIMJwI1J0KvG4D/r6N X-Received: by 10.98.60.211 with SMTP id b80mr5028616pfk.4.1509512031959; Tue, 31 Oct 2017 21:53:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509512031; cv=none; d=google.com; s=arc-20160816; b=eWZsf0HapE7MYeU6d5hfs5OkX6f9jMsja8v/0wsWGXsbUzANrjGUle4tN1HQSJXL28 +fxBC6+9xWfHeffN6y6UMs02/iRJQK5+HZxeLDFYtC3ArTjhxX1xzeb74ZJHFomCu0AF vrh20hb5tt21SEAHnn2SQ4R/oSWgWMg1XguQJvRTraOEHN844s90r/SxNL2M3DOjhZwm XLULLYhWWNJDm1xfY2Ao5y4Bre1LI+3FVrjxFveCKaYM6jfperMjNri/DHUnBeAb09Mb dhTeqwjTvsc22o9TgtvrpN5VT2J1/yQm1apIn20yfvZ9CK51dhNMxjw82U15YlEtansS 7jgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:to:from:dmarc-filter :delivered-to:sender:list-help:list-post:list-archive:list-subscribe :list-unsubscribe:list-id:precedence:mailing-list:dkim-signature :domainkey-signature:arc-authentication-results; bh=qpatGmlFUM6KBnzIKmV0swG4pvTClviITBqYzaSNUjo=; b=ASs7EvLfFJevYYa4OnH5xmR2jzzeEbopVSt5aJBZnf5NxUn9qhYGkgdba3Gei9HW7f FFMyv52qUE3gW3Kss5w5uYMdE+HZytcjUeyxHiIjrk2OZhcYnBMzKXbIA5ATr2aWWA8W JkfEViDd9rSdImhv5sRj+PheYrGW5co43XUFF43Fg2I7Lh/Y3jZRqrdu41811HCugzLl TvE17FXshxVbOKlAHLqsU9dYjqT2Gn1PFNpmAen1n5OJYL/lfJqQRnxa8ZdvpN8wrIpV SEiKv4pFw8JoY7+NfFM4wArVWyX3SnHxILiBDS5EzWlOyEx4CvFDvaYZE2TiK7j+VmVs 7Inw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=lLnr/mmP; spf=pass (google.com: domain of newlib-return-15298-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=newlib-return-15298-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id k75si3874410pfh.200.2017.10.31.21.53.51 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Oct 2017 21:53:51 -0700 (PDT) Received-SPF: pass (google.com: domain of newlib-return-15298-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=lLnr/mmP; spf=pass (google.com: domain of newlib-return-15298-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=newlib-return-15298-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id:in-reply-to :references; q=dns; s=default; b=ZIeX0hZW99Oe5jkpmgG0ffBfC40BN04 iFbwlzz6lMEO3dcx33u+X6Dxl+w9FRaB9aHFNLYHLt1gGGTzjtA8KSjyg6VCQqT4 ySfpsp1528/g4gDlc++Wa5IO5oKf6Q7jFEPosTAnm7MsyQPWonntLsGZrwZxnE57 BAN7TUqJ7AFA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id:in-reply-to :references; s=default; bh=EX3UPBKR9Swv64wyoqBAPdzebC8=; b=lLnr/ mmPaB6u0tdjA+7vBbFWOKEHetrgqxRZynu/UheFcDhpmlqyYmtTMPyAwup0WhF7P Bb7H2l3m095J+tWI8D64HloI/JY6tFlcKmPasVvKPMcUtOIDd+9y/TUHIBWL95cz yAcGRQPqfpxx+o/RcyB61fOwoxub5S/O6f/kGc= Received: (qmail 106666 invoked by alias); 1 Nov 2017 04:53:06 -0000 Mailing-List: contact newlib-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: newlib-owner@sourceware.org Delivered-To: mailing list newlib@sourceware.org Received: (qmail 106586 invoked by uid 89); 1 Nov 2017 04:53:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=revoke X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 01 Nov 2017 04:53:04 +0000 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 39A4181DE1 for ; Wed, 1 Nov 2017 04:53:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 39A4181DE1 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=yselkowi@redhat.com Received: from localhost.localdomain (ovpn-125-104.rdu2.redhat.com [10.10.125.104]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B8CD260618 for ; Wed, 1 Nov 2017 04:53:02 +0000 (UTC) From: Yaakov Selkowitz To: newlib@sourceware.org Subject: [PATCH v1 05/10] ssp: add Object Size Checking for basic unistd.h functions Date: Tue, 31 Oct 2017 23:52:41 -0500 Message-Id: <20171101045246.16596-6-yselkowi@redhat.com> In-Reply-To: <20171101045246.16596-1-yselkowi@redhat.com> References: <20171101045246.16596-1-yselkowi@redhat.com> Signed-off-by: Yaakov Selkowitz --- newlib/libc/include/ssp/unistd.h | 51 ++++++++++++++++++++++++++++++++++++++++ newlib/libc/include/sys/unistd.h | 10 ++++++++ 2 files changed, 61 insertions(+) create mode 100644 newlib/libc/include/ssp/unistd.h -- 2.14.3 diff --git a/newlib/libc/include/ssp/unistd.h b/newlib/libc/include/ssp/unistd.h new file mode 100644 index 000000000..e5089364e --- /dev/null +++ b/newlib/libc/include/ssp/unistd.h @@ -0,0 +1,51 @@ +/* $NetBSD: unistd.h,v 1.7 2015/06/25 18:41:03 joerg Exp $ */ + +/*- + * Copyright (c) 2006 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Christos Zoulas. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _SSP_UNISTD_H_ +#define _SSP_UNISTD_H_ + +#include + +#if __SSP_FORTIFY_LEVEL > 0 +__BEGIN_DECLS + +__ssp_redirect0(ssize_t, read, (int __fd, void *__buf, size_t __len), \ + (__fd, __buf, __len)); + +__ssp_redirect(ssize_t, readlink, (const char *__restrict __path, \ + char *__restrict __buf, size_t __len), (__path, __buf, __len)); + +__ssp_redirect_raw(char *, getcwd, getcwd, (char *__buf, size_t __len), + (__buf, __len), __buf != 0, __ssp_bos); + +__END_DECLS + +#endif /* __SSP_FORTIFY_LEVEL > 0 */ +#endif /* _SSP_UNISTD_H_ */ diff --git a/newlib/libc/include/sys/unistd.h b/newlib/libc/include/sys/unistd.h index 75f8a51df..3cc5bd3b8 100644 --- a/newlib/libc/include/sys/unistd.h +++ b/newlib/libc/include/sys/unistd.h @@ -13,6 +13,10 @@ extern "C" { #include #include +#if _FORTIFY_SOURCE > 0 +#include +#endif + extern char **environ; void _EXFUN(_exit, (int __status ) _ATTRIBUTE ((__noreturn__))); @@ -93,7 +97,9 @@ int _EXFUN(fdatasync, (int __fd)); #if __GNU_VISIBLE char * _EXFUN(get_current_dir_name, (void)); #endif +#if !__SSP_FORTIFY_LEVEL char * _EXFUN(getcwd, (char *__buf, size_t __size )); +#endif #if __BSD_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 500) int _EXFUN(getdomainname ,(char *__name, size_t __len)); #endif @@ -170,7 +176,9 @@ int _EXFUN(pipe2, (int __fildes[2], int flags)); #endif ssize_t _EXFUN(pread, (int __fd, void *__buf, size_t __nbytes, off_t __offset)); ssize_t _EXFUN(pwrite, (int __fd, const void *__buf, size_t __nbytes, off_t __offset)); +#if !__SSP_FORTIFY_LEVEL _READ_WRITE_RETURN_TYPE _EXFUN(read, (int __fd, void *__buf, size_t __nbyte )); +#endif #if __BSD_VISIBLE int _EXFUN(rresvport, (int *__alport)); int _EXFUN(revoke, (char *__path)); @@ -290,8 +298,10 @@ void _EXFUN(sync, (void)); #endif #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 4 +#if !__SSP_FORTIFY_LEVEL ssize_t _EXFUN(readlink, (const char *__restrict __path, char *__restrict __buf, size_t __buflen)); +#endif int _EXFUN(symlink, (const char *__name1, const char *__name2)); #endif #if __ATFILE_VISIBLE