[4/4] clock_settime/clock_gettime: Use __nonnull to avoid null pointer
Checks
Context |
Check |
Description |
dj/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
dj/TryBot-32bit |
fail
|
Patch series failed to build
|
Commit Message
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(-)
Comments
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
>
> .
@@ -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)
@@ -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