diff options
-rw-r--r-- | target/linux/realtek/patches-2.6.30/8192cd-fix-private-ioctls.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/target/linux/realtek/patches-2.6.30/8192cd-fix-private-ioctls.patch b/target/linux/realtek/patches-2.6.30/8192cd-fix-private-ioctls.patch new file mode 100644 index 000000000..0f140fb43 --- /dev/null +++ b/target/linux/realtek/patches-2.6.30/8192cd-fix-private-ioctls.patch @@ -0,0 +1,37 @@ +--- linux-2.6.30.9/drivers/net/wireless/rtl8192cd/8192cd_ioctl.c 2013-06-29 15:37:41.982461999 +0300 ++++ linux-2.6.30.9/drivers/net/wireless/rtl8192cd/8192cd_ioctl.c 2013-07-01 17:53:46.747055454 +0300 +@@ -1537,19 +1537,26 @@ + + static struct iwpriv_arg *get_tbl_entry(char *pstr) + { +- int i=0; ++ if ( !pstr ) ++ return NULL; ++ ++ int i = 0; + int arg_num = sizeof(mib_table)/sizeof(struct iwpriv_arg); +- char name[128]; ++ char name[sizeof(mib_table[i].name)]; ++ memset( name, 0, sizeof name ); + +- while (*pstr && *pstr != '=') +- name[i++] = *pstr++; +- name[i] = '\0'; ++ for ( *pstr; i < sizeof(name); *pstr++ ) { ++ if ( *pstr == '=') ++ break; ++ name[i] = *pstr; ++ i++; ++ } + +- for (i=0; i<arg_num; i++) { +- if (!strcmp(name, mib_table[i].name)) { ++ for ( i = 0; i < arg_num; i++ ) { ++ if ( !strncmp( name, mib_table[i].name, sizeof(name) ) ) + return &mib_table[i]; +- } + } ++ + return NULL; + } + |