Skip to content

(#12357) Add validate_absolute_path() function #46

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

jeffmccune
Copy link
Contributor

This patch adds a new function to validate if a string is an absolute
filesystem path or not.

The intent of this is to make this functionality generic and reusable.
Josh left a comment in another pull request I had:

If node_installdir or $node_vardir is not defined, then we should
raise an error, otherwise we may create a scheduled task to an
untrusted directory.

One solution to this comment is to validate the Puppet variable is an
absolute path.

Examples of this function look like:

function_validate_absolute_path
  Using Puppet::Parser::Scope.new
    Garbage inputs
      validate_absolute_path(nil) should fail
      validate_absolute_path([nil]) should fail
      validate_absolute_path({"foo"=>"bar"}) should fail
      validate_absolute_path({}) should fail
      validate_absolute_path("") should fail
    relative paths
      validate_absolute_path("relative1") should fail
      validate_absolute_path(".") should fail
      validate_absolute_path("..") should fail
      validate_absolute_path("./foo") should fail
      validate_absolute_path("../foo") should fail
      validate_absolute_path("etc/puppetlabs/puppet") should fail
      validate_absolute_path("opt/puppet/bin") should fail
    absolute paths
      validate_absolute_path("C:/") should not fail
      validate_absolute_path("C:\\") should not fail
      validate_absolute_path("C:\\WINDOWS\\System32") should not fail
      validate_absolute_path("C:/windows/system32") should not fail
      validate_absolute_path("X:/foo/bar") should not fail
      validate_absolute_path("X:\\foo\\bar") should not fail
      validate_absolute_path("/var/tmp") should not fail
      validate_absolute_path("/var/lib/puppet") should not fail
      validate_absolute_path("/var/opt/../lib/puppet") should not fail
      validate_absolute_path("C:\\Program Files (x86)\\Puppet Labs\\Puppet Enterprise") should not fail
      validate_absolute_path("C:/Program Files (x86)/Puppet Labs/Puppet Enterprise") should not fail

Finished in 0.05637 seconds
23 examples, 0 failures

Jeff McCune added 2 commits March 7, 2012 11:51
Without this patch every rspec run prints out the directory of the
spec_helper script.

I think this was just a debugging line or whatever that accidentally got
added.
This patch adds a new function to validate if a string is an absolute
filesystem path or not.

The intent of this is to make this functionality generic and reusable.
Josh left a comment in another pull request I had:

    If node_installdir or $node_vardir is not defined, then we should
    raise an error, otherwise we may create a scheduled task to an
    untrusted directory.

One solution to this comment is to validate the Puppet variable is an
absolute path.

Examples of this function look like:

    function_validate_absolute_path
      Using Puppet::Parser::Scope.new
        Garbage inputs
          validate_absolute_path(nil) should fail
          validate_absolute_path([nil]) should fail
          validate_absolute_path({"foo"=>"bar"}) should fail
          validate_absolute_path({}) should fail
          validate_absolute_path("") should fail
        relative paths
          validate_absolute_path("relative1") should fail
          validate_absolute_path(".") should fail
          validate_absolute_path("..") should fail
          validate_absolute_path("./foo") should fail
          validate_absolute_path("../foo") should fail
          validate_absolute_path("etc/puppetlabs/puppet") should fail
          validate_absolute_path("opt/puppet/bin") should fail
        absolute paths
          validate_absolute_path("C:/") should not fail
          validate_absolute_path("C:\\") should not fail
          validate_absolute_path("C:\\WINDOWS\\System32") should not fail
          validate_absolute_path("C:/windows/system32") should not fail
          validate_absolute_path("X:/foo/bar") should not fail
          validate_absolute_path("X:\\foo\\bar") should not fail
          validate_absolute_path("/var/tmp") should not fail
          validate_absolute_path("/var/lib/puppet") should not fail
          validate_absolute_path("/var/opt/../lib/puppet") should not fail
          validate_absolute_path("C:\\Program Files (x86)\\Puppet Labs\\Puppet Enterprise") should not fail
          validate_absolute_path("C:/Program Files (x86)/Puppet Labs/Puppet Enterprise") should not fail

    Finished in 0.05637 seconds
    23 examples, 0 failures
@kbarber
Copy link
Contributor

kbarber commented Mar 7, 2012

Looking.

kbarber added a commit that referenced this pull request Mar 7, 2012
…e_path_function

(#12357) Add validate_absolute_path() function
@kbarber kbarber merged commit 898ff80 into puppetlabs:2.3.x Mar 7, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants