Steven Seeger writes:
authorEric Andersen <andersen@codepoet.org>
Fri, 14 Nov 2003 02:49:19 +0000 (02:49 -0000)
committerEric Andersen <andersen@codepoet.org>
Fri, 14 Nov 2003 02:49:19 +0000 (02:49 -0000)
Hey guys. I've found a bug in modprobe where it generates bad strings and
makes sytem calls with them. The following patch seems to have fixed the
problem. It is rather inherited elsewhere, as there seems to be incorrect
entries in the list which results in more dependencies than really exist for
a given call to mod_process. But, this patch prevents the bad text from
going to the screen. You will notice there are cases where lcmd goes
unmodified before calling system.

Please consider the following patch.

Thanks.

-Steve

modutils/modprobe.c

index 07cbb6fc78996b28125ebf6013fdf3c16abaae7b..d48f36ed196f28d20038dd94711b6429ce511c3d 100644 (file)
@@ -352,6 +352,7 @@ static int mod_process ( struct mod_list_t *list, int do_insert )
        int rc = 1;
 
        while ( list ) {
+               *lcmd = '\0';
                if ( do_insert ) {
                        if (already_loaded (list->m_module) != 1)
                                snprintf ( lcmd, sizeof( lcmd ) - 1, "insmod %s %s %s %s %s", do_syslog ? "-s" : "", autoclean ? "-k" : "", quiet ? "-q" : "", list-> m_module, list-> m_options ? list-> m_options : "" );
@@ -362,7 +363,7 @@ static int mod_process ( struct mod_list_t *list, int do_insert )
                
                if ( verbose )
                        printf ( "%s\n", lcmd );
-               if ( !show_only ) {
+               if ( !show_only && *lcmd) {
                        int rc2 = system ( lcmd );
                        if (do_insert) rc = rc2; /* only last module matters */
                        else if (!rc2) rc = 0; /* success if remove any mod */