mirror of
https://github.com/php-win-ext/php-rar.git
synced 2026-03-24 13:02:06 +01:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd129d30fa |
@@ -24,8 +24,8 @@ if test "$PHP_RAR" != "no"; then
|
||||
PHP_REQUIRE_CXX
|
||||
AC_DEFINE(HAVE_RAR, 1, [Whether you have rar support])
|
||||
PHP_SUBST(RAR_SHARED_LIBADD)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/unrar)
|
||||
PHP_ADD_LIBRARY_WITH_PATH(stdc++, "", RAR_SHARED_LIBADD)
|
||||
|
||||
PHP_NEW_EXTENSION(rar, rar.cpp $unrar_sources, $ext_shared,,-I@ext_srcdir@/unrar)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/unrar)
|
||||
fi
|
||||
|
||||
@@ -5,7 +5,7 @@ ARG_ENABLE("rar", "Rar support", "no");
|
||||
|
||||
if (PHP_RAR != "no") {
|
||||
EXTENSION("rar", "rar.cpp");
|
||||
ADD_SOURCES(configure_module_dirname + "unrar/", "rar.cpp \
|
||||
ADD_SOURCES(configure_module_dirname + "/unrar", "rar.cpp \
|
||||
strlist.cpp strfn.cpp pathfn.cpp int64.cpp \
|
||||
savepos.cpp global.cpp file.cpp filefn.cpp \
|
||||
filcreat.cpp archive.cpp arcread.cpp unicode.cpp \
|
||||
@@ -19,7 +19,7 @@ if (PHP_RAR != "no") {
|
||||
scantree.cpp", "rar");
|
||||
|
||||
if (!PHP_RAR_SHARED) {
|
||||
ADD_DEF_FILE(configure_module_dirname + "unrar\\dll.def");
|
||||
ADD_DEF_FILE(configure_module_dirname + "\\unrar\\dll.def");
|
||||
}
|
||||
|
||||
AC_DEFINE("HAVE_RAR", 1, "Rar support");
|
||||
|
||||
28
rar.cpp
28
rar.cpp
@@ -26,7 +26,6 @@
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
extern "C" {
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
@@ -34,7 +33,6 @@ extern "C" {
|
||||
#include "php.h"
|
||||
#include "php_ini.h"
|
||||
#include "ext/standard/info.h"
|
||||
}
|
||||
|
||||
#if HAVE_RAR
|
||||
extern "C" {
|
||||
@@ -280,6 +278,12 @@ PHP_MINIT_FUNCTION(rar)
|
||||
|
||||
le_rar_file = zend_register_list_destructors_ex(_rar_file_list_dtor, NULL, le_rar_file_name, module_number);
|
||||
|
||||
REGISTER_LONG_CONSTANT("RAR_HOST_MSDOS", HOST_MSDOS, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("RAR_HOST_OS2", HOST_OS2, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("RAR_HOST_WIN32", HOST_WIN32, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("RAR_HOST_UNIX", HOST_UNIX, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("RAR_HOST_MACOS", HOST_MACOS, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("RAR_HOST_BEOS", HOST_BEOS, CONST_CS | CONST_PERSISTENT);
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
@@ -336,6 +340,10 @@ PHP_FUNCTION(rar_open)
|
||||
|
||||
convert_to_string_ex(filename);
|
||||
|
||||
if (PG(safe_mode) && (!php_checkuid(Z_STRVAL_PP(filename), NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (php_check_open_basedir(Z_STRVAL_PP(filename) TSRMLS_CC)) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -383,7 +391,7 @@ PHP_FUNCTION(rar_list)
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
if (!_rar_get_file_resource(file,&rar)) {
|
||||
if (!_rar_get_file_resource(file,&rar TSRMLS_CC)) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
@@ -427,7 +435,7 @@ PHP_FUNCTION(rar_entry_get)
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
if (!_rar_get_file_resource(file,&rar)) {
|
||||
if (!_rar_get_file_resource(file,&rar TSRMLS_CC)) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
@@ -466,7 +474,7 @@ PHP_FUNCTION(rar_close)
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
if (!_rar_get_file_resource(file,&rar)) {
|
||||
if (!_rar_get_file_resource(file,&rar TSRMLS_CC)) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
@@ -502,13 +510,21 @@ PHP_METHOD(rarentry, extract)
|
||||
convert_to_string_ex(path);
|
||||
path_str = Z_STRVAL_PP(path);
|
||||
|
||||
if (php_check_open_basedir(Z_STRVAL_PP(path) TSRMLS_CC)) {
|
||||
if (Z_STRLEN_PP(path) && PG(safe_mode) && (!php_checkuid(Z_STRVAL_PP(path), NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (Z_STRLEN_PP(path) && php_check_open_basedir(Z_STRVAL_PP(path) TSRMLS_CC)) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (ac == 2) {
|
||||
convert_to_string_ex(filename);
|
||||
extract_to_file = Z_STRVAL_PP(filename);
|
||||
|
||||
if (PG(safe_mode) && (!php_checkuid(Z_STRVAL_PP(filename), NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (php_check_open_basedir(Z_STRVAL_PP(filename) TSRMLS_CC)) {
|
||||
RETURN_FALSE;
|
||||
|
||||
@@ -118,13 +118,7 @@ void ComprDataIO::UnpWrite(byte *Addr,uint Count)
|
||||
ErrHandler.Exit(RAR_USER_BREAK);
|
||||
if (Cmd->ProcessDataProc!=NULL)
|
||||
{
|
||||
#ifdef _WIN_32
|
||||
_EBX=_ESP;
|
||||
#endif
|
||||
int RetCode=Cmd->ProcessDataProc(Addr,Count);
|
||||
#ifdef _WIN_32
|
||||
_ESP=_EBX;
|
||||
#endif
|
||||
if (RetCode==0)
|
||||
ErrHandler.Exit(RAR_USER_BREAK);
|
||||
}
|
||||
|
||||
@@ -56,13 +56,7 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,char Comman
|
||||
}
|
||||
if (Cmd->ChangeVolProc!=NULL)
|
||||
{
|
||||
#ifdef _WIN_32
|
||||
_EBX=_ESP;
|
||||
#endif
|
||||
int RetCode=Cmd->ChangeVolProc(NextName,RAR_VOL_ASK);
|
||||
#ifdef _WIN_32
|
||||
_ESP=_EBX;
|
||||
#endif
|
||||
if (RetCode==0)
|
||||
{
|
||||
Cmd->DllError=ERAR_EOPEN;
|
||||
@@ -112,13 +106,7 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,char Comman
|
||||
return(false);
|
||||
if (Cmd->ChangeVolProc!=NULL)
|
||||
{
|
||||
#ifdef _WIN_32
|
||||
_EBX=_ESP;
|
||||
#endif
|
||||
int RetCode=Cmd->ChangeVolProc(NextName,RAR_VOL_NOTIFY);
|
||||
#ifdef _WIN_32
|
||||
_ESP=_EBX;
|
||||
#endif
|
||||
if (RetCode==0)
|
||||
return(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user