]> git.sesse.net Git - ffmpeg/commitdiff
eval: Check for return value of memory allocations.
authorRamiro Polla <ramiro.polla@gmail.com>
Sat, 12 Sep 2009 17:59:19 +0000 (17:59 +0000)
committerRamiro Polla <ramiro.polla@gmail.com>
Sat, 12 Sep 2009 17:59:19 +0000 (17:59 +0000)
Originally committed as revision 19827 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/eval.c

index 1d52ba582bf45dfe4fe085f96a6b395f28cef0c1..134c43f08b441672ef83d6656765a084ff6a22b1 100644 (file)
@@ -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++;