From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1791) id F2B9A3882171; Mon, 5 Jun 2023 15:53:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F2B9A3882171 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1685980439; bh=jQMbTCo2OyD4T/5iQ6qH+vkGp7nTVJAlbjeVbSBoNTQ=; h=From:To:Subject:Date:From; b=TsvvupvYY84uqxrXqDFx8Pt19+umqCQacaFmHitnjatWV06Ws7KYlHCnkAbnV06nP 8gj6jCHH2wWJuOA8bXsd6r4bteshiRXwltGil32Up14vuXH92reE0Kh65JNeL7lBH2 YyZdIrP821rydMoexAjIcW054z+w1PLUlKZBpFdw= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Adhemerval Zanella To: glibc-cvs@sourceware.org Subject: [glibc] time: Also check for EPERM while trying to clock_settime X-Act-Checkin: glibc X-Git-Author: Adhemerval Zanella X-Git-Refname: refs/heads/master X-Git-Oldrev: d4963a844dc72c4ac14da3395cf511f3d191d689 X-Git-Newrev: e3622a8f391deea3b75a577dce70d023dfa3f1c7 Message-Id: <20230605155359.F2B9A3882171@sourceware.org> Date: Mon, 5 Jun 2023 15:53:59 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e3622a8f391deea3b75a577dce70d023dfa3f1c7 commit e3622a8f391deea3b75a577dce70d023dfa3f1c7 Author: Adhemerval Zanella Date: Fri Jun 2 14:02:09 2023 -0300 time: Also check for EPERM while trying to clock_settime Container management default seccomp filter [1] only accepts clock_settime if process has also CAP_SYS_TIME. So also handle EPERM as well. Also adapt the test to libsupport and add a proper Copyright header. Checked on aarch64-linux-gnu. Reviewed-by: Carlos O'Donell Diff: --- time/tst-clock2.c | 59 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/time/tst-clock2.c b/time/tst-clock2.c index 4c8fb9f247..9d1980e858 100644 --- a/time/tst-clock2.c +++ b/time/tst-clock2.c @@ -1,43 +1,44 @@ -/* Test setting the monotonic clock. */ +/* Test setting the monotonic clock. + Copyright (C) 2007-2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. -#include -#include + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -#if defined CLOCK_MONOTONIC && defined _POSIX_MONOTONIC_CLOCK + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. -# include -# include + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include +#include -static int +int do_test (void) { +#if defined CLOCK_MONOTONIC && defined _POSIX_MONOTONIC_CLOCK if (sysconf (_SC_MONOTONIC_CLOCK) <= 0) - return 0; + FAIL_UNSUPPORTED ("_SC_MONOTONIC_CLOCK not supported"); struct timespec ts; - if (clock_gettime (CLOCK_MONOTONIC, &ts) != 0) - { - puts ("clock_gettime(CLOCK_MONOTONIC) failed"); - return 1; - } + TEST_COMPARE (clock_gettime (CLOCK_MONOTONIC, &ts), 0); /* Setting the monotonic clock must fail. */ - if (clock_settime (CLOCK_MONOTONIC, &ts) != -1) - { - puts ("clock_settime(CLOCK_MONOTONIC) did not fail"); - return 1; - } - if (errno != EINVAL) - { - printf ("clock_settime(CLOCK_MONOTONIC) set errno to %d, expected %d\n", - errno, EINVAL); - return 1; - } - return 0; -} -# define TEST_FUNCTION do_test () + TEST_VERIFY (clock_settime (CLOCK_MONOTONIC, &ts) == -1); + TEST_VERIFY (errno == EINVAL || errno == EPERM); + return 0; #else -# define TEST_FUNCTION 0 + return EXIT_UNSUPPORTED; #endif -#include "../test-skeleton.c" +} + +#include