	public function Load($tree)
	{
		if (!$tree)
			return;

		$contents = array();

		$treePath = $tree->GetPath();

		$args = array();
		$args[] = '--full-name';
		if ($this->exe->CanShowSizeInTree())
			$args[] = '-l';
		$args[] = '-t';
		$args[] = escapeshellarg($tree->GetHash());
		
		$lines = explode("\n", $this->exe->Execute($tree->GetProject()->GetPath(), GIT_LS_TREE, $args));

		foreach ($lines as $line) {
			if (preg_match("/^([0-9]+) (.+) ([0-9a-fA-F]{40})(\s+[0-9]+|\s+-)?\t(.+)$/", $line, $regs)) {
				switch($regs[2]) {
					case 'tree':
						$data = array();
						$data['type'] = 'tree';
						$data['hash'] = $regs[3];
						$data['mode'] = $regs[1];

						$path = $regs[5];
						if (!empty($treePath))
							$path = $treePath . '/' . $path;
						$data['path'] = $path;

						$contents[] = $data;
						break;
					case 'blob':
						$data = array();
						$data['type'] = 'blob';
						$data['hash'] = $regs[3];
						$data['mode'] = $regs[1];

						$path = $regs[5];
						if (!empty($treePath))
							$path = $treePath . '/' . $path;
						$data['path'] = $path;

						$size = trim($regs[4]);
						if (!empty($size))
							$data['size'] = $size;

						$contents[] = $data;
						break;
				}
			}
		}

		return $contents;
	}
The software constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component.