summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Yeryomin <romans.jerjomins@saftehnika.com>2013-07-02 11:55:54 +0300
committerRoman Yeryomin <romans.jerjomins@saftehnika.com>2013-07-02 11:55:54 +0300
commitac01ec903191458a322e4782780974bbf6006ea8 (patch)
tree6869f6a09569208b4e7baf7edd65da2a824062aa
parent2120e5822ef44c4ff9b69e119768f10413849281 (diff)
Fix ioctl parameters lookups. References #18
Signed-off-by: Roman Yeryomin <romans.jerjomins@saftehnika.com>
-rw-r--r--target/linux/realtek/patches-2.6.30/8192cd-fix-private-ioctls.patch37
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;
+ }
+