The "undefined local variable or method `path'" exception is always thrown... in other words this code never works... A better fix would look something like (untested, excuse typos):

    diff --git a/lib/facter/macaddress.rb b/lib/facter/macaddress.rb
    index 3bcc927..14865ab 100644
    --- a/lib/facter/macaddress.rb
    +++ b/lib/facter/macaddress.rb
    @@ -15,8 +15,9 @@ Facter.add(:macaddress) do
       has_weight  10                # about an order of magnitude faster
       setcode do
         begin
    -      Dir.glob('/sys/class/net/*').reject {|x| x[-3..-1] == '/lo' }.first
    -      path and File.read(path + '/address')
    +      path = Dir.glob('/sys/class/net/*').reject {|x| x[-3..-1] == '/lo' }.first
    +      value = File.read(path + '/address').strip if path.to_s != ''
    +      value if value.to_s != ''
         rescue Exception
           nil
         end

But then this would actually change behavior in the field, tests would need to be written, etc. Since the original code had no effect the best short term solution to unblock me (debugging completely separate issues) is to just revert.