Skip to content

Commit feae0ae

Browse files
committed
ext/phar: Refactor part of tar.c
1 parent c81e48f commit feae0ae

File tree

3 files changed

+24
-22
lines changed

3 files changed

+24
-22
lines changed

ext/phar/phar.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1772,7 +1772,7 @@ static int phar_open_from_fp(php_stream* fp, char *fname, size_t fname_len, char
17721772
if (got > 512) {
17731773
if (phar_is_tar(pos, fname)) {
17741774
php_stream_rewind(fp);
1775-
return phar_parse_tarfile(fp, fname, fname_len, alias, alias_len, pphar, is_data, compression, error);
1775+
return phar_parse_tarfile(fp, fname, fname_len, alias, alias_len, pphar, compression, error);
17761776
}
17771777
}
17781778
}

ext/phar/phar_internal.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -564,9 +564,9 @@ int phar_open_archive_fp(phar_archive_data *phar);
564564
int phar_copy_on_write(phar_archive_data **pphar);
565565

566566
/* tar functions in tar.c */
567-
int phar_is_tar(char *buf, char *fname);
568-
int phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, char *alias, size_t alias_len, phar_archive_data** pphar, int is_data, uint32_t compression, char **error);
569-
int phar_open_or_create_tar(char *fname, size_t fname_len, char *alias, size_t alias_len, int is_data, uint32_t options, phar_archive_data** pphar, char **error);
567+
bool phar_is_tar(char *buf, char *fname);
568+
zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, char *alias, size_t alias_len, phar_archive_data** pphar, uint32_t compression, char **error);
569+
zend_result phar_open_or_create_tar(char *fname, size_t fname_len, char *alias, size_t alias_len, int is_data, uint32_t options, phar_archive_data** pphar, char **error);
570570
int phar_tar_flush(phar_archive_data *phar, char *user_stub, zend_long len, int defaultstub, char **error);
571571

572572
/* zip functions in zip.c */

ext/phar/tar.c

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -62,23 +62,25 @@ static uint32_t phar_tar_number(const char *buf, size_t len) /* {{{ */
6262
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
6363
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
6464
*/
65-
static int phar_tar_octal(char *buf, uint32_t val, int len) /* {{{ */
65+
static zend_result phar_tar_octal(char *buf, uint32_t val, size_t len) /* {{{ */
6666
{
6767
char *p = buf;
68-
int s = len;
68+
size_t s = len;
6969

7070
p += len; /* Start at the end and work backwards. */
7171
while (s-- > 0) {
7272
*--p = (char)('0' + (val & 7));
7373
val >>= 3;
7474
}
7575

76-
if (val == 0)
76+
if (val == 0) {
7777
return SUCCESS;
78+
}
7879

7980
/* If it overflowed, fill field with max value. */
80-
while (len-- > 0)
81+
while (len-- > 0) {
8182
*p++ = '7';
83+
}
8284

8385
return FAILURE;
8486
}
@@ -97,37 +99,37 @@ static uint32_t phar_tar_checksum(char *buf, size_t len) /* {{{ */
9799
}
98100
/* }}} */
99101

100-
int phar_is_tar(char *buf, char *fname) /* {{{ */
102+
bool phar_is_tar(char *buf, char *fname) /* {{{ */
101103
{
102104
tar_header *header = (tar_header *) buf;
103105
uint32_t checksum = phar_tar_number(header->checksum, sizeof(header->checksum));
104-
uint32_t ret;
106+
bool is_tar;
105107
char save[sizeof(header->checksum)], *bname;
106108

107109
/* assume that the first filename in a tar won't begin with <?php */
108110
if (!strncmp(buf, "<?php", sizeof("<?php")-1)) {
109-
return 0;
111+
return false;
110112
}
111113

112114
memcpy(save, header->checksum, sizeof(header->checksum));
113115
memset(header->checksum, ' ', sizeof(header->checksum));
114-
ret = (checksum == phar_tar_checksum(buf, 512));
116+
is_tar = (checksum == phar_tar_checksum(buf, 512));
115117
memcpy(header->checksum, save, sizeof(header->checksum));
116118
if ((bname = strrchr(fname, PHP_DIR_SEPARATOR))) {
117119
fname = bname;
118120
}
119-
if (!ret && (bname = strstr(fname, ".tar")) && (bname[4] == '\0' || bname[4] == '.')) {
121+
if (!is_tar && (bname = strstr(fname, ".tar")) && (bname[4] == '\0' || bname[4] == '.')) {
120122
/* probably a corrupted tar - so we will pretend it is one */
121-
return 1;
123+
return true;
122124
}
123-
return ret;
125+
return is_tar;
124126
}
125127
/* }}} */
126128

127-
int phar_open_or_create_tar(char *fname, size_t fname_len, char *alias, size_t alias_len, int is_data, uint32_t options, phar_archive_data** pphar, char **error) /* {{{ */
129+
zend_result phar_open_or_create_tar(char *fname, size_t fname_len, char *alias, size_t alias_len, int is_data, uint32_t options, phar_archive_data** pphar, char **error) /* {{{ */
128130
{
129131
phar_archive_data *phar;
130-
int ret = phar_create_or_parse_filename(fname, fname_len, alias, alias_len, is_data, options, &phar, error);
132+
zend_result ret = phar_create_or_parse_filename(fname, fname_len, alias, alias_len, is_data, options, &phar, error);
131133

132134
if (FAILURE == ret) {
133135
return FAILURE;
@@ -157,7 +159,7 @@ int phar_open_or_create_tar(char *fname, size_t fname_len, char *alias, size_t a
157159
}
158160
/* }}} */
159161

160-
static int phar_tar_process_metadata(phar_entry_info *entry, php_stream *fp) /* {{{ */
162+
static zend_result phar_tar_process_metadata(phar_entry_info *entry, php_stream *fp) /* {{{ */
161163
{
162164
char *metadata;
163165
size_t save = php_stream_tell(fp), read;
@@ -199,7 +201,7 @@ static int phar_tar_process_metadata(phar_entry_info *entry, php_stream *fp) /*
199201
}
200202
/* }}} */
201203

202-
int phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, char *alias, size_t alias_len, phar_archive_data** pphar, int is_data, uint32_t compression, char **error) /* {{{ */
204+
zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, char *alias, size_t alias_len, phar_archive_data** pphar, uint32_t compression, char **error) /* {{{ */
203205
{
204206
char buf[512], *actual_alias = NULL, *p;
205207
phar_entry_info entry = {0};
@@ -699,8 +701,8 @@ int phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, char *alia
699701
struct _phar_pass_tar_info {
700702
php_stream *old;
701703
php_stream *new;
702-
int free_fp;
703-
int free_ufp;
704+
bool free_fp;
705+
bool free_ufp;
704706
char **error;
705707
};
706708

@@ -863,7 +865,7 @@ static int phar_tar_writeheaders(zval *zv, void *argument) /* {{{ */
863865
}
864866
/* }}} */
865867

866-
int phar_tar_setmetadata(const phar_metadata_tracker *tracker, phar_entry_info *entry, char **error) /* {{{ */
868+
static int phar_tar_setmetadata(const phar_metadata_tracker *tracker, phar_entry_info *entry, char **error) /* {{{ */
867869
{
868870
/* Copy the metadata from tracker to the new entry being written out to temporary files */
869871
const zend_string *serialized_str;

0 commit comments

Comments
 (0)