summaryrefslogtreecommitdiff
path: root/ext/standard/ftok.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/ftok.c')
-rw-r--r--ext/standard/ftok.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/ext/standard/ftok.c b/ext/standard/ftok.c
index f9ef6adf9d..7298a8db61 100644
--- a/ext/standard/ftok.c
+++ b/ext/standard/ftok.c
@@ -31,31 +31,29 @@
Convert a pathname and a project identifier to a System V IPC key */
PHP_FUNCTION(ftok)
{
- zval **pathname, **proj;
+ char *pathname, *proj;
+ int pathname_len, proj_len;
key_t k;
- if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &pathname, &proj) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, &pathname, &pathname_len, &proj, &proj_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(pathname);
- convert_to_string_ex(proj);
-
- if (Z_STRLEN_PP(pathname)==0){
+ if (pathname_len == 0){
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Pathname is invalid");
RETURN_LONG(-1);
}
- if (Z_STRLEN_PP(proj)!=1){
+ if (proj_len != 1){
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Project identifier is invalid");
RETURN_LONG(-1);
}
- if ((PG(safe_mode) && (!php_checkuid(Z_STRVAL_PP(pathname), NULL, CHECKUID_CHECK_FILE_AND_DIR))) || php_check_open_basedir(Z_STRVAL_PP(pathname) TSRMLS_CC)) {
+ if ((PG(safe_mode) && (!php_checkuid(pathname, NULL, CHECKUID_CHECK_FILE_AND_DIR))) || php_check_open_basedir(pathname TSRMLS_CC)) {
RETURN_LONG(-1);
}
- k = ftok(Z_STRVAL_PP(pathname),Z_STRVAL_PP(proj)[0]);
+ k = ftok(pathname, proj[0]);
if (k == -1) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "ftok() failed - %s", strerror(errno));
}