]> granicus.if.org Git - php/commitdiff
merge unmerged changes between branches, remove unnecessary test for zip signature...
authorGreg Beaver <cellog@php.net>
Fri, 24 Jul 2009 17:07:05 +0000 (17:07 +0000)
committerGreg Beaver <cellog@php.net>
Fri, 24 Jul 2009 17:07:05 +0000 (17:07 +0000)
ext/phar/func_interceptors.c
ext/phar/phar.c
ext/phar/phar_object.c
ext/phar/tar.c
ext/phar/tests/badparameters.phpt
ext/phar/util.c

index cddd7a0933ce3b5f76b0a20a2dcc78254c353f5f..69b495ff994bebe14b9a20ea249f5fe7ebf0af27 100644 (file)
@@ -71,8 +71,8 @@ PHAR_FUNC(phar_opendir) /* {{{ */
                        } else {
                                spprintf(&name, 4096, "phar://%s/%s", arch, entry);
                        }
-                       efree(entry);
                        efree(arch);
+                       efree(entry);
                        if (zcontext) {
                                context = php_stream_context_from_zval(zcontext, 0);
                        }
index e3007fc5706e08220731d9ab99036d51ed26094f..ec441ee04a867cd5d7d8bd8e5404771566286bf2 100644 (file)
@@ -3702,6 +3702,9 @@ static zend_module_dep phar_deps[] = {
        ZEND_MOD_OPTIONAL("openssl")
        ZEND_MOD_OPTIONAL("zlib")
        ZEND_MOD_OPTIONAL("standard")
+#if defined(HAVE_HASH) && !defined(COMPILE_DL_HASH)
+       ZEND_MOD_REQUIRED("hash")
+#endif
 #if HAVE_SPL
        ZEND_MOD_REQUIRED("spl")
 #endif
index 98a1379bb8a00742420266f330677b159ace6c81..ab3975ebd4b60b0c091bc601af3b943649d7ed5b 100755 (executable)
@@ -30,6 +30,12 @@ static zend_class_entry *phar_ce_PharException;
 static zend_class_entry *phar_ce_entry;
 #endif
 
+#if (PHP_MAJOR_VERSION == 5) && (PHP_MINOR_VERSION >= 3)
+# define PHAR_ARG_INFO
+#else
+# define PHAR_ARG_INFO static
+#endif
+
 static int phar_file_type(HashTable *mimes, char *file, char **mime_type TSRMLS_DC) /* {{{ */
 {
        char *ext;
@@ -4980,7 +4986,7 @@ PHP_METHOD(PharFileInfo, decompress)
 #endif /* HAVE_SPL */
 
 /* {{{ phar methods */
-
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar___construct, 0, 0, 1)
        ZEND_ARG_INFO(0, filename)
        ZEND_ARG_INFO(0, flags)
@@ -4988,30 +4994,36 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phar___construct, 0, 0, 1)
        ZEND_ARG_INFO(0, fileformat)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_createDS, 0, 0, 0)
        ZEND_ARG_INFO(0, index)
        ZEND_ARG_INFO(0, webindex)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_loadPhar, 0, 0, 1)
        ZEND_ARG_INFO(0, filename)
        ZEND_ARG_INFO(0, alias)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_mapPhar, 0, 0, 0)
        ZEND_ARG_INFO(0, alias)
        ZEND_ARG_INFO(0, offset)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_mount, 0, 0, 2)
        ZEND_ARG_INFO(0, inphar)
        ZEND_ARG_INFO(0, externalfile)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_mungServer, 0, 0, 1)
        ZEND_ARG_INFO(0, munglist)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_webPhar, 0, 0, 0)
        ZEND_ARG_INFO(0, alias)
        ZEND_ARG_INFO(0, index)
@@ -5020,105 +5032,126 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_webPhar, 0, 0, 0)
        ZEND_ARG_INFO(0, rewrites)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_running, 0, 0, 1)
        ZEND_ARG_INFO(0, retphar)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_ua, 0, 0, 1)
        ZEND_ARG_INFO(0, archive)
 ZEND_END_ARG_INFO()
 
 #if HAVE_SPL
-
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_build, 0, 0, 1)
        ZEND_ARG_INFO(0, iterator)
        ZEND_ARG_INFO(0, base_directory)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_conv, 0, 0, 0)
        ZEND_ARG_INFO(0, format)
        ZEND_ARG_INFO(0, compression_type)
        ZEND_ARG_INFO(0, file_ext)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_comps, 0, 0, 1)
        ZEND_ARG_INFO(0, compression_type)
        ZEND_ARG_INFO(0, file_ext)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_decomp, 0, 0, 0)
        ZEND_ARG_INFO(0, file_ext)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_comp, 0, 0, 1)
        ZEND_ARG_INFO(0, compression_type)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_compo, 0, 0, 0)
        ZEND_ARG_INFO(0, compression_type)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_copy, 0, 0, 2)
        ZEND_ARG_INFO(0, newfile)
        ZEND_ARG_INFO(0, oldfile)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_delete, 0, 0, 1)
        ZEND_ARG_INFO(0, entry)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_fromdir, 0, 0, 1)
        ZEND_ARG_INFO(0, base_dir)
        ZEND_ARG_INFO(0, regex)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_offsetExists, 0, 0, 1)
        ZEND_ARG_INFO(0, entry)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_offsetSet, 0, 0, 2)
        ZEND_ARG_INFO(0, entry)
        ZEND_ARG_INFO(0, value)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_setAlias, 0, 0, 1)
        ZEND_ARG_INFO(0, alias)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_setMetadata, 0, 0, 1)
        ZEND_ARG_INFO(0, metadata)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_setSigAlgo, 0, 0, 1)
        ZEND_ARG_INFO(0, algorithm)
        ZEND_ARG_INFO(0, privatekey)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_setStub, 0, 0, 1)
        ZEND_ARG_INFO(0, newstub)
        ZEND_ARG_INFO(0, maxlen)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_emptydir, 0, 0, 0)
        ZEND_ARG_INFO(0, dirname)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_extract, 0, 0, 1)
        ZEND_ARG_INFO(0, pathto)
        ZEND_ARG_INFO(0, files)
        ZEND_ARG_INFO(0, overwrite)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_addfile, 0, 0, 1)
        ZEND_ARG_INFO(0, filename)
        ZEND_ARG_INFO(0, localname)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_fromstring, 0, 0, 1)
        ZEND_ARG_INFO(0, localname)
        ZEND_ARG_INFO(0, contents)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_phar_isff, 0, 0, 1)
        ZEND_ARG_INFO(0, fileformat)
 ZEND_END_ARG_INFO()
@@ -5191,10 +5224,12 @@ zend_function_entry php_archive_methods[] = {
 };
 
 #if HAVE_SPL
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_entry___construct, 0, 0, 1)
        ZEND_ARG_INFO(0, filename)
 ZEND_END_ARG_INFO()
 
+PHAR_ARG_INFO
 ZEND_BEGIN_ARG_INFO_EX(arginfo_entry_chmod, 0, 0, 1)
        ZEND_ARG_INFO(0, perms)
 ZEND_END_ARG_INFO()
index 51157715452a511896e63a07fec3b5a45ed45cd4..afc22d78084145dedef13ab2b00ac885175a4752 100644 (file)
@@ -284,7 +284,7 @@ bail:
 # define PHAR_GET_32(buffer) (php_uint32) *(buffer)
 #endif
                        myphar->sig_flags = PHAR_GET_32(buf);
-                       if (FAILURE == phar_verify_signature(fp, php_stream_tell(fp) - size - 512, myphar->sig_flags, buf 8, size - 8, fname, &myphar->signature, &myphar->sig_len, error TSRMLS_CC)) {
+                       if (FAILURE == phar_verify_signature(fp, php_stream_tell(fp) - size - 512, myphar->sig_flags, buf 8, size - 8, fname, &myphar->signature, &myphar->sig_len, error TSRMLS_CC)) {
                                if (error) {
                                        char *save = *error;
                                        spprintf(error, 4096, "phar error: tar-based phar \"%s\" signature cannot be verified: %s", fname, save);
index 2f0e34ecfa4976afb3773e579914a704725ce63f..d4291e622757ee523bccccfd996ca61ebc25bf57 100644 (file)
@@ -76,11 +76,6 @@ $a->setSignatureAlgorithm(Phar::MD5);
 } catch (Exception $e) {
 echo $e->getMessage() . "\n";
 }
-try {
-$c->setSignatureAlgorithm(Phar::MD5);
-} catch (Exception $e) {
-echo $e->getMessage() . "\n";
-}
 $a->compress(array());
 try {
 $a->compress(1);
@@ -160,7 +155,6 @@ A Phar stub cannot be set in a plain tar archive
 Warning: Phar::setDefaultStub() expects parameter 1 to be %string, array given in %sbadparameters.php on line %d
 Cannot change stub: phar.readonly=1
 Cannot set signature algorithm, phar is read-only
-Cannot set signature algorithm, not possible with zip-based phar archives
 
 Warning: Phar::compress() expects parameter 1 to be long, array given in %sbadparameters.php on line %d
 Cannot compress phar archive, phar is read-only
index 25a8f06f49b8f71399c3c6ce0eeedc7b8af8aba1..434a37e7f03b112589e019208e7b3c780430d6b8 100644 (file)
@@ -21,6 +21,9 @@
 /* $Id$ */
 
 #include "phar_internal.h"
+#ifdef PHAR_HASH_OK
+#include "ext/hash/php_hash_sha.h"
+#endif
 
 #ifdef PHAR_HAVE_OPENSSL
 /* OpenSSL includes */