tags 322597 patch
thanks

Hi,

Here's the revised, portable replacement for 22_linux_rawio_capability.dpatch.

Also attaching a patch for debian/control (Build-Depends).

-- 
Robert Millan
#! /bin/sh /usr/share/dpatch/dpatch-run
##
## DP: Add linux specific rawio capability allocation to work with kernels > 
2.6.8

@DPATCH@
diff -ur cdrtools-2.01+01a01.old/RULES/os-linux.id 
cdrtools-2.01+01a01/RULES/os-linux.id
--- cdrtools-2.01+01a01.old/RULES/os-linux.id   1997-02-01 01:10:06.000000000 
+0100
+++ cdrtools-2.01+01a01/RULES/os-linux.id       2005-08-19 20:53:43.000000000 
+0200
@@ -22,3 +22,5 @@
 ###########################################################################
 O_ARCH=                linux
 -O_ARCH=       -$(O_ARCH)
+
+LIB_CAP= -lcap
diff -ur cdrtools-2.01+01a01.old/cdrecord/Makefile 
cdrtools-2.01+01a01/cdrecord/Makefile
--- cdrtools-2.01+01a01.old/cdrecord/Makefile   2004-05-26 09:31:00.000000000 
+0200
+++ cdrtools-2.01+01a01/cdrecord/Makefile       2005-08-19 20:55:47.000000000 
+0200
@@ -33,7 +33,7 @@
                ../include/scg/scgio.h ../include/scg/scsidefs.h \
                ../include/scg/scsireg.h ../include/scg/scsitransp.h
 #LIBS=         -lschily $(LIB_SOCKET)
-LIBS=          -lrscg -lscg $(LIB_VOLMGT) -ledc_ecc -ldeflt -lschily 
$(SCSILIB) $(LIB_SOCKET)
+LIBS=          -lrscg -lscg $(LIB_VOLMGT) -ledc_ecc -ldeflt -lschily 
$(SCSILIB) $(LIB_SOCKET) $(LIB_CAP)
 XMK_FILE=      Makefile.man
 
 ###########################################################################
diff -ur cdrtools-2.01+01a01.old/cdrecord/cdrecord.c 
cdrtools-2.01+01a01/cdrecord/cdrecord.c
--- cdrtools-2.01+01a01.old/cdrecord/cdrecord.c 2004-10-17 13:44:58.000000000 
+0200
+++ cdrtools-2.01+01a01/cdrecord/cdrecord.c     2005-08-19 20:55:06.000000000 
+0200
@@ -58,6 +58,9 @@
 #include "defaults.h"
 #include "movesect.h"
 
+#ifdef __linux__
+#include <sys/capability.h>    /* for rawio capability */
+#endif
 
 char   cdr_version[] = "2.01.01a01";
 
@@ -244,6 +247,10 @@
 LOCAL  void    set_wrmode      __PR((cdr_t *dp, int wmode, int tflags));
 LOCAL  void    linuxcheck      __PR((void));
 
+#ifdef __linux__
+LOCAL int get_cap   __PR((cap_value_t cap_array));
+#endif
+
 struct exargs {
        SCSI    *scgp;
        cdr_t   *dp;
@@ -505,6 +512,14 @@
 #endif
                        comerr("Panic cannot set back effective uid.\n");
        }
+
+#ifdef __linux__
+       /* get the rawio capability */
+       if (get_cap(CAP_SYS_RAWIO))
+               perror("Error: Cannot gain SYS_RAWIO capability."
+                       "Is cdrecord installed SUID root?\n");
+#endif
+
        /*
         * WARNING: We now are no more able to do any privilleged operation
         * unless we have been called by root.
@@ -1032,6 +1047,12 @@
                        if (setreuid(-1, getuid()) < 0)
                                comerr("Panic cannot set back effective 
uid.\n");
                }
+#ifdef __linux__
+               if (get_cap(CAP_SYS_RAWIO))
+                       perror("Error: Cannot gain SYS_RAWIO capability."
+                               "Is cdrecord installed SUID root?\n");
+#endif
+
 #endif
        }
        if ((*dp->cdr_set_speed_dummy)(scgp, dp, &speed) < 0) {
@@ -4724,3 +4745,18 @@
        }
 #endif
 }
+
+#ifdef __linux__
+LOCAL int
+get_cap(cap_array)
+       cap_value_t cap_array;
+{ 
+         int ret;
+         cap_t capa;
+         capa = cap_get_proc();
+         cap_set_flag(capa, CAP_EFFECTIVE,  1, &cap_array, CAP_SET);
+         ret = cap_set_proc(capa);
+         cap_free(capa);
+         return ret; 
+}
+#endif
--- cdrtools-2.01+01a01/debian/control~ 2005-08-19 16:33:46.000000000 +0200
+++ cdrtools-2.01+01a01/debian/control  2005-08-19 21:28:36.000000000 +0200
@@ -3,7 +3,7 @@
 Section: otherosfs
 Maintainer: Joerg Jaspert <[EMAIL PROTECTED]>
 Uploaders: Eduard Bloch <[EMAIL PROTECTED]>
-Build-Depends: debhelper (>=4.1.16), autotools-dev, smake, zlib1g-dev, dpatch, 
libcap-dev
+Build-Depends: debhelper (>=4.1.16), autotools-dev, smake, zlib1g-dev, dpatch, 
libcap-dev [!kfreebsd-i386 !hurd-i386]
 Standards-Version: 3.6.1.0
 
 Package: cdrecord

Reply via email to