1*88276dfbSKyle Evans /*- 2*88276dfbSKyle Evans * SPDX-License-Identifier: BSD-2-Clause 3*88276dfbSKyle Evans * 4*88276dfbSKyle Evans * Copyright (c) 2024, Klara, Inc. 5*88276dfbSKyle Evans * 6*88276dfbSKyle Evans * Redistribution and use in source and binary forms, with or without 7*88276dfbSKyle Evans * modification, are permitted provided that the following conditions 8*88276dfbSKyle Evans * are met: 9*88276dfbSKyle Evans * 1. Redistributions of source code must retain the above copyright 10*88276dfbSKyle Evans * notice, this list of conditions and the following disclaimer. 11*88276dfbSKyle Evans * 2. Redistributions in binary form must reproduce the above copyright 12*88276dfbSKyle Evans * notice, this list of conditions and the following disclaimer in the 13*88276dfbSKyle Evans * documentation and/or other materials provided with the distribution. 14*88276dfbSKyle Evans * 15*88276dfbSKyle Evans * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16*88276dfbSKyle Evans * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17*88276dfbSKyle Evans * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18*88276dfbSKyle Evans * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19*88276dfbSKyle Evans * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20*88276dfbSKyle Evans * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21*88276dfbSKyle Evans * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22*88276dfbSKyle Evans * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23*88276dfbSKyle Evans * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24*88276dfbSKyle Evans * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25*88276dfbSKyle Evans * POSSIBILITY OF SUCH DAMAGE. 26*88276dfbSKyle Evans */ 27*88276dfbSKyle Evans #ifndef _SSP_POLL_H_ 28*88276dfbSKyle Evans #define _SSP_POLL_H_ 29*88276dfbSKyle Evans 30*88276dfbSKyle Evans #include <ssp/ssp.h> 31*88276dfbSKyle Evans 32*88276dfbSKyle Evans #if __SSP_FORTIFY_LEVEL > 0 33*88276dfbSKyle Evans 34*88276dfbSKyle Evans __BEGIN_DECLS 35*88276dfbSKyle Evans 36*88276dfbSKyle Evans __ssp_redirect_raw_impl(int, poll, poll, 37*88276dfbSKyle Evans (struct pollfd fds[], nfds_t nfds, int timeout)) 38*88276dfbSKyle Evans { 39*88276dfbSKyle Evans if (__ssp_bos(fds) / sizeof(fds[0]) < nfds) 40*88276dfbSKyle Evans __chk_fail(); 41*88276dfbSKyle Evans 42*88276dfbSKyle Evans return (__ssp_real(poll)(fds, nfds, timeout)); 43*88276dfbSKyle Evans } 44*88276dfbSKyle Evans 45*88276dfbSKyle Evans 46*88276dfbSKyle Evans __ssp_redirect_raw_impl(int, ppoll, ppoll, 47*88276dfbSKyle Evans (struct pollfd fds[], nfds_t nfds, 48*88276dfbSKyle Evans const struct timespec *__restrict timeout, 49*88276dfbSKyle Evans const sigset_t *__restrict newsigmask)) 50*88276dfbSKyle Evans { 51*88276dfbSKyle Evans if (__ssp_bos(fds) / sizeof(fds[0]) < nfds) 52*88276dfbSKyle Evans __chk_fail(); 53*88276dfbSKyle Evans 54*88276dfbSKyle Evans return (__ssp_real(ppoll)(fds, nfds, timeout, newsigmask)); 55*88276dfbSKyle Evans } 56*88276dfbSKyle Evans 57*88276dfbSKyle Evans __END_DECLS 58*88276dfbSKyle Evans 59*88276dfbSKyle Evans #endif /* __SSP_FORTIFY_LEVEL > 0 */ 60*88276dfbSKyle Evans #endif /* _SSP_POLL_H_ */ 61