com php-src: open_basedir check for linkinfo: ext/s tandard/link.c
| From: | Stanislav Malyshev | Date: | Sun, 25 Mar 2012 00:02:21 +0000 |
| Subject: | com php-src: open_basedir check for linkinfo: ext/s tandard/link.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-68242@lists.php.net to get a copy of this message | ||
Commit: 900778731c49611e1318e4d1839768eb46f26813
Author: Rasmus Lerdorf <rasmus@php.net> Sun, 25 Mar 2012 05:32:21 +0530
Parents: 24a57ae9a5e3e3bc5472a901e0eaff4d70eb281a
Branches: PHP-5.4
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=900778731c49611e1318e4d1839768eb46f26813
Log:
open_basedir check for linkinfo
Changed paths:
M ext/standard/link.c
Diff:
900778731c49611e1318e4d1839768eb46f26813
diff --git a/ext/standard/link.c b/ext/standard/link.c
index 9fa2524..cb42408 100644
--- a/ext/standard/link.c
+++ b/ext/standard/link.c
@@ -94,7 +94,8 @@ PHP_FUNCTION(readlink)
PHP_FUNCTION(linkinfo)
{
char *link;
- int link_len;
+ char *dirname;
+ int link_len, dir_len;
struct stat sb;
int ret;
@@ -102,12 +103,22 @@ PHP_FUNCTION(linkinfo)
return;
}
+ dirname = estrndup(link, link_len);
+ dir_len = php_dirname(dirname, link_len);
+
+ if (php_check_open_basedir(dirname TSRMLS_CC)) {
+ efree(dirname);
+ RETURN_FALSE;
+ }
+
ret = VCWD_LSTAT(link, &sb);
if (ret == -1) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", strerror(errno));
+ efree(dirname);
RETURN_LONG(-1L);
}
+ efree(dirname);
RETURN_LONG((long) sb.st_dev);
}
/* }}} */