On 04/02/2015 08:17 AM, Tyler Hicks wrote:
> Signed-off-by: Tyler Hicks <[email protected]>

Acked-by: John Johansen <[email protected]>

> ---
>  libraries/libapparmor/include/sys/apparmor.h |  4 ++--
>  libraries/libapparmor/src/kernel_interface.c | 13 +++++++------
>  libraries/libapparmor/src/policy_cache.c     |  2 +-
>  parser/parser_main.c                         |  4 ++--
>  4 files changed, 12 insertions(+), 11 deletions(-)
> 
> diff --git a/libraries/libapparmor/include/sys/apparmor.h 
> b/libraries/libapparmor/include/sys/apparmor.h
> index ba20071..8fc3bda 100644
> --- a/libraries/libapparmor/include/sys/apparmor.h
> +++ b/libraries/libapparmor/include/sys/apparmor.h
> @@ -127,13 +127,13 @@ void aa_kernel_interface_unref(aa_kernel_interface 
> *kernel_interface);
>  int aa_kernel_interface_load_policy(aa_kernel_interface *kernel_interface,
>                                   const char *buffer, size_t size);
>  int aa_kernel_interface_load_policy_from_file(aa_kernel_interface 
> *kernel_interface,
> -                                           const char *path);
> +                                           int dirfd, const char *path);
>  int aa_kernel_interface_load_policy_from_fd(aa_kernel_interface 
> *kernel_interface,
>                                           int fd);
>  int aa_kernel_interface_replace_policy(aa_kernel_interface *kernel_interface,
>                                      const char *buffer, size_t size);
>  int aa_kernel_interface_replace_policy_from_file(aa_kernel_interface 
> *kernel_interface,
> -                                              const char *path);
> +                                              int dirfd, const char *path);
>  int aa_kernel_interface_replace_policy_from_fd(aa_kernel_interface 
> *kernel_interface,
>                                              int fd);
>  int aa_kernel_interface_remove_policy(aa_kernel_interface *kernel_interface,
> diff --git a/libraries/libapparmor/src/kernel_interface.c 
> b/libraries/libapparmor/src/kernel_interface.c
> index 15b171f..293c93d 100644
> --- a/libraries/libapparmor/src/kernel_interface.c
> +++ b/libraries/libapparmor/src/kernel_interface.c
> @@ -183,11 +183,12 @@ static int write_policy_fd_to_iface(aa_kernel_interface 
> *kernel_interface,
>  }
>  
>  static int write_policy_file_to_iface(aa_kernel_interface *kernel_interface,
> -                                   const char *iface_file, const char *path)
> +                                   const char *iface_file,
> +                                   int dirfd, const char *path)
>  {
>       autoclose int fd;
>  
> -     fd = open(path, O_RDONLY);
> +     fd = openat(dirfd, path, O_RDONLY);
>       if (fd == -1)
>               return -1;
>  
> @@ -312,10 +313,10 @@ int aa_kernel_interface_load_policy(aa_kernel_interface 
> *kernel_interface,
>   * Returns: 0 on success, -1 on error with errno set
>   */
>  int aa_kernel_interface_load_policy_from_file(aa_kernel_interface 
> *kernel_interface,
> -                                           const char *path)
> +                                           int dirfd, const char *path)
>  {
>       return write_policy_file_to_iface(kernel_interface, AA_IFACE_FILE_LOAD,
> -                                       path);
> +                                       dirfd, path);
>  }
>  
>  /**
> @@ -356,10 +357,10 @@ int 
> aa_kernel_interface_replace_policy(aa_kernel_interface *kernel_interface,
>   * Returns: 0 on success, -1 on error with errno set
>   */
>  int aa_kernel_interface_replace_policy_from_file(aa_kernel_interface 
> *kernel_interface,
> -                                              const char *path)
> +                                              int dirfd, const char *path)
>  {
>       return write_policy_file_to_iface(kernel_interface,
> -                                       AA_IFACE_FILE_REPLACE, path);
> +                                       AA_IFACE_FILE_REPLACE, dirfd, path);
>  }
>  
>  /**
> diff --git a/libraries/libapparmor/src/policy_cache.c 
> b/libraries/libapparmor/src/policy_cache.c
> index e91388c..f59198a 100644
> --- a/libraries/libapparmor/src/policy_cache.c
> +++ b/libraries/libapparmor/src/policy_cache.c
> @@ -132,7 +132,7 @@ static int replace_all_cb(int dirfd unused, const char 
> *name, struct stat *st,
>                       return -1;
>               }
>               retval = 
> aa_kernel_interface_replace_policy_from_file(data->kernel_interface,
> -                                                                   path);
> +                                                                   -1, path);
>       }
>  
>       return retval;
> diff --git a/parser/parser_main.c b/parser/parser_main.c
> index 0ae5812..dda594c 100644
> --- a/parser/parser_main.c
> +++ b/parser/parser_main.c
> @@ -600,7 +600,7 @@ int process_binary(int option, aa_kernel_interface 
> *kernel_interface,
>       if (kernel_load) {
>               if (option == OPTION_ADD) {
>                       retval = profilename ?
> -                              
> aa_kernel_interface_load_policy_from_file(kernel_interface, profilename) :
> +                              
> aa_kernel_interface_load_policy_from_file(kernel_interface, AT_FDCWD, 
> profilename) :
>                                
> aa_kernel_interface_load_policy_from_fd(kernel_interface, 0);
>                       if (retval == -1) {
>                               retval = errno;
> @@ -610,7 +610,7 @@ int process_binary(int option, aa_kernel_interface 
> *kernel_interface,
>                       }
>               } else if (option == OPTION_REPLACE) {
>                       retval = profilename ?
> -                              
> aa_kernel_interface_replace_policy_from_file(kernel_interface, profilename) :
> +                              
> aa_kernel_interface_replace_policy_from_file(kernel_interface, AT_FDCWD, 
> profilename) :
>                                
> aa_kernel_interface_replace_policy_from_fd(kernel_interface, 0);
>                       if (retval == -1) {
>                               retval = errno;
> 



-- 
AppArmor mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/apparmor

Reply via email to