summaryrefslogtreecommitdiff
path: root/libavcodec/eval.c
diff options
context:
space:
mode:
authorRamiro Polla <ramiro.polla@gmail.com>2009-09-12 17:59:19 +0000
committerRamiro Polla <ramiro.polla@gmail.com>2009-09-12 17:59:19 +0000
commit0345f36bbdd63f61dae07cbf9e307f8746b1227e (patch)
tree9303ef040c29ef414ba415c80b358006c0e2e26a /libavcodec/eval.c
parent7ef618796a6f4adf5bb16adce40ccacab0b232b6 (diff)
eval: Check for return value of memory allocations.
Originally committed as revision 19827 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/eval.c')
-rw-r--r--libavcodec/eval.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/libavcodec/eval.c b/libavcodec/eval.c
index 1d52ba582b..134c43f08b 100644
--- a/libavcodec/eval.c
+++ b/libavcodec/eval.c
@@ -185,6 +185,9 @@ static AVEvalExpr * parse_primary(Parser *p) {
char *next= p->s;
int i;
+ if (!d)
+ return NULL;
+
/* number */
d->value = av_strtod(p->s, &next);
if(next != p->s){
@@ -288,6 +291,8 @@ static AVEvalExpr * parse_primary(Parser *p) {
static AVEvalExpr * new_eval_expr(int type, int value, AVEvalExpr *p0, AVEvalExpr *p1){
AVEvalExpr * e = av_mallocz(sizeof(AVEvalExpr));
+ if (!e)
+ return NULL;
e->type =type ;
e->value =value ;
e->param[0] =p0 ;
@@ -307,6 +312,8 @@ static AVEvalExpr * parse_factor(Parser *p){
while(p->s[0]=='^'){
p->s++;
e= new_eval_expr(e_pow, 1, e, parse_pow(p, &sign2));
+ if (!e)
+ return NULL;
if (e->param[1]) e->param[1]->value *= (sign2|1);
}
if (e) e->value *= (sign|1);
@@ -318,6 +325,8 @@ static AVEvalExpr * parse_term(Parser *p){
while(p->s[0]=='*' || p->s[0]=='/'){
int c= *p->s++;
e= new_eval_expr(c == '*' ? e_mul : e_div, 1, e, parse_factor(p));
+ if (!e)
+ return NULL;
}
return e;
}
@@ -326,6 +335,8 @@ static AVEvalExpr * parse_subexpr(Parser *p) {
AVEvalExpr * e = parse_term(p);
while(*p->s == '+' || *p->s == '-') {
e= new_eval_expr(e_add, 1, e, parse_term(p));
+ if (!e)
+ return NULL;
};
return e;
@@ -343,6 +354,8 @@ static AVEvalExpr * parse_expr(Parser *p) {
while(*p->s == ';') {
p->s++;
e= new_eval_expr(e_last, 1, e, parse_subexpr(p));
+ if (!e)
+ return NULL;
};
p->stack_index++;