r9826: Add some more OOM checks
authorJelmer Vernooij <jelmer@samba.org>
Wed, 31 Aug 2005 14:26:20 +0000 (14:26 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:36:15 +0000 (13:36 -0500)
source/param/generic.c
source/scripting/ejs/smbcalls_param.c

index 6866ffbf5652a7dd32268fe799c2994c97a3dac0..b6d2fd044995d4c719f7a5ad8f92a755355362a0 100644 (file)
@@ -68,6 +68,9 @@ static struct param *param_get_add(struct param_context *ctx, const char *sectio
 
        if (section == NULL) {
                section = talloc_zero(ctx, struct param_section);
+               if (section == NULL)
+                       return NULL;
+
                section->name = talloc_strdup(section, section_name);
                DLIST_ADD(ctx->sections, section);
        }
@@ -75,6 +78,9 @@ static struct param *param_get_add(struct param_context *ctx, const char *sectio
        p = param_section_get(section, name);
        if (p == NULL) {
                p = talloc_zero(section, struct param);
+               if (p == NULL)
+                       return NULL;
+
                p->name = talloc_strdup(p, name);
                DLIST_ADD(section->parameters, p);
        }
@@ -146,6 +152,9 @@ void param_set_int(struct param_context *ctx, const char *section, const char *p
 {
        struct param *p = param_get_add(ctx, section, param);
 
+       if (!p) 
+               return;
+
        p->value = talloc_asprintf(p, "%d", value);
 }
 
@@ -163,6 +172,9 @@ void param_set_ulong(struct param_context *ctx, const char *section, const char
 {
        struct param *p = param_get_add(ctx, section, name);
 
+       if (!p)
+               return;
+
        p->value = talloc_asprintf(p, "%lu", value);
 }
 
@@ -173,6 +185,9 @@ static BOOL param_sfunc (const char *name, void *_ctx)
 
        if (section == NULL) {
                section = talloc_zero(ctx, struct param_section);
+               if (section == NULL)
+                       return False;
+
                section->name = talloc_strdup(section, name);
 
                DLIST_ADD(ctx->sections, section);
@@ -191,6 +206,9 @@ static BOOL param_pfunc (const char *name, const char *value, void *_ctx)
 
        if (!p) {
                p = talloc_zero(ctx->sections, struct param);
+               if (p == NULL)
+                       return False;
+
                p->name = talloc_strdup(p, name);
                p->value = talloc_strdup(p, value);
                DLIST_ADD(ctx->sections->parameters, p);
@@ -211,8 +229,10 @@ struct param_context *param_init(TALLOC_CTX *mem_ctx)
 int param_read(struct param_context *ctx, const char *fn)
 {
        ctx->sections = talloc_zero(ctx, struct param_section);
+       if (ctx->sections == NULL)
+               return -1;
+
        ctx->sections->name = talloc_strdup(ctx->sections, "global");
-       
        if (!pm_process( fn, param_sfunc, param_pfunc, ctx)) {
                return -1;
        }
index ddd2b44c8229c406253bd072420247c46cf50d01..578df1b0874f0cff46bbbb5e56b7bedeefe663f1 100644 (file)
@@ -70,7 +70,7 @@ static int ejs_param_get_list(MprVarHandle eid, int argc, char **argv)
        const char **ret;
 
        if (argc != 1 && argc != 2) {
-               ejsSetErrorMsg(eid, "param.get invalid argument count");
+               ejsSetErrorMsg(eid, "param.get_list invalid argument count");
                return -1;
        }
 
@@ -83,7 +83,7 @@ static int ejs_param_get_list(MprVarHandle eid, int argc, char **argv)
                ret = param_get_string_list(ctx, NULL, argv[0], NULL);
        }
 
-       if (ret) {
+       if (ret != NULL) {
                mpr_Return(eid, mprList("array", ret));
        } else {
                mpr_Return(eid, mprCreateUndefinedVar());