Uploaded image for project: 'Facter'
  1. Facter
  2. FACT-1286

Facter::Util::Resolution.which() returns directories, not only executable files

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Normal
    • Resolution: Fixed
    • Affects Version/s: FACT 2.4.4
    • Fix Version/s: FACT 2.4.5
    • Component/s: Community
    • Labels:
      None
    • Template:
    • Story Points:
      1
    • Sprint:
      Client 2015-12-30
    • Release Notes:
      Bug Fix
    • Release Notes Summary:
      `Facter::Util::Resolution.which` no longer returns a directory if a directory with a matching name is found earlier in the PATH than an executable file with a matching name.

      Description

      Environment:

      $ echo $PATH
      /usr/java/default/bin:/sbin:/bin:/usr/sbin:/usr/bin
       
      $ PATH=/tmp:$PATH
       
      $ echo $PATH
      /tmp:/usr/java/default/bin:/sbin:/bin:/usr/sbin:/usr/bin
       
      $ mkdir /tmp/ifconfig
      

      Expected behavior:

      $ which ifconfig
      /sbin/ifconfig
       
      $ irb
      irb(main):001:0> require 'facter'
      => true
      irb(main):002:0> Facter::Util::Resolution.which('ifconfig')
      => "/sbin/ifconfig"
      

      Actual behavior:

      $ which ifconfig
      /sbin/ifconfig
       
      $ irb
      irb(main):001:0> require 'facter'
      => true
      irb(main):002:0> Facter::Util::Resolution.which('ifconfig')
      => "/tmp/ifconfig"
      

      This appears to be caused by the fact that Ruby's 'File.executable?' method returns true for directories.

        Attachments

          Activity

            People

            Assignee:
            Unassigned
            Reporter:
            p8952 Peter Wilmott
            QA Contact:
            Eric Thompson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Zendesk Support