Hi Jeroen, On Thu, Apr 26, 2012 at 12:25:16PM -0700, Jeroen Ooms wrote: > If it is helpful, here is some instructions to reproduce the problem. > I am using Ubuntu 11.10. > > # one time install: > sudo apt-get install r-base libapparmor-dev > wget http://www.stat.ucla.edu/~jeroen/files/rApparmor_0.1.tar.gz > sudo R CMD INSTALL rApparmor_0.1.tar.gz > > # start R: > R > > # enter these commands in the R console: > library(rApparmor) > aa_change_profile("testprofile")
The issue here is a type-mismatch in your wrapper code. From the Writing R Extensions manual, section 5.2 http://cran.r-project.org/doc/manuals/R-exts.html#Interface-functions-_002eC-and-_002eFortran The following table gives the mapping between the modes of R vectors and the types of arguments to a C function or FORTRAN subroutine. R storage mode C type FORTRAN type [SNIP] character char ** CHARACTER*255 Your wrapper functions don't take this into account: void aa_change_profile_wrapper (int *ret, char *profile) { *ret = aa_change_profile (profile); if(ret != 0){ *ret = errno; } } You need to convert the "char *profile" declaration to "char **profile" and then evaluate one level of pointer in the aa_change_profile() call, like so: void aa_change_profile_wrapper (int *ret, char **profile) { *ret = aa_change_profile (*profile); if(ret != 0){ *ret = errno; } } When I do this, I am able to successfully make aa_change_profile calls from within R: $ R > library(rApparmor) (switch to a different shell) $ cat /proc/$(pidof R)/attr/current unconfined (back to R) > library(rApparmor) > aa_change_profile("testprofile") Error in aa_change_profile("testprofile") : Failed to change profile to: testprofile. Error: 2 > aa_change_profile("/bin/ping") > (and back to the other shell) $ cat /proc/$(pidof R)/attr/current /bin/ping (enforce) I didn't look at the aa_change_hat wrapper function, but I suspect a similar type mis-match there as well. Thanks for trying this out! I'm really curious how well this functionality works in R. -- Steve Beattie <[email protected]> http://NxNW.org/~steve/
signature.asc
Description: Digital signature
-- AppArmor mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor
