diff options
author | Eric Paris <eparis@redhat.com> | 2011-10-03 15:44:14 -0400 |
---|---|---|
committer | Eric Paris <eparis@redhat.com> | 2011-11-02 15:37:10 -0400 |
commit | 023c9c1fdee963606d830b70db108bd9031390f4 (patch) | |
tree | 80cac408c2b009cfca268b2473983ab0ca3ff758 /libselinux/src/label.c | |
parent | c81a43c753efbda6f2106dbf0a291005683474f8 (diff) | |
download | android_external_selinux-023c9c1fdee963606d830b70db108bd9031390f4.tar.gz android_external_selinux-023c9c1fdee963606d830b70db108bd9031390f4.tar.bz2 android_external_selinux-023c9c1fdee963606d830b70db108bd9031390f4.zip |
libselinux: label: cosmetic cleanups
Return early to save an indent. Clean up all memory on ENOMEM
conditions. Use '\0' instead of 0 for nul terminiator. Style changes
to make Eric happy.
Signed-off-by: Eric Paris <eparis@redhat.com>
Acked-by: Dan Walsh <dwalsh@redhat.com>
Diffstat (limited to 'libselinux/src/label.c')
-rw-r--r-- | libselinux/src/label.c | 92 |
1 files changed, 50 insertions, 42 deletions
diff --git a/libselinux/src/label.c b/libselinux/src/label.c index 7d71e724..f1c9a258 100644 --- a/libselinux/src/label.c +++ b/libselinux/src/label.c @@ -62,50 +62,58 @@ struct selabel_sub *selabel_subs_init(const char *path,struct selabel_sub *list) FILE *cfg = fopen(path, "r"); struct selabel_sub *sub; - if (cfg) { - while (fgets_unlocked(buf, sizeof(buf) - 1, cfg)) { - char *ptr = NULL; - char *src = buf; - char *dst = NULL; - - while (*src && isspace(*src)) - src++; - if (src[0] == '#') continue; - ptr = src; - while (*ptr && ! isspace(*ptr)) - ptr++; - *ptr++ = 0; - if (! *src) continue; - - dst = ptr; - while (*dst && isspace(*dst)) - dst++; - ptr=dst; - while (*ptr && ! isspace(*ptr)) - ptr++; - *ptr=0; - if (! *dst) continue; - - sub = malloc(sizeof(struct selabel_sub)); - if (! sub) return list; - sub->src=strdup(src); - if (! sub->src) { - free(sub); - return list; - } - sub->dst=strdup(dst); - if (! sub->dst) { - free(sub->src); - free(sub); - return list; - } - sub->slen = strlen(src); - sub->next = list; - list = sub; - } - fclose(cfg); + if (!cfg) + return list; + + while (fgets_unlocked(buf, sizeof(buf) - 1, cfg)) { + char *ptr = NULL; + char *src = buf; + char *dst = NULL; + + while (*src && isspace(*src)) + src++; + if (src[0] == '#') continue; + ptr = src; + while (*ptr && ! isspace(*ptr)) + ptr++; + *ptr++ = '\0'; + if (! *src) continue; + + dst = ptr; + while (*dst && isspace(*dst)) + dst++; + ptr=dst; + while (*ptr && ! isspace(*ptr)) + ptr++; + *ptr='\0'; + if (! *dst) + continue; + + sub = malloc(sizeof(*sub)); + if (! sub) + goto err; + memset(sub, 0, sizeof(*sub)); + + sub->src=strdup(src); + if (! sub->src) + goto err; + + sub->dst=strdup(dst); + if (! sub->dst) + goto err; + + sub->slen = strlen(src); + sub->next = list; + list = sub; } +out: + fclose(cfg); return list; +err: + if (sub) + free(sub->src); + free(sub); + goto out; } /* |