Skip to content
Snippets Groups Projects
Commit 8ed07241 authored by Mark Spencer's avatar Mark Spencer
Browse files

Fix setvar issue (bug #3010)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4419 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent be2505fe
No related branches found
No related tags found
No related merge requests found
......@@ -651,19 +651,24 @@ struct val *a, *b;
{
struct val *r;
if (!to_integer (a) || !to_integer (b)) {
if (!to_integer (a)) {
ast_log(LOG_WARNING,"non-numeric argument\n");
free_value(a);
if (!to_integer (b)) {
free_value(a);
free_value(b);
return make_integer(0);
} else {
free_value(a);
return (b);
}
} else if (!to_integer(b)) {
free_value(b);
return(NULL);
return (a);
}
r = make_integer (/*(quad_t)*/(a->u.i + b->u.i));
if (chk_plus (a->u.i, b->u.i, r->u.i)) {
ast_log(LOG_WARNING,"overflow\n");
free_value(a);
free_value(b);
return(NULL);
}
free_value (a);
free_value (b);
......@@ -691,19 +696,27 @@ struct val *a, *b;
{
struct val *r;
if (!to_integer (a) || !to_integer (b)) {
free_value(a);
free_value(b);
if (!to_integer (a)) {
ast_log(LOG_WARNING, "non-numeric argument\n");
return(NULL);
if (!to_integer (b)) {
free_value(a);
free_value(b);
return make_integer(0);
} else {
r = make_integer(0 - b->u.i);
free_value(a);
free_value(b);
return (r);
}
} else if (!to_integer(b)) {
ast_log(LOG_WARNING, "non-numeric argument\n");
free_value(b);
return (a);
}
r = make_integer (/*(quad_t)*/(a->u.i - b->u.i));
if (chk_minus (a->u.i, b->u.i, r->u.i)) {
free_value(a);
free_value(b);
ast_log(LOG_WARNING, "overload\n");
return(NULL);
ast_log(LOG_WARNING, "overflow\n");
}
free_value (a);
free_value (b);
......@@ -733,15 +746,12 @@ struct val *a, *b;
free_value(a);
free_value(b);
ast_log(LOG_WARNING, "non-numeric argument\n");
return(NULL);
return(make_integer(0));
}
r = make_integer (/*(quad_t)*/(a->u.i * b->u.i));
if (chk_times (a->u.i, b->u.i, r->u.i)) {
ast_log(LOG_WARNING, "overflow\n");
free_value(a);
free_value(b);
return(NULL);
}
free_value (a);
free_value (b);
......@@ -766,26 +776,28 @@ struct val *a, *b;
{
struct val *r;
if (!to_integer (a) || !to_integer (b)) {
if (!to_integer (a)) {
free_value(a);
free_value(b);
ast_log(LOG_WARNING, "non-numeric argument\n");
return(NULL);
return make_integer(0);
} else if (!to_integer (b)) {
free_value(a);
free_value(b);
ast_log(LOG_WARNING, "non-numeric argument\n");
return make_integer(INT_MAX);
}
if (b->u.i == 0) {
ast_log(LOG_WARNING, "division by zero\n");
free_value(a);
free_value(b);
return(NULL);
return make_integer(INT_MAX);
}
r = make_integer (/*(quad_t)*/(a->u.i / b->u.i));
if (chk_div (a->u.i, b->u.i)) {
ast_log(LOG_WARNING, "overflow\n");
free_value(a);
free_value(b);
return(NULL);
}
free_value (a);
free_value (b);
......@@ -802,14 +814,13 @@ struct val *a, *b;
ast_log(LOG_WARNING, "non-numeric argument\n");
free_value(a);
free_value(b);
return(NULL);
return make_integer(0);
}
if (b->u.i == 0) {
ast_log(LOG_WARNING, "div by zero\n");
free_value(a);
free_value(b);
return(NULL);
return (b);
}
r = make_integer (/*(quad_t)*/(a->u.i % b->u.i));
......@@ -839,7 +850,7 @@ struct val *a, *b;
ast_log(LOG_WARNING,"regcomp() error : %s",errbuf);
free_value(a);
free_value(b);
return(NULL);
return make_str("");
}
/* compare string against pattern */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment