diff --git a/lib/dyndnsd.rb b/lib/dyndnsd.rb index b614044..1533c92 100755 --- a/lib/dyndnsd.rb +++ b/lib/dyndnsd.rb @@ -113,8 +113,14 @@ module Dyndnsd # drop priviliges as soon as possible # NOTE: first change group than user - Process::Sys.setgid(Etc.getgrnam(config['group']).gid) if config['group'] - Process::Sys.setuid(Etc.getpwnam(config['user']).uid) if config['user'] + if config['group'] + group = Etc.getgrnam(config['group']) + Process::Sys.setgid(group.gid) if group + end + if config['user'] + user = Etc.getpwnam(config['user']) + Process::Sys.setuid(user.uid) if user + end setup_traps diff --git a/lib/dyndnsd/database.rb b/lib/dyndnsd/database.rb index 38de603..e064b9d 100644 --- a/lib/dyndnsd/database.rb +++ b/lib/dyndnsd/database.rb @@ -16,7 +16,7 @@ module Dyndnsd # @return [void] def load if File.file?(@db_file) - @db = JSON.parse(File.open(@db_file, 'r', &:read)) + @db = JSON.parse(File.read(@db_file, mode: 'r')) else @db = {} end diff --git a/lib/dyndnsd/helper.rb b/lib/dyndnsd/helper.rb index 5ee25cc..e400512 100644 --- a/lib/dyndnsd/helper.rb +++ b/lib/dyndnsd/helper.rb @@ -58,7 +58,7 @@ module Dyndnsd 'error.kind': e.class.to_s, 'error.object': e, message: e.message, - stack: e.backtrace.join("\n") + stack: e.backtrace&.join("\n") || '' ) raise ensure diff --git a/lib/dyndnsd/updater/command_with_bind_zone.rb b/lib/dyndnsd/updater/command_with_bind_zone.rb index 6802587..33cadf7 100644 --- a/lib/dyndnsd/updater/command_with_bind_zone.rb +++ b/lib/dyndnsd/updater/command_with_bind_zone.rb @@ -15,7 +15,7 @@ module Dyndnsd # @return [void] def update(db) Helper.span('updater_update') do |span| - span.set_tag('dyndnsd.updater.name', self.class.name.split('::').last) + span.set_tag('dyndnsd.updater.name', self.class.name&.split('::')&.last || 'None') # write zone file in bind syntax File.open(@zone_file, 'w') { |f| f.write(@generator.generate(db)) } @@ -25,7 +25,7 @@ module Dyndnsd end # detach so children don't become zombies - Process.detach(pid) + Process.detach(pid) if pid end end end