hgext/infinitepush/schema.sql
author Yuya Nishihara <yuya@tcha.org>
Tue, 08 Jan 2019 21:51:54 +0900
branchstable
changeset 41314 31286c9282df
parent 37189 03ff17a4bf53
permissions -rw-r--r--
subrepo: extend path auditing test to include more weird patterns (SEC) While reviewing patches for the issue 5739, "$foo in repository path expanded", I realized that subrepo paths can also be cheated. This patch includes various subrepo paths which are potentially unsafe. Since an expanded subrepo path isn't audited, this bug allows symlink check bypass. As a result, a malicious subrepository could be checked out to a sub tree of e.g. $HOME directory. The good news is that the destination directory must be empty or nonexistent, so the existing ~/.bashrc wouldn't be overwritten. See the last part of the tests for details.

CREATE TABLE `bookmarkstonode` (
  `node` varbinary(64) NOT NULL,
  `bookmark` varbinary(512) NOT NULL,
  `reponame` varbinary(255) NOT NULL,
  PRIMARY KEY (`reponame`,`bookmark`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `bundles` (
  `bundle` varbinary(512) NOT NULL,
  `reponame` varbinary(255) NOT NULL,
  PRIMARY KEY (`bundle`,`reponame`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `nodestobundle` (
  `node` varbinary(64) NOT NULL,
  `bundle` varbinary(512) NOT NULL,
  `reponame` varbinary(255) NOT NULL,
  PRIMARY KEY (`node`,`reponame`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `nodesmetadata` (
  `node` varbinary(64) NOT NULL,
  `message` mediumblob NOT NULL,
  `p1` varbinary(64) NOT NULL,
  `p2` varbinary(64) DEFAULT NULL,
  `author` varbinary(255) NOT NULL,
  `committer` varbinary(255) DEFAULT NULL,
  `author_date` bigint(20) NOT NULL,
  `committer_date` bigint(20) DEFAULT NULL,
  `reponame` varbinary(255) NOT NULL,
  `optional_json_metadata` mediumblob,
  PRIMARY KEY (`reponame`,`node`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;