--- cdrtools-2.01/cdrecord/cdrecord.c.rawio 2004-08-30 17:54:07.048063553 +0200 +++ cdrtools-2.01/cdrecord/cdrecord.c 2004-08-30 18:05:10.373312106 +0200 @@ -58,6 +58,7 @@ #include "defaults.h" #include "movesect.h" +#include /* for raw_io capability */ char cdr_version[] = "2.01a38"; @@ -245,6 +246,8 @@ LOCAL BOOL check_wrmode __PR((cdr_t *dp, int wmode, int tflags)); LOCAL void set_wrmode __PR((cdr_t *dp, int wmode, int tflags)); LOCAL void linuxcheck __PR((void)); +LOCAL int get_cap __PR((cap_value_t cap_array)); +LOCAL int get_cap __PR((cap_value_t cap_array)); struct exargs { SCSI *scgp; @@ -520,6 +523,11 @@ #endif comerr("Panic cannot set back effective uid.\n"); } + + /* get the rawio capability */ + if (get_cap(CAP_SYS_RAWIO)) + perror("WARNING ! Cannot gain SYS_RAWIO capability ! \n"); + /* * WARNING: We now are no more able to do any privilleged operation * unless we have been called by root. @@ -1051,6 +1059,10 @@ if (setreuid(-1, getuid()) < 0) comerr("Panic cannot set back effective uid.\n"); } + /* get the rawio capability */ + if (get_cap(CAP_SYS_RAWIO)) + perror("WARNING ! Cannot gain SYS_RAWIO capability ! \n"); + #endif } if ((*dp->cdr_set_speed_dummy)(scgp, dp, &speed) < 0) { @@ -4826,3 +4838,17 @@ } #endif } + +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; +} + --- cdrtools-2.01/cdrecord/Makefile.rawio 2004-05-26 09:31:00.000000000 +0200 +++ cdrtools-2.01/cdrecord/Makefile 2004-08-30 17:54:07.064059411 +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) -lcap XMK_FILE= Makefile.man ###########################################################################