~brightbox/flashpolicyd/debian-packaging

« back to all changes in this revision

Viewing changes to patches/add-drop-privileges.patch

  • Committer: Neil Wilson
  • Date: 2011-02-09 18:57:27 UTC
  • Revision ID: neil@aldur.co.uk-20110209185727-hez11ubnwdasrp8b
Drop patches incorporated upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
## Description: Alter flashpolicyd to allow dropping privileges.
2
 
## Origin/Author: https://github.com/ripienaar/flashpolicyd/commit/aca4739acc9a80de920023ae274fd81d674bcbb2
3
 
--- a/flashpolicyd.rb
4
 
+++ b/flashpolicyd.rb
5
 
@@ -40,6 +40,9 @@
6
 
 #
7
 
 # --logfile
8
 
 #   Where to write log lines too
9
 
+# 
10
 
+# --user
11
 
+#   Drops privileges after binding to the socket to this user
12
 
 #
13
 
 # == Download and Further Information
14
 
 # Latest versions, installation documentation and other related info can be found
15
 
@@ -60,6 +63,7 @@
16
 
     [ '--verbose', '-v', GetoptLong::NO_ARGUMENT],
17
 
     [ '--timeout', '-t', GetoptLong::OPTIONAL_ARGUMENT],
18
 
     [ '--logfreq', '-l', GetoptLong::OPTIONAL_ARGUMENT],
19
 
+    [ '--user', '-u', GetoptLong::OPTIONAL_ARGUMENT],
20
 
     [ '--logfile', GetoptLong::REQUIRED_ARGUMENT],
21
 
     [ '--help', '-h', GetoptLong::NO_ARGUMENT]
22
 
 )
23
 
@@ -71,6 +75,7 @@
24
 
 @logfreq = 1800
25
 
 xmlfile = ""
26
 
 logfile = ""
27
 
+user = ""
28
 
 
29
 
 opts.each { |opt, arg|
30
 
   case opt
31
 
@@ -87,6 +92,8 @@
32
 
       exit
33
 
     when '--xml'
34
 
       xmlfile = arg
35
 
+    when '--user'
36
 
+      user = arg
37
 
     when '--verbose'
38
 
       @verbose = true
39
 
     when '--maxclients'
40
 
@@ -394,6 +401,17 @@
41
 
     server = PolicyServer.new(843, "0.0.0.0", @xmldata, @logger, @timeout, @verbose)
42
 
     server.start
43
 
 
44
 
+    # change user after binding to port
45
 
+    if user.length > 0
46
 
+      require 'etc'
47
 
+      uid = Etc.getpwnam(user).uid
48
 
+      gid = Etc.getpwnam(user).gid
49
 
+      # Change process ownership
50
 
+      Process.initgroups(user, gid)
51
 
+      Process::GID.change_privilege(gid)
52
 
+      Process::UID.change_privilege(uid)
53
 
+    end
54
 
+
55
 
     # Send HUP to toggle debug mode or not for a running server
56
 
     trap("HUP") {
57
 
       server.toggledebug