You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Added patches to fix several issues in wpcap.
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
From 9e5dd79c03afddd6a3d327b33cef358b849e891d Mon Sep 17 00:00:00 2001
|
||||
From: Jianqiu Zhang <zhangjianqiu_133@yeah.net>
|
||||
Date: Thu, 7 Jan 2016 16:33:34 +0800
|
||||
Subject: wpcap: Implement pcap_dump_open and pcap_dump
|
||||
|
||||
Signed-off-by: Jianqiu Zhang <zhangjianqiu_133@yeah.net>
|
||||
---
|
||||
dlls/wpcap/wpcap.c | 10 ++++++++++
|
||||
dlls/wpcap/wpcap.spec | 4 ++--
|
||||
2 files changed, 12 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/wpcap/wpcap.c b/dlls/wpcap/wpcap.c
|
||||
index ae9e482..da911c7 100644
|
||||
--- a/dlls/wpcap/wpcap.c
|
||||
+++ b/dlls/wpcap/wpcap.c
|
||||
@@ -339,3 +339,13 @@ int CDECL wine_wsockinit(void)
|
||||
if (WSAStartup(MAKEWORD(1,1), &wsadata)) return -1;
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+pcap_dumper_t* CDECL wine_pcap_dump_open(pcap_t *p, const char *fname)
|
||||
+{
|
||||
+ return pcap_dump_open(p, fname);
|
||||
+}
|
||||
+
|
||||
+void CDECL wine_pcap_dump(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
|
||||
+{
|
||||
+ return pcap_dump(user, h, sp);
|
||||
+}
|
||||
diff --git a/dlls/wpcap/wpcap.spec b/dlls/wpcap/wpcap.spec
|
||||
index 0e1e208..cf2ed43 100644
|
||||
--- a/dlls/wpcap/wpcap.spec
|
||||
+++ b/dlls/wpcap/wpcap.spec
|
||||
@@ -16,12 +16,12 @@
|
||||
@ cdecl pcap_datalink_val_to_description(long) wine_pcap_datalink_val_to_description
|
||||
@ cdecl pcap_datalink_val_to_name(long) wine_pcap_datalink_val_to_name
|
||||
@ cdecl pcap_dispatch(ptr long ptr ptr) wine_pcap_dispatch
|
||||
-@ stub pcap_dump
|
||||
+@ cdecl pcap_dump(ptr ptr str) wine_pcap_dump
|
||||
@ stub pcap_dump_close
|
||||
@ stub pcap_dump_file
|
||||
@ stub pcap_dump_flush
|
||||
@ stub pcap_dump_ftell
|
||||
-@ stub pcap_dump_open
|
||||
+@ cdecl pcap_dump_open(ptr str) wine_pcap_dump_open
|
||||
@ stub pcap_file
|
||||
@ stub pcap_fileno
|
||||
@ cdecl pcap_findalldevs(ptr ptr) wine_pcap_findalldevs
|
||||
--
|
||||
2.6.4
|
||||
|
@@ -0,0 +1,57 @@
|
||||
From b20a7a0ed29c40ad50c0e43b1f3d1cf3558f492e Mon Sep 17 00:00:00 2001
|
||||
From: Jianqiu Zhang <zhangjianqiu_133@yeah.net>
|
||||
Date: Thu, 7 Jan 2016 16:34:17 +0800
|
||||
Subject: wpcap: Fix crash on pcap_loop
|
||||
|
||||
Signed-off-by: Jianqiu Zhang <zhangjianqiu_133@yeah.net>
|
||||
---
|
||||
dlls/wpcap/wpcap.c | 13 ++++++++++---
|
||||
1 file changed, 10 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/wpcap/wpcap.c b/dlls/wpcap/wpcap.c
|
||||
index da911c7..44e8c2a 100644
|
||||
--- a/dlls/wpcap/wpcap.c
|
||||
+++ b/dlls/wpcap/wpcap.c
|
||||
@@ -95,7 +95,6 @@ static void pcap_handler_callback(u_char *user_data, const struct pcap_pkthdr *h
|
||||
TRACE("(%p %p %p)\n", user_data, h, p);
|
||||
pcb = (PCAP_HANDLER_CALLBACK *)user_data;
|
||||
pcb->pfn_cb(pcb->user_data, h, p);
|
||||
- HeapFree(GetProcessHeap(), 0, pcb);
|
||||
TRACE("Callback COMPLETED\n");
|
||||
}
|
||||
|
||||
@@ -108,10 +107,14 @@ int CDECL wine_pcap_dispatch(pcap_t *p, int cnt,
|
||||
if (callback)
|
||||
{
|
||||
PCAP_HANDLER_CALLBACK *pcb;
|
||||
+ int res;
|
||||
+
|
||||
pcb = HeapAlloc(GetProcessHeap(), 0, sizeof(PCAP_HANDLER_CALLBACK));
|
||||
pcb->pfn_cb = callback;
|
||||
pcb->user_data = user;
|
||||
- return pcap_dispatch(p, cnt, pcap_handler_callback, (unsigned char*)pcb);
|
||||
+ res = pcap_dispatch(p, cnt, pcap_handler_callback, (unsigned char *)pcb);
|
||||
+ HeapFree(GetProcessHeap(), 0, pcb);
|
||||
+ return res;
|
||||
}
|
||||
|
||||
return pcap_dispatch(p, cnt, NULL, user);
|
||||
@@ -201,10 +204,14 @@ int CDECL wine_pcap_loop(pcap_t *p, int cnt,
|
||||
if (callback)
|
||||
{
|
||||
PCAP_HANDLER_CALLBACK *pcb;
|
||||
+ int res;
|
||||
+
|
||||
pcb = HeapAlloc(GetProcessHeap(), 0, sizeof(PCAP_HANDLER_CALLBACK));
|
||||
pcb->pfn_cb = callback;
|
||||
pcb->user_data = user;
|
||||
- return pcap_loop(p, cnt, pcap_handler_callback, (unsigned char*)pcb);
|
||||
+ res = pcap_loop(p, cnt, pcap_handler_callback, (unsigned char *)pcb);
|
||||
+ HeapFree(GetProcessHeap(), 0, pcb);
|
||||
+ return res;
|
||||
}
|
||||
|
||||
return pcap_loop(p, cnt, NULL, user);
|
||||
--
|
||||
2.6.4
|
||||
|
2
patches/wpcap-Several_Fixes/definition
Normal file
2
patches/wpcap-Several_Fixes/definition
Normal file
@@ -0,0 +1,2 @@
|
||||
Fixes: Implement pcap_dump_open and pcap_dump
|
||||
Fixes: Fix possible crash in pcap_loop
|
Reference in New Issue
Block a user