Changeset 9194


Ignore:
Timestamp:
2007-10-08T22:31:17+02:00 (10 years ago)
Author:
nbd
Message:

fix insmod crash when the module is not found

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/busybox/patches/470-insmod_search.patch

    r9146 r9194  
    11Index: busybox-1.7.2/modutils/insmod.c 
    22=================================================================== 
    3 --- busybox-1.7.2.orig/modutils/insmod.c        2007-10-05 14:39:19.922555340 +0200 
    4 +++ busybox-1.7.2/modutils/insmod.c     2007-10-05 21:08:55.442650322 +0200 
    5 @@ -61,19 +61,107 @@ 
     3--- busybox-1.7.2.orig/modutils/insmod.c        2007-10-08 22:22:17.132454529 +0200 
     4+++ busybox-1.7.2/modutils/insmod.c     2007-10-08 22:29:04.267655851 +0200 
     5@@ -61,19 +61,110 @@ 
    66 #include "libbb.h" 
    77 #include <libgen.h> 
     
    102102+ 
    103103+       /* Check if we have a complete path */ 
    104 +       if (g_filename != NULL) { 
    105 +               if ((stat(g_filename, &st) == 0) && S_ISREG(st.st_mode)) 
    106 +                       ret = 0; 
    107 +               else 
    108 +                       free(g_filename); 
    109 +       } 
     104+       if (g_filename == NULL) 
     105+               goto done; 
     106+ 
     107+       if ((stat(g_filename, &st) == 0) && S_ISREG(st.st_mode)) 
     108+               ret = 0; 
     109+       else 
     110+               free(g_filename); 
     111+ 
     112+done: 
    110113+       free(filename); 
    111114+ 
     
    115118  
    116119 #if ENABLE_FEATURE_2_4_MODULES 
    117 @@ -677,7 +765,6 @@ 
     120@@ -677,7 +768,6 @@ 
    118121 #endif 
    119122  
     
    123126  
    124127 /*======================================================================*/ 
    125 @@ -790,37 +877,6 @@ 
     128@@ -790,37 +880,6 @@ 
    126129 static int n_ext_modules_used; 
    127130 extern int delete_module(const char *); 
     
    161164 { 
    162165        struct arch_file *f; 
    163 @@ -3952,145 +4008,57 @@ 
     166@@ -3952,145 +4011,57 @@ 
    164167 void print_load_map(struct obj_file *f); 
    165168 #endif 
     
    228231-               } 
    229232-       } 
    230   
     233- 
    231234-#if ENABLE_FEATURE_2_6_MODULES 
    232235-       if (k_version > 4 && len > 3 && tmp[len - 3] == '.' 
     
    242245-               } 
    243246- 
    244 - 
     247  
    245248-#if ENABLE_FEATURE_2_6_MODULES 
    246249-       if (k_version > 4) 
     
    330333        f = obj_load(fp, LOADBITS); 
    331334        if (f == NULL) 
    332 @@ -4120,7 +4088,7 @@ 
     335@@ -4120,7 +4091,7 @@ 
    333336                                "\t%s was compiled for kernel version %s\n" 
    334337                                "\twhile this kernel is version %s", 
     
    339342                                goto out; 
    340343                } 
    341 @@ -4173,7 +4141,7 @@ 
     344@@ -4173,7 +4144,7 @@ 
    342345        hide_special_symbols(f); 
    343346  
     
    348351  
    349352        new_create_module_ksymtab(f); 
    350 @@ -4220,30 +4188,22 @@ 
     353@@ -4220,30 +4191,22 @@ 
    351354        if (flag_print_load_map) 
    352355                print_load_map(f); 
     
    385388 static const char *moderror(int err) 
    386389 { 
    387 @@ -4261,19 +4221,33 @@ 
     390@@ -4261,19 +4224,32 @@ 
    388391        } 
    389392 } 
     
    416419                bb_show_usage(); 
    417420  
    418 +       g_filename = filename; 
    419421+       ret = find_module(filename); 
    420 +       if (ret) 
     422+       if (ret || (g_filename == NULL)) 
    421423+               goto done; 
    422424+ 
     
    424426        options = xzalloc(1); 
    425427        optlen = 0; 
    426 @@ -4283,36 +4257,46 @@ 
     428@@ -4283,36 +4259,47 @@ 
    427429                optlen += sprintf(options + optlen, (strchr(*argv,' ') ? "\"%s\" " : "%s "), *argv); 
    428430        } 
     
    472474+       int ret; 
    473475+ 
     476+       g_filename = NULL; 
    474477+#if ENABLE_FEATURE_2_6_MODULES 
    475478+       ret = insmod_main_26(argc, argv); 
Note: See TracChangeset for help on using the changeset viewer.