Date: Thu, 9 Feb 2017 08:39:07 +0000 (UTC) From: Ngie Cooper <ngie@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r313469 - in projects/stable-10-backport-test-changes: contrib/netbsd-tests/lib/libc/gen contrib/netbsd-tests/lib/libc/string lib/libc/gen lib/libc/string Message-ID: <201702090839.v198d7r1050110@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: ngie Date: Thu Feb 9 08:39:07 2017 New Revision: 313469 URL: https://svnweb.freebsd.org/changeset/base/313469 Log: MFC r276527,r277648,r279154,r279397,r283584: r276527: Don't install h_raw if dealing with clang 3.5.0+ to unbreak the tests2 Jenkins job The h_raw application doesn't do proper bounds checking without the option being supplied via the build, which means that it doesn't throw signals and fail as expected PR: 196430 r277648 (by jilles): Enable utimensat tests from NetBSD. As with other tests from c063, a required #include <sys/stat.h> was missing. r279154 (by jilles): nice(): Correct return value and [EPERM] error. PR: 189821 Obtained from: NetBSD Relnotes: yes r279397 (by jilles): nice(): Put back old return value, keeping [EPERM] error. Commit r279154 changed the API and ABI significantly, and {NZERO} is still wrong. Also, preserve errno on success instead of setting it to 0. PR: 189821 Relnotes: yes r283584 (by emaste): memmem(3): empty little string matches the beginning of the big string This function originated in glibc, and this matches their behaviour (and NetBSD, OpenBSD, and musl). An empty big string (arg "l") is handled by the existing l_len < s_len test. Modified: projects/stable-10-backport-test-changes/contrib/netbsd-tests/lib/libc/gen/t_nice.c projects/stable-10-backport-test-changes/contrib/netbsd-tests/lib/libc/string/t_memmem.c projects/stable-10-backport-test-changes/lib/libc/gen/nice.3 projects/stable-10-backport-test-changes/lib/libc/gen/nice.c projects/stable-10-backport-test-changes/lib/libc/string/memmem.3 projects/stable-10-backport-test-changes/lib/libc/string/memmem.c Directory Properties: projects/stable-10-backport-test-changes/ (props changed) Modified: projects/stable-10-backport-test-changes/contrib/netbsd-tests/lib/libc/gen/t_nice.c ============================================================================== --- projects/stable-10-backport-test-changes/contrib/netbsd-tests/lib/libc/gen/t_nice.c Thu Feb 9 08:25:30 2017 (r313468) +++ projects/stable-10-backport-test-changes/contrib/netbsd-tests/lib/libc/gen/t_nice.c Thu Feb 9 08:39:07 2017 (r313469) @@ -72,11 +72,6 @@ ATF_TC_BODY(nice_err, tc) { int i; -#ifdef __FreeBSD__ - atf_tc_expect_fail("nice(incr) with incr < 0 fails with unprivileged " - "users and sets errno == EPERM; see PR # 189821 for more details"); -#endif - /* * The call should fail with EPERM if the * supplied parameter is negative and the Modified: projects/stable-10-backport-test-changes/contrib/netbsd-tests/lib/libc/string/t_memmem.c ============================================================================== --- projects/stable-10-backport-test-changes/contrib/netbsd-tests/lib/libc/string/t_memmem.c Thu Feb 9 08:25:30 2017 (r313468) +++ projects/stable-10-backport-test-changes/contrib/netbsd-tests/lib/libc/string/t_memmem.c Thu Feb 9 08:39:07 2017 (r313469) @@ -75,7 +75,7 @@ ATF_TC_HEAD(memmem_basic, tc) ATF_TC_BODY(memmem_basic, tc) { -#if defined(__darwin__) || defined(__FreeBSD__) +#if defined(__darwin__) expect(memmem(b2, lb2, p0, lp0) == NULL); expect(memmem(b0, lb0, p0, lp0) == NULL); #else Modified: projects/stable-10-backport-test-changes/lib/libc/gen/nice.3 ============================================================================== --- projects/stable-10-backport-test-changes/lib/libc/gen/nice.3 Thu Feb 9 08:25:30 2017 (r313468) +++ projects/stable-10-backport-test-changes/lib/libc/gen/nice.3 Thu Feb 9 08:39:07 2017 (r313469) @@ -28,7 +28,7 @@ .\" @(#)nice.3 8.1 (Berkeley) 6/4/93 .\" $FreeBSD$ .\" -.Dd June 4, 1993 +.Dd February 28, 2015 .Dt NICE 3 .Os .Sh NAME @@ -48,20 +48,48 @@ This interface is obsoleted by .Pp The .Fn nice -function obtains the scheduling priority of the process -from the system and sets it to the priority value specified in -.Fa incr . +function adds +.Fa incr +to the scheduling priority of the process. The priority is a value in the range -20 to 20. The default priority is 0; lower priorities cause more favorable scheduling. Only the super-user may lower priorities. .Pp Children inherit the priority of their parent processes via .Xr fork 2 . +.Sh RETURN VALUES +Upon successful completion, +.Fn nice +returns 0, and +.Va errno +is unchanged. +Otherwise, \-1 is returned, the process' nice value is not changed, and +.Va errno +is set to indicate the error. +.Sh ERRORS +The +.Fn nice +function will fail if: +.Bl -tag -width Er +.It Bq Er EPERM +The +.Fa incr +argument is negative and the caller does not have appropriate privileges. +.El .Sh SEE ALSO .Xr nice 1 , .Xr fork 2 , .Xr setpriority 2 , .Xr renice 8 +.Sh STANDARDS +The +.Fn nice +function conforms to +.St -p1003.1-2008 +except for the return value. +This implementation returns 0 upon successful completion but +the standard requires returning the new nice value, +which could be \-1. .Sh HISTORY A .Fn nice Modified: projects/stable-10-backport-test-changes/lib/libc/gen/nice.c ============================================================================== --- projects/stable-10-backport-test-changes/lib/libc/gen/nice.c Thu Feb 9 08:25:30 2017 (r313468) +++ projects/stable-10-backport-test-changes/lib/libc/gen/nice.c Thu Feb 9 08:39:07 2017 (r313469) @@ -43,14 +43,20 @@ __FBSDID("$FreeBSD$"); * Backwards compatible nice. */ int -nice(incr) - int incr; +nice(int incr) { - int prio; + int saverrno, prio; + saverrno = errno; errno = 0; prio = getpriority(PRIO_PROCESS, 0); - if (prio == -1 && errno) + if (prio == -1 && errno != 0) return (-1); - return (setpriority(PRIO_PROCESS, 0, prio + incr)); + if (setpriority(PRIO_PROCESS, 0, prio + incr) == -1) { + if (errno == EACCES) + errno = EPERM; + return (-1); + } + errno = saverrno; + return (0); } Modified: projects/stable-10-backport-test-changes/lib/libc/string/memmem.3 ============================================================================== --- projects/stable-10-backport-test-changes/lib/libc/string/memmem.3 Thu Feb 9 08:25:30 2017 (r313468) +++ projects/stable-10-backport-test-changes/lib/libc/string/memmem.3 Thu Feb 9 08:39:07 2017 (r313469) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 24, 2005 +.Dd May 26, 2015 .Dt MEMMEM 3 .Os .Sh NAME @@ -51,14 +51,12 @@ in the byte string .Fa big . .Sh RETURN VALUES If -.Fa big_len -is smaller than -.Fa little_len , -if .Fa little_len -is 0, if -.Fa big_len -is 0 or if +is zero +.Fa big +is returned (that is, an empty little is deemed to match at the beginning of +big); +if .Fa little occurs nowhere in .Fa big , @@ -84,3 +82,11 @@ function first appeared in .Sh BUGS This function was broken in Linux libc up to and including version 5.0.9 and in GNU libc prior to version 2.1. +Prior to +.Fx 11.0 +.Nm +returned +.Dv NULL +when +.Fa little_len +equals 0. Modified: projects/stable-10-backport-test-changes/lib/libc/string/memmem.c ============================================================================== --- projects/stable-10-backport-test-changes/lib/libc/string/memmem.c Thu Feb 9 08:25:30 2017 (r313468) +++ projects/stable-10-backport-test-changes/lib/libc/string/memmem.c Thu Feb 9 08:39:07 2017 (r313469) @@ -42,9 +42,9 @@ memmem(const void *l, size_t l_len, cons const char *cl = (const char *)l; const char *cs = (const char *)s; - /* we need something to compare */ - if (l_len == 0 || s_len == 0) - return NULL; + /* empty "s" matches the beginning of "l" */ + if (s_len == 0) + return (void *)cl; /* "s" must be smaller or equal to "l" */ if (l_len < s_len)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201702090839.v198d7r1050110>