Fixed a realloc bug found by Martin Volf
authorRobert Griebl <griebl@gmx.de>
Sun, 2 Jun 2002 09:36:12 +0000 (09:36 -0000)
committerRobert Griebl <griebl@gmx.de>
Sun, 2 Jun 2002 09:36:12 +0000 (09:36 -0000)
modutils/modprobe.c

index a510f69e8a1eda9a9583ab7b27f333fbfb250b18..6a3e06df483d4ad49097fe82751fe4e648a29025 100644 (file)
@@ -354,7 +354,7 @@ static int mod_insert ( char *mod, int argc, char **argv )
                for ( i = 0; i < argc; i++ ) 
                        l += ( xstrlen ( argv [i] ) + 1 );
                
-               head-> m_module = realloc ( head-> m_module, l + 1 );
+               head-> m_module = xrealloc ( head-> m_module, l + 1 );
                
                for ( i = 0; i < argc; i++ ) {
                        strcat ( head-> m_module, " " );
@@ -440,7 +440,7 @@ extern int modprobe_main(int argc, char** argv)
        
        if (remove_opt) {
                do {
-                       mod_remove ( optind < argc ? argv [optind] : 0 );
+                       mod_remove ( optind < argc ? xstrdup ( argv [optind] ) : 0 );
                } while ( ++optind < argc );
                
                return EXIT_SUCCESS;
@@ -449,7 +449,7 @@ extern int modprobe_main(int argc, char** argv)
        if (optind >= argc) 
                error_msg_and_die ( "No module or pattern provided\n" );
        
-       return mod_insert ( argv [optind], argc - optind - 1, argv + optind + 1 ) ? \
+       return mod_insert ( xstrdup ( argv [optind] ), argc - optind - 1, argv + optind + 1 ) ? \
               EXIT_FAILURE : EXIT_SUCCESS;
 }