Lines Matching refs:entry

163 static zend_result phar_tar_process_metadata(phar_entry_info *entry, php_stream *fp) /* {{{ */  in phar_tar_process_metadata()  argument
169 metadata = (char *) safe_emalloc(1, entry->uncompressed_filesize, 1); in phar_tar_process_metadata()
171 read = php_stream_read(fp, metadata, entry->uncompressed_filesize); in phar_tar_process_metadata()
172 if (read != entry->uncompressed_filesize) { in phar_tar_process_metadata()
178 …phar_parse_metadata_lazy(metadata, &entry->metadata_tracker, entry->uncompressed_filesize, entry->… in phar_tar_process_metadata()
180 …if (entry->filename_len == sizeof(".phar/.metadata.bin")-1 && !memcmp(entry->filename, ".phar/.met… in phar_tar_process_metadata()
181 if (phar_metadata_tracker_has_data(&entry->phar->metadata_tracker, entry->phar->is_persistent)) { in phar_tar_process_metadata()
185 entry->phar->metadata_tracker = entry->metadata_tracker; in phar_tar_process_metadata()
186 entry->metadata_tracker.str = NULL; in phar_tar_process_metadata()
187 ZVAL_UNDEF(&entry->metadata_tracker.val); in phar_tar_process_metadata()
188entry->filename_len >= sizeof(".phar/.metadata/") + sizeof("/.metadata.bin") - 1 && NULL != (mentr… in phar_tar_process_metadata()
194 mentry->metadata_tracker = entry->metadata_tracker; in phar_tar_process_metadata()
195 entry->metadata_tracker.str = NULL; in phar_tar_process_metadata()
196 ZVAL_UNDEF(&entry->metadata_tracker.val); in phar_tar_process_metadata()
208 phar_entry_info entry = {0}; in phar_parse_tarfile() local
249 entry.is_tar = 1; in phar_parse_tarfile()
250 entry.is_crc_checked = 1; in phar_parse_tarfile()
251 entry.phar = myphar; in phar_parse_tarfile()
275 size = entry.uncompressed_filesize = entry.compressed_filesize = in phar_parse_tarfile()
367 entry.filename_len = entry.uncompressed_filesize; in phar_parse_tarfile()
370 if (entry.filename_len == UINT_MAX || entry.filename_len == 0) { in phar_parse_tarfile()
378 entry.filename = pemalloc(entry.filename_len+1, myphar->is_persistent); in phar_parse_tarfile()
380 read = php_stream_read(fp, entry.filename, entry.filename_len); in phar_parse_tarfile()
381 if (read != entry.filename_len) { in phar_parse_tarfile()
382 efree(entry.filename); in phar_parse_tarfile()
390 entry.filename[entry.filename_len] = '\0'; in phar_parse_tarfile()
398 efree(entry.filename); in phar_parse_tarfile()
410 efree(entry.filename); in phar_parse_tarfile()
437 entry.filename_len = i+j; in phar_parse_tarfile()
439 if (name[entry.filename_len - 1] == '/') { in phar_parse_tarfile()
441 entry.filename_len--; in phar_parse_tarfile()
443 entry.filename = pestrndup(name, entry.filename_len, myphar->is_persistent); in phar_parse_tarfile()
453 entry.filename_len = i; in phar_parse_tarfile()
454 entry.filename = pestrndup(hdr->name, i, myphar->is_persistent); in phar_parse_tarfile()
456 if (i > 0 && entry.filename[entry.filename_len - 1] == '/') { in phar_parse_tarfile()
458 entry.filename[entry.filename_len - 1] = '\0'; in phar_parse_tarfile()
459 entry.filename_len--; in phar_parse_tarfile()
464 phar_add_virtual_dirs(myphar, entry.filename, entry.filename_len); in phar_parse_tarfile()
468 … error: \"%s\" is a corrupted tar file (checksum mismatch of file \"%s\")", fname, entry.filename); in phar_parse_tarfile()
470 pefree(entry.filename, myphar->is_persistent); in phar_parse_tarfile()
477 entry.tar_type = ((old & (hdr->typeflag == '\0')) ? TAR_FILE : hdr->typeflag); in phar_parse_tarfile()
478 entry.offset = entry.offset_abs = pos; /* header_offset unused in tar */ in phar_parse_tarfile()
479 entry.fp_type = PHAR_FP; in phar_parse_tarfile()
480 entry.flags = entry_mode & PHAR_ENT_PERM_MASK; in phar_parse_tarfile()
481 entry.timestamp = phar_tar_number(hdr->mtime, sizeof(hdr->mtime)); in phar_parse_tarfile()
482 entry.is_persistent = myphar->is_persistent; in phar_parse_tarfile()
484 if (old && entry.tar_type == TAR_FILE && S_ISDIR(entry_mode)) { in phar_parse_tarfile()
485 entry.tar_type = TAR_DIR; in phar_parse_tarfile()
488 if (entry.tar_type == TAR_DIR) { in phar_parse_tarfile()
489 entry.is_dir = 1; in phar_parse_tarfile()
491 entry.is_dir = 0; in phar_parse_tarfile()
494 entry.link = NULL; in phar_parse_tarfile()
498 if (entry.tar_type == TAR_LINK) { in phar_parse_tarfile()
503 pefree(entry.filename, entry.is_persistent); in phar_parse_tarfile()
508 entry.link = estrndup(hdr->linkname, linkname_len); in phar_parse_tarfile()
509 } else if (entry.tar_type == TAR_SYMLINK) { in phar_parse_tarfile()
510 entry.link = estrndup(hdr->linkname, linkname_len); in phar_parse_tarfile()
512 phar_set_inode(&entry); in phar_parse_tarfile()
514 …entry = zend_hash_str_update_mem(&myphar->manifest, entry.filename, entry.filename_len, (void*)&en… in phar_parse_tarfile()
517 if (entry.is_persistent) { in phar_parse_tarfile()
518 ++entry.manifest_pos; in phar_parse_tarfile()
521 …if (entry.filename_len >= sizeof(".phar/.metadata")-1 && !memcmp(entry.filename, ".phar/.metadata"… in phar_parse_tarfile()
524 …ar error: tar-based phar \"%s\" has invalid metadata in magic file \"%s\"", fname, entry.filename); in phar_parse_tarfile()
532 …if (!actual_alias && entry.filename_len == sizeof(".phar/alias.txt")-1 && !strncmp(entry.filename,… in phar_parse_tarfile()
710 static int phar_tar_writeheaders_int(phar_entry_info *entry, void *argument) /* {{{ */ in phar_tar_writeheaders_int() argument
717 if (entry->is_mounted) { in phar_tar_writeheaders_int()
721 if (entry->is_deleted) { in phar_tar_writeheaders_int()
722 if (entry->fp_refcount <= 0) { in phar_tar_writeheaders_int()
730 phar_add_virtual_dirs(entry->phar, entry->filename, entry->filename_len); in phar_tar_writeheaders_int()
733 if (entry->filename_len > 100) { in phar_tar_writeheaders_int()
735 if (entry->filename_len > 256) { in phar_tar_writeheaders_int()
737 …t be created, filename \"%s\" is too long for tar file format", entry->phar->fname, entry->filenam… in phar_tar_writeheaders_int()
741 boundary = entry->filename + entry->filename_len - 101; in phar_tar_writeheaders_int()
745 if (!*boundary || ((boundary - entry->filename) > 155)) { in phar_tar_writeheaders_int()
747 …t be created, filename \"%s\" is too long for tar file format", entry->phar->fname, entry->filenam… in phar_tar_writeheaders_int()
751 memcpy(header.prefix, entry->filename, boundary - entry->filename); in phar_tar_writeheaders_int()
752 memcpy(header.name, boundary + 1, entry->filename_len - (boundary + 1 - entry->filename)); in phar_tar_writeheaders_int()
754 memcpy(header.name, entry->filename, entry->filename_len); in phar_tar_writeheaders_int()
757 phar_tar_octal(header.mode, entry->flags & PHAR_ENT_PERM_MASK, sizeof(header.mode)-1); in phar_tar_writeheaders_int()
759 if (FAILURE == phar_tar_octal(header.size, entry->uncompressed_filesize, sizeof(header.size)-1)) { in phar_tar_writeheaders_int()
761 … be created, filename \"%s\" is too large for tar file format", entry->phar->fname, entry->filenam… in phar_tar_writeheaders_int()
766 if (FAILURE == phar_tar_octal(header.mtime, entry->timestamp, sizeof(header.mtime)-1)) { in phar_tar_writeheaders_int()
768 …fication time of file \"%s\" is too large for tar file format", entry->phar->fname, entry->filenam… in phar_tar_writeheaders_int()
774 header.typeflag = entry->tar_type; in phar_tar_writeheaders_int()
776 if (entry->link) { in phar_tar_writeheaders_int()
777 if (strlcpy(header.linkname, entry->link, sizeof(header.linkname)) >= sizeof(header.linkname)) { in phar_tar_writeheaders_int()
779 …ar \"%s\" cannot be created, link \"%s\" is too long for format", entry->phar->fname, entry->link); in phar_tar_writeheaders_int()
788 entry->crc32 = phar_tar_checksum((char *)&header, sizeof(header)); in phar_tar_writeheaders_int()
790 if (FAILURE == phar_tar_octal(header.checksum, entry->crc32, sizeof(header.checksum)-1)) { in phar_tar_writeheaders_int()
792 …ted, checksum of file \"%s\" is too large for tar file format", entry->phar->fname, entry->filenam… in phar_tar_writeheaders_int()
798 entry->header_offset = php_stream_tell(fp->new); in phar_tar_writeheaders_int()
802 …nnot be created, header for file \"%s\" could not be written", entry->phar->fname, entry->filenam… in phar_tar_writeheaders_int()
810 if (entry->uncompressed_filesize) { in phar_tar_writeheaders_int()
811 if (FAILURE == phar_open_entry_fp(entry, fp->error, 0)) { in phar_tar_writeheaders_int()
815 if (-1 == phar_seek_efp(entry, 0, SEEK_SET, 0, 0)) { in phar_tar_writeheaders_int()
817 …ed, contents of file \"%s\" could not be written, seek failed", entry->phar->fname, entry->filenam… in phar_tar_writeheaders_int()
822 …if (SUCCESS != php_stream_copy_to_stream_ex(phar_get_efp(entry, 0), fp->new, entry->uncompressed_f… in phar_tar_writeheaders_int()
824 …nnot be created, contents of file \"%s\" could not be written", entry->phar->fname, entry->filenam… in phar_tar_writeheaders_int()
830 …php_stream_write(fp->new, padding, ((entry->uncompressed_filesize +511)&~511) - entry->uncompresse… in phar_tar_writeheaders_int()
833 if (!entry->is_modified && entry->fp_refcount) { in phar_tar_writeheaders_int()
835 switch (entry->fp_type) { in phar_tar_writeheaders_int()
846 entry->is_modified = 0; in phar_tar_writeheaders_int()
848 if (entry->fp_type == PHAR_MOD && entry->fp != entry->phar->fp && entry->fp != entry->phar->ufp) { in phar_tar_writeheaders_int()
849 if (!entry->fp_refcount) { in phar_tar_writeheaders_int()
850 php_stream_close(entry->fp); in phar_tar_writeheaders_int()
852 entry->fp = NULL; in phar_tar_writeheaders_int()
855 entry->fp_type = PHAR_FP; in phar_tar_writeheaders_int()
858 entry->offset = entry->offset_abs = pos; in phar_tar_writeheaders_int()
869 static int phar_tar_setmetadata(const phar_metadata_tracker *tracker, phar_entry_info *entry, char … in phar_tar_setmetadata() argument
873 phar_metadata_tracker_copy(&entry->metadata_tracker, tracker, entry->is_persistent); in phar_tar_setmetadata()
874 …phar_metadata_tracker_try_ensure_has_serialized_data(&entry->metadata_tracker, entry->is_persisten… in phar_tar_setmetadata()
875 serialized_str = entry->metadata_tracker.str; in phar_tar_setmetadata()
878entry->uncompressed_filesize = entry->compressed_filesize = serialized_str ? ZSTR_LEN(serialized_s… in phar_tar_setmetadata()
880 if (entry->fp && entry->fp_type == PHAR_MOD) { in phar_tar_setmetadata()
881 php_stream_close(entry->fp); in phar_tar_setmetadata()
884 entry->fp_type = PHAR_MOD; in phar_tar_setmetadata()
885 entry->is_modified = 1; in phar_tar_setmetadata()
886 entry->fp = php_stream_fopen_tmpfile(); in phar_tar_setmetadata()
887 entry->offset = entry->offset_abs = 0; in phar_tar_setmetadata()
888 if (entry->fp == NULL) { in phar_tar_setmetadata()
892 …if (serialized_str && ZSTR_LEN(serialized_str) != php_stream_write(entry->fp, ZSTR_VAL(serialized_… in phar_tar_setmetadata()
893 …ror, 0, "phar tar error: unable to write metadata to magic metadata file \"%s\"", entry->filename); in phar_tar_setmetadata()
894 zend_hash_str_del(&(entry->phar->manifest), entry->filename, entry->filename_len); in phar_tar_setmetadata()
907 phar_entry_info *entry = (phar_entry_info *)Z_PTR_P(zv), *metadata, newentry = {0}; in phar_tar_setupmetadata() local
909 …if (entry->filename_len >= sizeof(".phar/.metadata") && !memcmp(entry->filename, ".phar/.metadata"… in phar_tar_setupmetadata()
910 …if (entry->filename_len == sizeof(".phar/.metadata.bin")-1 && !memcmp(entry->filename, ".phar/.met… in phar_tar_setupmetadata()
911 return phar_tar_setmetadata(&entry->phar->metadata_tracker, entry, error); in phar_tar_setupmetadata()
914entry->filename_len >= sizeof(".phar/.metadata/") + sizeof("/.metadata.bin") - 1 && !zend_hash_str… in phar_tar_setupmetadata()
922 if (!entry->is_modified) { in phar_tar_setupmetadata()
927 lookfor_len = spprintf(&lookfor, 0, ".phar/.metadata/%s/.metadata.bin", entry->filename); in phar_tar_setupmetadata()
929 if (!phar_metadata_tracker_has_data(&entry->metadata_tracker, entry->is_persistent)) { in phar_tar_setupmetadata()
930 zend_hash_str_del(&(entry->phar->manifest), lookfor, lookfor_len); in phar_tar_setupmetadata()
935 if (NULL != (metadata = zend_hash_str_find_ptr(&(entry->phar->manifest), lookfor, lookfor_len))) { in phar_tar_setupmetadata()
937 ret = phar_tar_setmetadata(&entry->metadata_tracker, metadata, error); in phar_tar_setupmetadata()
944 newentry.phar = entry->phar; in phar_tar_setupmetadata()
948 …if (NULL == (metadata = zend_hash_str_add_mem(&(entry->phar->manifest), lookfor, lookfor_len, (voi… in phar_tar_setupmetadata()
950 … "phar tar error: unable to add magic metadata file to manifest for file \"%s\"", entry->filename); in phar_tar_setupmetadata()
954 return phar_tar_setmetadata(&entry->metadata_tracker, metadata, error); in phar_tar_setupmetadata()
963 phar_entry_info entry = {0}; in phar_tar_flush() local
970 entry.flags = PHAR_ENT_PERM_DEF_FILE; in phar_tar_flush()
971 entry.timestamp = time(NULL); in phar_tar_flush()
972 entry.is_modified = 1; in phar_tar_flush()
973 entry.is_crc_checked = 1; in phar_tar_flush()
974 entry.is_tar = 1; in phar_tar_flush()
975 entry.tar_type = '0'; in phar_tar_flush()
976 entry.phar = phar; in phar_tar_flush()
977 entry.fp_type = PHAR_MOD; in phar_tar_flush()
978 entry.fp = NULL; in phar_tar_flush()
979 entry.filename = NULL; in phar_tar_flush()
994 entry.filename = estrndup(".phar/alias.txt", sizeof(".phar/alias.txt")-1); in phar_tar_flush()
995 entry.filename_len = sizeof(".phar/alias.txt")-1; in phar_tar_flush()
996 entry.fp = php_stream_fopen_tmpfile(); in phar_tar_flush()
997 if (entry.fp == NULL) { in phar_tar_flush()
998 efree(entry.filename); in phar_tar_flush()
1002 if (phar->alias_len != php_stream_write(entry.fp, phar->alias, phar->alias_len)) { in phar_tar_flush()
1006 php_stream_close(entry.fp); in phar_tar_flush()
1007 efree(entry.filename); in phar_tar_flush()
1011 entry.uncompressed_filesize = phar->alias_len; in phar_tar_flush()
1013 …zend_hash_str_update_mem(&phar->manifest, entry.filename, entry.filename_len, (void*)&entry, sizeo… in phar_tar_flush()
1035 entry.fp = php_stream_fopen_tmpfile(); in phar_tar_flush()
1036 if (entry.fp == NULL) { in phar_tar_flush()
1040 entry.uncompressed_filesize = len + end_sequence_len; in phar_tar_flush()
1043 len != php_stream_write(entry.fp, ZSTR_VAL(user_stub), len) in phar_tar_flush()
1044 || end_sequence_len != php_stream_write(entry.fp, end_sequence, end_sequence_len) in phar_tar_flush()
1049 php_stream_close(entry.fp); in phar_tar_flush()
1053 entry.filename = estrndup(".phar/stub.php", sizeof(".phar/stub.php")-1); in phar_tar_flush()
1054 entry.filename_len = sizeof(".phar/stub.php")-1; in phar_tar_flush()
1055 …zend_hash_str_update_mem(&phar->manifest, entry.filename, entry.filename_len, (void*)&entry, sizeo… in phar_tar_flush()
1058 entry.fp = php_stream_fopen_tmpfile(); in phar_tar_flush()
1059 if (entry.fp == NULL) { in phar_tar_flush()
1063 if (sizeof(newstub)-1 != php_stream_write(entry.fp, newstub, sizeof(newstub)-1)) { in phar_tar_flush()
1064 php_stream_close(entry.fp); in phar_tar_flush()
1071 entry.uncompressed_filesize = entry.compressed_filesize = sizeof(newstub) - 1; in phar_tar_flush()
1072 entry.filename = estrndup(".phar/stub.php", sizeof(".phar/stub.php")-1); in phar_tar_flush()
1073 entry.filename_len = sizeof(".phar/stub.php")-1; in phar_tar_flush()
1077 …if (NULL == zend_hash_str_add_mem(&phar->manifest, entry.filename, entry.filename_len, (void*)&ent… in phar_tar_flush()
1078 php_stream_close(entry.fp); in phar_tar_flush()
1079 efree(entry.filename); in phar_tar_flush()
1086 php_stream_close(entry.fp); in phar_tar_flush()
1087 efree(entry.filename); in phar_tar_flush()
1090 …zend_hash_str_update_mem(&phar->manifest, entry.filename, entry.filename_len, (void*)&entry, sizeo… in phar_tar_flush()
1187 entry.filename = ".phar/signature.bin"; in phar_tar_flush()
1188 entry.filename_len = sizeof(".phar/signature.bin")-1; in phar_tar_flush()
1189 entry.fp = php_stream_fopen_tmpfile(); in phar_tar_flush()
1190 if (entry.fp == NULL) { in phar_tar_flush()
1208 …if (8 != php_stream_write(entry.fp, sigbuf, 8) || signature_length != php_stream_write(entry.fp, s… in phar_tar_flush()
1222 entry.uncompressed_filesize = entry.compressed_filesize = signature_length + 8; in phar_tar_flush()
1224 entry.filename_len = phar_tar_writeheaders_int(&entry, (void *)&pass); in phar_tar_flush()