Message ID | 20220428122529.108208-5-nixiaoming@huawei.com |
---|---|
State | New |
Headers | show |
Series | time: Use __nonnull to avoid null pointer | expand |
On 28/04/2022 17:55, Xiaoming Ni via Libc-alpha wrote: > clock_settime() > clock_settime64() > clock_gettime() > clock_gettime64() > Add __nonnull((2)) to avoid null pointer access. > > Link: https://sourceware.org/bugzilla/show_bug.cgi?id=27662 > Link: https://sourceware.org/bugzilla/show_bug.cgi?id=29084 > Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com> > --- > include/time.h | 4 ++-- > time/time.h | 9 ++++++--- > 2 files changed, 8 insertions(+), 5 deletions(-) > > diff --git a/include/time.h b/include/time.h > index 127347eb90..a64eff54f5 100644 > --- a/include/time.h > +++ b/include/time.h > @@ -166,7 +166,7 @@ libc_hidden_proto (__timegm64) > # define __clock_settime64 __clock_settime > #else > extern int __clock_settime64 (clockid_t clock_id, > - const struct __timespec64 *tp); > + const struct __timespec64 *tp) __nonnull((2)); > libc_hidden_proto (__clock_settime64) > #endif > > @@ -324,7 +324,7 @@ extern int __clock_nanosleep_time64 (clockid_t clock_id, > int flags, const struct __timespec64 *req, > struct __timespec64 *rem); > libc_hidden_proto (__clock_nanosleep_time64) > -extern int __clock_gettime64 (clockid_t clock_id, struct __timespec64 *tp); > +extern int __clock_gettime64 (clockid_t clock_id, struct __timespec64 *tp) __nonnull((2)); > libc_hidden_proto (__clock_gettime64) > extern int __timespec_get64 (struct __timespec64 *ts, int base); > libc_hidden_proto (__timespec_get64) > diff --git a/time/time.h b/time/time.h > index 847ac3f8c0..26f276f147 100644 > --- a/time/time.h > +++ b/time/time.h > @@ -276,11 +276,12 @@ extern int nanosleep (const struct timespec *__requested_time, > extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW; > > /* Get current value of clock CLOCK_ID and store it in TP. */ > -extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW; > +extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) > + __THROW __nonnull((2)); > > /* Set clock CLOCK_ID to value TP. */ > extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) > - __THROW; > + __THROW __nonnull((2)); > # else > # ifdef __REDIRECT > extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time, > @@ -291,8 +292,10 @@ extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id, > __clock_getres64); > extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct > timespec *__tp), __clock_gettime64); The semicolon at the end needs to go away. This was also caught by patchwork trybot: https://patchwork.sourceware.org/project/glibc/patch/20220428122529.108208-5-nixiaoming@huawei.com/ https://www.delorie.com/trybots/32bit/8846/make.tail.txt > + __nonnull((2)); > extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct > - timespec *__tp), __clock_settime64); > + timespec *__tp), __clock_settime64) > + __nonnull((2)); > # else > # define nanosleep __nanosleep64 > # define clock_getres __clock_getres64
On 2022/5/4 19:02, Siddhesh Poyarekar wrote: > On 28/04/2022 17:55, Xiaoming Ni via Libc-alpha wrote: >> clock_settime() >> clock_settime64() >> clock_gettime() >> clock_gettime64() >> Add __nonnull((2)) to avoid null pointer access. >> >> Link: https://sourceware.org/bugzilla/show_bug.cgi?id=27662 >> Link: https://sourceware.org/bugzilla/show_bug.cgi?id=29084 >> Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com> >> --- >> include/time.h | 4 ++-- >> time/time.h | 9 ++++++--- >> 2 files changed, 8 insertions(+), 5 deletions(-) >> >> diff --git a/include/time.h b/include/time.h >> index 127347eb90..a64eff54f5 100644 >> --- a/include/time.h >> +++ b/include/time.h >> @@ -166,7 +166,7 @@ libc_hidden_proto (__timegm64) >> # define __clock_settime64 __clock_settime >> #else >> extern int __clock_settime64 (clockid_t clock_id, >> - const struct __timespec64 *tp); >> + const struct __timespec64 *tp) >> __nonnull((2)); >> libc_hidden_proto (__clock_settime64) >> #endif >> @@ -324,7 +324,7 @@ extern int __clock_nanosleep_time64 (clockid_t >> clock_id, >> int flags, const struct >> __timespec64 *req, >> struct __timespec64 *rem); >> libc_hidden_proto (__clock_nanosleep_time64) >> -extern int __clock_gettime64 (clockid_t clock_id, struct __timespec64 >> *tp); >> +extern int __clock_gettime64 (clockid_t clock_id, struct __timespec64 >> *tp) __nonnull((2)); >> libc_hidden_proto (__clock_gettime64) >> extern int __timespec_get64 (struct __timespec64 *ts, int base); >> libc_hidden_proto (__timespec_get64) >> diff --git a/time/time.h b/time/time.h >> index 847ac3f8c0..26f276f147 100644 >> --- a/time/time.h >> +++ b/time/time.h >> @@ -276,11 +276,12 @@ extern int nanosleep (const struct timespec >> *__requested_time, >> extern int clock_getres (clockid_t __clock_id, struct timespec >> *__res) __THROW; >> /* Get current value of clock CLOCK_ID and store it in TP. */ >> -extern int clock_gettime (clockid_t __clock_id, struct timespec >> *__tp) __THROW; >> +extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) >> + __THROW __nonnull((2)); >> /* Set clock CLOCK_ID to value TP. */ >> extern int clock_settime (clockid_t __clock_id, const struct >> timespec *__tp) >> - __THROW; >> + __THROW __nonnull((2)); >> # else >> # ifdef __REDIRECT >> extern int __REDIRECT (nanosleep, (const struct timespec >> *__requested_time, >> @@ -291,8 +292,10 @@ extern int __REDIRECT_NTH (clock_getres, >> (clockid_t __clock_id, >> __clock_getres64); >> extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct >> timespec *__tp), >> __clock_gettime64); > > The semicolon at the end needs to go away. This was also caught by > patchwork trybot: > > https://patchwork.sourceware.org/project/glibc/patch/20220428122529.108208-5-nixiaoming@huawei.com/ > > https://www.delorie.com/trybots/32bit/8846/make.tail.txt > Thanks, I'll fix it later on v2. >> + __nonnull((2)); >> extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, >> const struct >> - timespec *__tp), >> __clock_settime64); >> + timespec *__tp), >> __clock_settime64) >> + __nonnull((2)); >> # else >> # define nanosleep __nanosleep64 >> # define clock_getres __clock_getres64 > > .
diff --git a/include/time.h b/include/time.h index 127347eb90..a64eff54f5 100644 --- a/include/time.h +++ b/include/time.h @@ -166,7 +166,7 @@ libc_hidden_proto (__timegm64) # define __clock_settime64 __clock_settime #else extern int __clock_settime64 (clockid_t clock_id, - const struct __timespec64 *tp); + const struct __timespec64 *tp) __nonnull((2)); libc_hidden_proto (__clock_settime64) #endif @@ -324,7 +324,7 @@ extern int __clock_nanosleep_time64 (clockid_t clock_id, int flags, const struct __timespec64 *req, struct __timespec64 *rem); libc_hidden_proto (__clock_nanosleep_time64) -extern int __clock_gettime64 (clockid_t clock_id, struct __timespec64 *tp); +extern int __clock_gettime64 (clockid_t clock_id, struct __timespec64 *tp) __nonnull((2)); libc_hidden_proto (__clock_gettime64) extern int __timespec_get64 (struct __timespec64 *ts, int base); libc_hidden_proto (__timespec_get64) diff --git a/time/time.h b/time/time.h index 847ac3f8c0..26f276f147 100644 --- a/time/time.h +++ b/time/time.h @@ -276,11 +276,12 @@ extern int nanosleep (const struct timespec *__requested_time, extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW; /* Get current value of clock CLOCK_ID and store it in TP. */ -extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW; +extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) + __THROW __nonnull((2)); /* Set clock CLOCK_ID to value TP. */ extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) - __THROW; + __THROW __nonnull((2)); # else # ifdef __REDIRECT extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time, @@ -291,8 +292,10 @@ extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id, __clock_getres64); extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct timespec *__tp), __clock_gettime64); + __nonnull((2)); extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct - timespec *__tp), __clock_settime64); + timespec *__tp), __clock_settime64) + __nonnull((2)); # else # define nanosleep __nanosleep64 # define clock_getres __clock_getres64
clock_settime() clock_settime64() clock_gettime() clock_gettime64() Add __nonnull((2)) to avoid null pointer access. Link: https://sourceware.org/bugzilla/show_bug.cgi?id=27662 Link: https://sourceware.org/bugzilla/show_bug.cgi?id=29084 Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com> --- include/time.h | 4 ++-- time/time.h | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-)