You are here

public function ArchiveTar::_readLongHeader in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/lib/Drupal/Core/Archiver/ArchiveTar.php \Drupal\Core\Archiver\ArchiveTar::_readLongHeader()

Parameters

$v_header:

Return value

bool

2 calls to ArchiveTar::_readLongHeader()
ArchiveTar::_extractInString in core/lib/Drupal/Core/Archiver/ArchiveTar.php
This method extract from the archive one file identified by $p_filename. The return value is a string with the file content, or null on error.
ArchiveTar::_extractList in core/lib/Drupal/Core/Archiver/ArchiveTar.php

File

core/lib/Drupal/Core/Archiver/ArchiveTar.php, line 1818

Class

ArchiveTar

Namespace

Drupal\Core\Archiver

Code

public function _readLongHeader(&$v_header) {
  $v_filename = '';
  $v_filesize = $v_header['size'];
  $n = floor($v_header['size'] / 512);
  for ($i = 0; $i < $n; $i++) {
    $v_content = $this
      ->_readBlock();
    $v_filename .= $v_content;
  }
  if ($v_header['size'] % 512 != 0) {
    $v_content = $this
      ->_readBlock();
    $v_filename .= $v_content;
  }

  // ----- Read the next header
  $v_binary_data = $this
    ->_readBlock();
  if (!$this
    ->_readHeader($v_binary_data, $v_header)) {
    return false;
  }
  $v_filename = rtrim(substr($v_filename, 0, $v_filesize), "\0");
  $v_header['filename'] = $v_filename;
  if ($this
    ->_maliciousFilename($v_filename)) {
    $this
      ->_error('Malicious .tar detected, file "' . $v_filename . '" will not install in desired directory tree');
    return false;
  }
  return true;
}