Cope with system("").
authorMichael Brown <mcb30@etherboot.org>
Fri, 8 Dec 2006 17:07:12 +0000 (17:07 +0000)
committerMichael Brown <mcb30@etherboot.org>
Fri, 8 Dec 2006 17:07:12 +0000 (17:07 +0000)
src/core/exec.c

index dee8144..73f111e 100644 (file)
@@ -48,14 +48,20 @@ static struct command commands_end[0] __table_end ( commands );
  */
 int execv ( const char *command, char * const argv[] ) {
        struct command *cmd;
-       int argc = 0;
-
-       assert ( argv[0] != NULL );
+       int argc;
 
        /* Count number of arguments */
-       do {
-               argc++;
-       } while ( argv[argc] != NULL );
+       for ( argc = 0 ; argv[argc] ; argc++ ) {}
+
+       /* Sanity checks */
+       if ( ! command ) {
+               DBG ( "No command\n" );
+               return -EINVAL;
+       }
+       if ( ! argc ) {
+               DBG ( "%s: empty argument list\n", command );
+               return -EINVAL;
+       }
 
        /* Reset getopt() library ready for use by the command.  This
         * is an artefact of the POSIX getopt() API within the context