Index: ext/standard/dl.c =================================================================== RCS file: /repository/php-src/ext/standard/dl.c,v retrieving revision 1.106.2.1.2.2 diff -u -r1.106.2.1.2.2 dl.c --- ext/standard/dl.c 23 Feb 2007 00:37:35 -0000 1.106.2.1.2.2 +++ ext/standard/dl.c 10 Sep 2007 09:14:41 -0000 @@ -134,6 +134,21 @@ libpath = estrndup(Z_STRVAL_P(file), Z_STRLEN_P(file)); } + if (PG(safe_mode) && (!php_checkuid(libpath, NULL, CHECKUID_CHECK_FILE_AND_DIR))) { + efree(libpath); + RETURN_FALSE; + } + + if (php_check_open_basedir(libpath TSRMLS_CC)) { + efree(libpath); + RETURN_FALSE; + } + + if (strlen(libpath) >= MAXPATHLEN) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Filename exceeds the maximum allowed length of %d characters", MAXPATHLEN); + RETURN_FALSE; + } + /* load dynamic symbol */ handle = DL_LOAD(libpath); if (!handle) {