msvcrt: Use MSVCRT_CHECK_PMT for all security enhanced time functions
André Hentschel
nerv at dawncrow.de
Tue Dec 20 12:30:54 CST 2011
---
dlls/msvcrt/time.c | 37 +++++++++++++++++--------------------
1 files changed, 17 insertions(+), 20 deletions(-)
diff --git a/dlls/msvcrt/time.c b/dlls/msvcrt/time.c
index f9de5c5..35b4f1c 100644
--- a/dlls/msvcrt/time.c
+++ b/dlls/msvcrt/time.c
@@ -230,10 +230,9 @@ int CDECL _localtime64_s(struct MSVCRT_tm *time, const MSVCRT___time64_t *secs)
struct tm *tm;
time_t seconds;
- if (!time || !secs || *secs < 0 || *secs > _MAX__TIME64_T)
- {
- if (time)
- write_invalid_msvcrt_tm(time);
+ if( !MSVCRT_CHECK_PMT( time != NULL ) || !MSVCRT_CHECK_PMT( secs != NULL ) ||
+ !MSVCRT_CHECK_PMT( *secs >= 0 ) || !MSVCRT_CHECK_PMT( *secs <= _MAX__TIME64_T ) ) {
+ if (time) write_invalid_msvcrt_tm(time);
*MSVCRT__errno() = MSVCRT_EINVAL;
return MSVCRT_EINVAL;
@@ -270,10 +269,9 @@ int CDECL _localtime32_s(struct MSVCRT_tm *time, const MSVCRT___time32_t *secs)
{
MSVCRT___time64_t secs64;
- if (!time || !secs || *secs < 0)
- {
- if (time)
- write_invalid_msvcrt_tm(time);
+ if( !MSVCRT_CHECK_PMT( time != NULL ) || !MSVCRT_CHECK_PMT( secs != NULL ) ||
+ !MSVCRT_CHECK_PMT( *secs >= 0 ) ) {
+ if (time) write_invalid_msvcrt_tm(time);
*MSVCRT__errno() = MSVCRT_EINVAL;
return MSVCRT_EINVAL;
@@ -308,10 +306,9 @@ int CDECL MSVCRT__gmtime64_s(struct MSVCRT_tm *res, const MSVCRT___time64_t *sec
SYSTEMTIME st;
ULONGLONG time;
- if (!res || !secs || *secs < 0) {
- if (res) {
- write_invalid_msvcrt_tm(res);
- }
+ if( !MSVCRT_CHECK_PMT( res != NULL ) || !MSVCRT_CHECK_PMT( secs != NULL ) ||
+ !MSVCRT_CHECK_PMT( *secs >= 0 ) ) {
+ if (res) write_invalid_msvcrt_tm(res);
*MSVCRT__errno() = MSVCRT_EINVAL;
return MSVCRT_EINVAL;
@@ -419,12 +416,12 @@ int CDECL _strdate_s(char* date, MSVCRT_size_t size)
if(date && size)
date[0] = '\0';
- if(!date) {
+ if( !MSVCRT_CHECK_PMT( date != NULL ) ) {
*MSVCRT__errno() = MSVCRT_EINVAL;
return MSVCRT_EINVAL;
}
- if(size < 9) {
+ if( !MSVCRT_CHECK_PMT( size >= 9 ) ) {
*MSVCRT__errno() = MSVCRT_ERANGE;
return MSVCRT_ERANGE;
}
@@ -453,12 +450,12 @@ int CDECL _wstrdate_s(MSVCRT_wchar_t* date, MSVCRT_size_t size)
if(date && size)
date[0] = '\0';
- if(!date) {
+ if( !MSVCRT_CHECK_PMT( date != NULL ) ) {
*MSVCRT__errno() = MSVCRT_EINVAL;
return MSVCRT_EINVAL;
}
- if(size < 9) {
+ if( !MSVCRT_CHECK_PMT( size >= 9 ) ) {
*MSVCRT__errno() = MSVCRT_ERANGE;
return MSVCRT_ERANGE;
}
@@ -487,12 +484,12 @@ int CDECL _strtime_s(char* time, MSVCRT_size_t size)
if(time && size)
time[0] = '\0';
- if(!time) {
+ if( !MSVCRT_CHECK_PMT( time != NULL ) ) {
*MSVCRT__errno() = MSVCRT_EINVAL;
return MSVCRT_EINVAL;
}
- if(size < 9) {
+ if( !MSVCRT_CHECK_PMT( size >= 9 ) ) {
*MSVCRT__errno() = MSVCRT_ERANGE;
return MSVCRT_ERANGE;
}
@@ -521,12 +518,12 @@ int CDECL _wstrtime_s(MSVCRT_wchar_t* time, MSVCRT_size_t size)
if(time && size)
time[0] = '\0';
- if(!time) {
+ if( !MSVCRT_CHECK_PMT( time != NULL ) ) {
*MSVCRT__errno() = MSVCRT_EINVAL;
return MSVCRT_EINVAL;
}
- if(size < 9) {
+ if( !MSVCRT_CHECK_PMT( size >= 9 ) ) {
*MSVCRT__errno() = MSVCRT_ERANGE;
return MSVCRT_ERANGE;
}
--
Best Regards, André Hentschel
More information about the wine-patches
mailing list