Skip to content

Commit ba5bc0a

Browse files
authored
Merge pull request cfengine#5669 from larsewi/crash-3.21.x
libpromises/evalfunction: Do not crash w/o arguments (3.21.x)
2 parents eb8ffc9 + 9df186f commit ba5bc0a

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

libpromises/evalfunction.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5697,6 +5697,14 @@ static FnCallResult FnCallFormat(EvalContext *ctx, ARG_UNUSED const Policy *poli
56975697
static FnCallResult FnCallIPRange(EvalContext *ctx, ARG_UNUSED const Policy *policy,
56985698
const FnCall *fp, const Rlist *finalargs)
56995699
{
5700+
assert(fp != NULL);
5701+
5702+
if (finalargs == NULL)
5703+
{
5704+
Log(LOG_LEVEL_ERR, "Function '%s' requires at least one argument", fp->name);
5705+
return FnFailure();
5706+
}
5707+
57005708
const char *range = RlistScalarValue(finalargs);
57015709
const Rlist *ifaces = finalargs->next;
57025710

@@ -5761,6 +5769,14 @@ static FnCallResult FnCallIsIpInSubnet(ARG_UNUSED EvalContext *ctx,
57615769
ARG_UNUSED const Policy *policy,
57625770
const FnCall *fp, const Rlist *finalargs)
57635771
{
5772+
assert(fp != NULL);
5773+
5774+
if (finalargs == NULL)
5775+
{
5776+
Log(LOG_LEVEL_ERR, "Function '%s' requires at least one argument", fp->name);
5777+
return FnFailure();
5778+
}
5779+
57645780
const char *range = RlistScalarValue(finalargs);
57655781
const Rlist *ips = finalargs->next;
57665782

@@ -6878,6 +6894,12 @@ static FnCallResult FnCallEval(EvalContext *ctx, ARG_UNUSED const Policy *policy
68786894

68796895
static FnCallResult FnCallReadFile(ARG_UNUSED EvalContext *ctx, ARG_UNUSED const Policy *policy, ARG_UNUSED const FnCall *fp, const Rlist *finalargs)
68806896
{
6897+
if (finalargs == NULL)
6898+
{
6899+
Log(LOG_LEVEL_ERR, "Function 'readfile' requires at least one argument");
6900+
return FnFailure();
6901+
}
6902+
68816903
char *filename = RlistScalarValue(finalargs);
68826904
const Rlist *next = finalargs->next; // max_size argument, default to inf:
68836905
long maxsize = next ? IntFromString(RlistScalarValue(next)) : IntFromString("inf");

0 commit comments

Comments
 (0)