shithub: sox

Download patch

ref: 7844afed6e899a5ed1327721e92f1fbad1e198a5
parent: 400d05369b02b737b3b9e2867a171a7f86649ad1
author: cbagwell <cbagwell>
date: Fri Sep 1 14:04:08 EDT 2006

Check effect getopt() return code and exit on error.

--- a/src/sox.c
+++ b/src/sox.c
@@ -812,6 +812,7 @@
 static void parse_effects(int argc, char **argv)
 {
     int argc_effect;
+    int effect_rc;
 
     nuser_effects = 0;
 
@@ -833,6 +834,7 @@
                 fprintf(stderr, "%s ", st_effects[i1]->name);
             fprintf(stderr, "\n\n");
             st_fail("Effect '%s' is not known!", argv[optind]);
+            exit(2);
         }
 
 
@@ -839,10 +841,15 @@
         /* Skip past effect name */
         optind++;
 
-        (*user_efftab[nuser_effects].h->getopts)
+        effect_rc = (*user_efftab[nuser_effects].h->getopts)
             (&user_efftab[nuser_effects],
              argc_effect,
              &argv[optind]);
+
+        if (effect_rc == ST_EOF)
+        {
+            exit(2);
+        }
 
         /* Skip past the effect arguments */
         optind += argc_effect;