From: Antony Dovgal Date: Thu, 7 Jun 2007 08:44:41 +0000 (+0000) Subject: MFH: check return value of *time_r() functions for NULL X-Git-Tag: php-5.2.4RC1~389 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c9805e7b9240c9513c4fb6add41b004328caf463;p=php MFH: check return value of *time_r() functions for NULL --- diff --git a/ext/calendar/cal_unix.c b/ext/calendar/cal_unix.c index 97c138df2d..4efe16eeeb 100644 --- a/ext/calendar/cal_unix.c +++ b/ext/calendar/cal_unix.c @@ -50,6 +50,10 @@ PHP_FUNCTION(unixtojd) } ta = php_localtime_r(&t, &tmbuf); + if (!ta) { + RETURN_FALSE; + } + jdate = GregorianToSdn(ta->tm_year+1900, ta->tm_mon+1, ta->tm_mday); RETURN_LONG(jdate); diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 49f76d6a06..a1159691d1 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -578,16 +578,18 @@ static char* guess_timezone(const timelib_tzdb *tzdb TSRMLS_DC) { struct tm *ta, tmbuf; time_t the_time; - char *tzid; + char *tzid = NULL; the_time = time(NULL); ta = php_localtime_r(&the_time, &tmbuf); - tzid = timelib_timezone_id_from_abbr(ta->tm_zone, ta->tm_gmtoff, ta->tm_isdst); + if (ta) { + tzid = timelib_timezone_id_from_abbr(ta->tm_zone, ta->tm_gmtoff, ta->tm_isdst); + } if (! tzid) { tzid = "UTC"; } - php_error_docref(NULL TSRMLS_CC, E_STRICT, DATE_TZ_ERRMSG "We selected '%s' for '%s/%.1f/%s' instead", tzid, ta->tm_zone, (float) (ta->tm_gmtoff / 3600), ta->tm_isdst ? "DST" : "no DST"); + php_error_docref(NULL TSRMLS_CC, E_STRICT, DATE_TZ_ERRMSG "We selected '%s' for '%s/%.1f/%s' instead", tzid, ta ? ta->tm_zone : "Unknown", ta ? (float) (ta->tm_gmtoff / 3600) : 0, ta ? (ta->tm_isdst ? "DST" : "no DST") : "Unknown"); return tzid; } #endif diff --git a/ext/mime_magic/mime_magic.c b/ext/mime_magic/mime_magic.c index cb7be9950b..3828e43d47 100644 --- a/ext/mime_magic/mime_magic.c +++ b/ext/mime_magic/mime_magic.c @@ -1764,6 +1764,9 @@ static void mprint(union VALUETYPE *p, struct magic *m) { char ctimebuf[52]; pp = php_ctime_r((time_t *) &p->l, ctimebuf); + if (!pp) { + return; + } if ((rt = strchr(pp, '\n')) != NULL) { *rt = '\0'; } diff --git a/main/main.c b/main/main.c index 2b290efc15..1b3fd4ad6e 100644 --- a/main/main.c +++ b/main/main.c @@ -1021,8 +1021,12 @@ static void php_message_handler_for_zend(long message, void *data) time(&curtime); ta = php_localtime_r(&curtime, &tmbuf); datetime_str = php_asctime_r(ta, asctimebuf); - datetime_str[strlen(datetime_str)-1]=0; /* get rid of the trailing newline */ - snprintf(memory_leak_buf, sizeof(memory_leak_buf), "[%s] Script: '%s'\n", datetime_str, SAFE_FILENAME(SG(request_info).path_translated)); + if (datetime_str) { + datetime_str[strlen(datetime_str)-1]=0; /* get rid of the trailing newline */ + snprintf(memory_leak_buf, sizeof(memory_leak_buf), "[%s] Script: '%s'\n", datetime_str, SAFE_FILENAME(SG(request_info).path_translated)); + } else { + snprintf(memory_leak_buf, sizeof(memory_leak_buf), "[null] Script: '%s'\n", SAFE_FILENAME(SG(request_info).path_translated)); + } # if defined(PHP_WIN32) OutputDebugString(memory_leak_buf); # else