Security

star runs git against user-supplied URLs and unpacks repository content onto your disk. Here is the discipline around both.

Arbitrary remotes

star use <url>#template and star repo add hand your URLs to git — invoked as an argv array, never through a shell, so injection via URLs is not possible. Protocol restrictions (protocol.allow and friends) are your git config’s business, not star’s; star adds no additional network surface beyond what your own git would do with the same URL.

Archive extraction is untrusted-input territory

git archive output is extracted with the same discipline as tar’s safe modes:

  • no absolute member paths,
  • no .. path components,
  • symlinks may not escape the extraction root,
  • devices and fifos are refused outright.

Symlinked templates

Symlinks inside a template are copied as symlinks; anything resolving outside the template root is skipped with a warning rather than followed.

Confirmation before writes into non-empty directories

star only ever adds files — but saying so is not the same as asking. Writing into a non-empty directory (.git counts) triggers an interactive confirmation, or demands --force when no TTY is attached.