[apparmor] [PATCH v2 19/42] parser: Remove exits from features code
John Johansen
john.johansen at canonical.com
Tue Mar 10 16:58:18 UTC 2015
On 03/06/2015 01:48 PM, Tyler Hicks wrote:
> This is done in preparation for moving the features code to a library.
>
> Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
Acked-by: John Johansen <john.johansen at canonical.com>
> ---
> parser/features.c | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/parser/features.c b/parser/features.c
> index ccc238d..2b81564 100644
> --- a/parser/features.c
> +++ b/parser/features.c
> @@ -102,6 +102,7 @@ static int features_dir_cb(DIR *dir, const char *name, struct stat *st,
> PDEBUG("Opened features \"%s\"\n", name);
> if (st->st_size > remaining) {
> PDEBUG("Feature buffer full.");
> + errno = ENOBUFS;
> return -1;
> }
>
> @@ -128,17 +129,17 @@ static int features_dir_cb(DIR *dir, const char *name, struct stat *st,
> return 0;
> }
>
> -static char *handle_features_dir(const char *filename, char *buffer, int size,
> - char *pos)
> +static int handle_features_dir(const char *filename, char *buffer, int size,
> + char *pos)
> {
> struct features_struct fst = { buffer, size, pos };
>
> if (dirat_for_each(NULL, filename, &fst, features_dir_cb)) {
> PDEBUG("Failed evaluating %s\n", filename);
> - exit(1);
> + return -1;
> }
>
> - return fst.pos;
> + return 0;
> }
>
> static int load_features_file(const char *name, char *buffer, size_t size)
> @@ -175,6 +176,7 @@ int aa_features_new(aa_features **features, const char *path)
> {
> struct stat stat_file;
> aa_features *f;
> + int retval;
>
> *features = NULL;
>
> @@ -188,9 +190,10 @@ int aa_features_new(aa_features **features, const char *path)
> }
> aa_features_ref(f);
>
> - if (S_ISDIR(stat_file.st_mode)) {
> - handle_features_dir(path, f->string, STRING_SIZE, f->string);
> - } else if (load_features_file(path, f->string, STRING_SIZE)) {
> + retval = S_ISDIR(stat_file.st_mode) ?
> + handle_features_dir(path, f->string, STRING_SIZE, f->string) :
> + load_features_file(path, f->string, STRING_SIZE);
> + if (retval) {
> int save = errno;
>
> aa_features_unref(f);
>
More information about the AppArmor
mailing list