clock_settime/clock_gettime: Use __nonnull to avoid null pointer
authorXiaoming Ni <nixiaoming@huawei.com>
Thu, 5 May 2022 03:01:11 +0000 (11:01 +0800)
committerSiddhesh Poyarekar <siddhesh@sourceware.org>
Thu, 5 May 2022 12:18:04 +0000 (17:48 +0530)
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>
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
include/time.h
time/time.h

index 127347e..a64eff5 100644 (file)
@@ -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)
index 847ac3f..2cf89e6 100644 (file)
@@ -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,
@@ -290,9 +291,11 @@ extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id,
                                           struct timespec *__res),
                            __clock_getres64);
 extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct
-                                           timespec *__tp), __clock_gettime64);
+                                           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