author | Rich Burridge <rich.burridge@oracle.com> |
Tue, 18 Apr 2017 15:20:35 -0700 | |
changeset 7904 | c63c09f88833 |
parent 5798 | 7dcc6a44422d |
permissions | -rw-r--r-- |
5798
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
1 |
# SPARC misalignment bug: 21492790 |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
2 |
# Internal patch. |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
3 |
# Most likely not for upstream. |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
4 |
--- nmap-7.01/nping/ProbeMode.cc 2015-06-27 01:21:53.000000000 -0700 |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
5 |
+++ nmap-7.01/nping/ProbeMode.cc 2016-03-17 09:21:12.931989483 -0700 |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
6 |
@@ -1621,7 +1621,8 @@ |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
7 |
char final_output[65535]; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
8 |
nsock_event_id ev_id; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
9 |
struct timeval *t = (struct timeval *)nsock_gettimeofday(); |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
10 |
- const unsigned char *packet=NULL; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
11 |
+ unsigned char *packet=NULL; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
12 |
+ const unsigned char *pkt = NULL; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
13 |
const unsigned char *link=NULL; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
14 |
size_t linklen=0; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
15 |
size_t packetlen=0; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
16 |
@@ -1633,8 +1634,11 @@ |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
17 |
NpingTarget *trg=NULL; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
18 |
u16 *prt=NULL; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
19 |
u8 proto=0; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
20 |
+ int r = 0; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
21 |
+ unsigned char *p; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
22 |
bool ip=false; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
23 |
- memset(final_output, 0, sizeof(final_output)); |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
24 |
+ |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
25 |
+ (void) std::memset(final_output, 0, sizeof(final_output)); |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
26 |
|
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
27 |
nping_print(DBG_4, "nping_event_handler(): Received callback of type %s with status %s", |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
28 |
nse_type2str(type), nse_status2str(status)); |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
29 |
@@ -1687,7 +1691,18 @@ |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
30 |
case NSE_TYPE_PCAP_READ: |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
31 |
|
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
32 |
/* Read a packet */ |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
33 |
- nse_readpcap(nse, &link, &linklen, &packet, &packetlen, NULL, &pcaptime); |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
34 |
+ nse_readpcap(nse, &link, &linklen, &pkt, &packetlen, NULL, |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
35 |
+ &pcaptime); |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
36 |
+ r = posix_memalign((void**) &p, 8U, (size_t) packetlen); |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
37 |
+ if (r != 0) { |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
38 |
+ nping_warning(QT_2, |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
39 |
+ "posix_memalign failed (%i). trying malloc", r); |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
40 |
+ p = (unsigned char*) safe_malloc(packetlen); |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
41 |
+ } |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
42 |
+ |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
43 |
+ packet = p; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
44 |
+ (void) std::memcpy(const_cast<void*>(reinterpret_cast<const void*>(packet)), |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
45 |
+ const_cast<void*>(reinterpret_cast<const void*>(pkt)), packetlen); |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
46 |
|
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
47 |
/* If we are on a Ethernet network, extract the next packet protocol |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
48 |
* from the Ethernet frame. */ |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
49 |
@@ -1821,6 +1836,8 @@ |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
50 |
} else{ |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
51 |
nping_warning(QT_2, "nping_event_handler(): Unknown status code %d\n", status); |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
52 |
} |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
53 |
+ |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
54 |
+ std::free(packet); |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
55 |
return; |
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
56 |
|
7dcc6a44422d
21492790 nping on SPARC dumps core due to bus error
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
57 |
} /* End of nping_event_handler() */ |