aboutsummaryrefslogtreecommitdiffstats
path: root/libselinux/src/label.c
diff options
context:
space:
mode:
authorEric Paris <eparis@redhat.com>2011-10-03 15:44:14 -0400
committerEric Paris <eparis@redhat.com>2011-11-02 15:37:10 -0400
commit023c9c1fdee963606d830b70db108bd9031390f4 (patch)
tree80cac408c2b009cfca268b2473983ab0ca3ff758 /libselinux/src/label.c
parentc81a43c753efbda6f2106dbf0a291005683474f8 (diff)
downloadandroid_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.c92
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;
}
/*