Jeff Zaroyko : msvcrt: Avoid a NULL pointer deref in ctime.

Alexandre Julliard julliard at winehq.org
Thu Oct 2 11:37:30 CDT 2008


Module: wine
Branch: master
Commit: 82f77cc17a190dbc87415fc697e76261fcbd972f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=82f77cc17a190dbc87415fc697e76261fcbd972f

Author: Jeff Zaroyko <jeffz at jeffz.name>
Date:   Tue Sep 30 15:34:51 2008 +1000

msvcrt: Avoid a NULL pointer deref in ctime.

---

 dlls/msvcrt/tests/time.c |    8 ++++++++
 dlls/msvcrt/time.c       |    5 ++++-
 2 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/dlls/msvcrt/tests/time.c b/dlls/msvcrt/tests/time.c
index 1fe6cbf..33b2e56 100644
--- a/dlls/msvcrt/tests/time.c
+++ b/dlls/msvcrt/tests/time.c
@@ -31,6 +31,13 @@
 #define MINSPERHOUR        60
 #define HOURSPERDAY        24
 
+static void test_ctime(void)
+{
+    time_t badtime = -1;
+    char* ret;
+    ret = ctime(&badtime);
+    ok(ret == NULL, "expected ctime to return NULL, got %s\n", ret);
+}
 static void test_gmtime(void)
 {
     time_t gmt = (time_t)NULL;
@@ -249,6 +256,7 @@ static void test_wstrtime(void)
 
 START_TEST(time)
 {
+    test_ctime();
     test_gmtime();
     test_mktime();
     test_localtime();
diff --git a/dlls/msvcrt/time.c b/dlls/msvcrt/time.c
index 69762e0..ba4e95c 100644
--- a/dlls/msvcrt/time.c
+++ b/dlls/msvcrt/time.c
@@ -447,7 +447,10 @@ MSVCRT_wchar_t * CDECL MSVCRT__wasctime(const struct MSVCRT_tm *mstm)
  */
 char * CDECL MSVCRT_ctime(const MSVCRT_time_t *time)
 {
-    return MSVCRT_asctime( MSVCRT_localtime(time) );
+    struct MSVCRT_tm *t;
+    t = MSVCRT_localtime( time );
+    if (!t) return NULL;
+    return MSVCRT_asctime( t );
 }
 
 /*********************************************************************




More information about the wine-cvs mailing list