Skip to content

Commit 9007787

Browse files
committed
open_basedir check for linkinfo
1 parent 24a57ae commit 9007787

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

ext/standard/link.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,20 +94,31 @@ PHP_FUNCTION(readlink)
9494
PHP_FUNCTION(linkinfo)
9595
{
9696
char *link;
97-
int link_len;
97+
char *dirname;
98+
int link_len, dir_len;
9899
struct stat sb;
99100
int ret;
100101

101102
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &link, &link_len) == FAILURE) {
102103
return;
103104
}
104105

106+
dirname = estrndup(link, link_len);
107+
dir_len = php_dirname(dirname, link_len);
108+
109+
if (php_check_open_basedir(dirname TSRMLS_CC)) {
110+
efree(dirname);
111+
RETURN_FALSE;
112+
}
113+
105114
ret = VCWD_LSTAT(link, &sb);
106115
if (ret == -1) {
107116
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", strerror(errno));
117+
efree(dirname);
108118
RETURN_LONG(-1L);
109119
}
110120

121+
efree(dirname);
111122
RETURN_LONG((long) sb.st_dev);
112123
}
113124
/* }}} */

0 commit comments

Comments
 (0)