diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/snmp/config.h.stub | 2 | ||||
-rw-r--r-- | ext/snmp/config.m4 | 14 | ||||
-rw-r--r-- | ext/snmp/snmp.c | 4 | ||||
-rw-r--r-- | ext/standard/base64.c | 5 | ||||
-rw-r--r-- | ext/standard/datetime.c | 19 | ||||
-rw-r--r-- | ext/standard/file.c | 3 |
6 files changed, 34 insertions, 13 deletions
diff --git a/ext/snmp/config.h.stub b/ext/snmp/config.h.stub index e400f18f01..2e837eac70 100644 --- a/ext/snmp/config.h.stub +++ b/ext/snmp/config.h.stub @@ -1,2 +1,4 @@ /* Define if you want the SNMP interface */ #define HAVE_SNMP 0 + +#undef UCD_SNMP_HACK diff --git a/ext/snmp/config.m4 b/ext/snmp/config.m4 index 07473fd9c8..c39d77908e 100644 --- a/ext/snmp/config.m4 +++ b/ext/snmp/config.m4 @@ -23,6 +23,20 @@ AC_ARG_WITH(snmp, PHP_EXTENSION(snmp) AC_ADD_LIBRARY_WITH_PATH(snmp, $SNMP_LIBDIR) AC_ADD_INCLUDE($SNMP_INCDIR) + AC_CHECK_LIB(kstat, kstat_read, [AC_ADD_LIBRARY(kstat)]) + else + AC_MSG_RESULT(no) + fi +],[ + AC_MSG_RESULT(no) +]) + +AC_MSG_CHECKING(whether to enable UCD SNMP hack) +AC_ARG_ENABLE(ucd-snmp-hack, +[ --enable-ucd-snmp-hack Enable UCD SNMP hack],[ + if test "$enableval" = "yes" ; then + AC_DEFINE(UCD_SNMP_HACK, 1) + AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c index 7f11bb8413..13fce26a43 100644 --- a/ext/snmp/snmp.c +++ b/ext/snmp/snmp.c @@ -175,7 +175,11 @@ void _php3_snmp(INTERNAL_FUNCTION_PARAMETERS, int st) { * in (at least) ucd-snmp 3.6.1 which frees * memory it did not allocate */ +#ifdef UCD_SNMP_HACK session.community = (u_char *) strdup(a2->value.str.val); +#else + session.community = (u_char *) a2->value.str.val; +#endif session.community_len = a2->value.str.len; session.retries = retries; session.timeout = timeout; diff --git a/ext/standard/base64.c b/ext/standard/base64.c index 69bdb9d4fa..878b7244fc 100644 --- a/ext/standard/base64.c +++ b/ext/standard/base64.c @@ -92,10 +92,7 @@ unsigned char *_php3_base64_decode(const unsigned char *string, int length, int while ((ch = *current++) != '\0') { if (ch == base64_pad) break; ch = (int)strchr(base64_table, ch); - if (ch == 0) { - efree(result); - return NULL; - } + if (ch == 0) continue; ch -= (int)base64_table; switch(i % 4) { diff --git a/ext/standard/datetime.c b/ext/standard/datetime.c index 1a0cfeca77..addc80b634 100644 --- a/ext/standard/datetime.c +++ b/ext/standard/datetime.c @@ -79,12 +79,12 @@ PHP_FUNCTION(time) void _php3_mktime(INTERNAL_FUNCTION_PARAMETERS, int gm) { - pval *arguments[6]; + pval *arguments[7]; struct tm ta, *tn; time_t t; int i, gmadjust=0,arg_count = ARG_COUNT(ht); - if (arg_count > 6 || getParametersArray(ht, arg_count, arguments) == FAILURE) { + if (arg_count > 7 || getParametersArray(ht, arg_count, arguments) == FAILURE) { WRONG_PARAM_COUNT; } /* convert supplied arguments to longs */ @@ -92,14 +92,15 @@ void _php3_mktime(INTERNAL_FUNCTION_PARAMETERS, int gm) convert_to_long(arguments[i]); } t=time(NULL); -#if HAVE_TZSET +#ifdef HAVE_TZSET tzset(); #endif tn = localtime(&t); memcpy(&ta,tn,sizeof(struct tm)); - ta.tm_isdst = -1; + ta.tm_isdst = arg_count > 6 ? arguments[6]->value.lval : gm ? 0 : -1; switch(arg_count) { + case 7: case 6: ta.tm_year = arguments[5]->value.lval - ((arguments[5]->value.lval > 1000) ? 1900 : 0); /* fall-through */ @@ -125,15 +126,15 @@ void _php3_mktime(INTERNAL_FUNCTION_PARAMETERS, int gm) if (gm) { #if HAVE_TM_GMTOFF - gmadjust=(tn->tm_gmtoff)/3600; + gmadjust=tn->tm_gmtoff; #else - gmadjust=timezone/3600; + gmadjust=timezone; #endif + ta.tm_hour += gmadjust / 3600; + ta.tm_min += gmadjust % 3600; } - ta.tm_hour+=gmadjust; - return_value->value.lval = mktime(&ta); - return_value->type = IS_LONG; + RETURN_LONG(mktime(&ta)); } PHP_FUNCTION(mktime) diff --git a/ext/standard/file.c b/ext/standard/file.c index 7501bd0eea..911324556d 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -535,6 +535,9 @@ PHP_FUNCTION(tempnam) t = tempnam(d,p); efree(d); + if(!t) { + RETURN_FALSE; + } RETURN_STRING(t,1); } /* }}} */ |