summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2007-06-07 08:44:41 +0000
committerAntony Dovgal <tony2001@php.net>2007-06-07 08:44:41 +0000
commitc9805e7b9240c9513c4fb6add41b004328caf463 (patch)
tree44479ebe75a58ebcd0370f86de3a66d79130be1a
parent91da96ba71867b72278aeb4d6deaff334c7f3771 (diff)
downloadphp-git-c9805e7b9240c9513c4fb6add41b004328caf463.tar.gz
MFH: check return value of *time_r() functions for NULL
-rw-r--r--ext/calendar/cal_unix.c4
-rw-r--r--ext/date/php_date.c8
-rw-r--r--ext/mime_magic/mime_magic.c3
-rw-r--r--main/main.c8
4 files changed, 18 insertions, 5 deletions
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