diff options
Diffstat (limited to 'web/attachments/266554-ping-sscanf.diff')
-rw-r--r-- | web/attachments/266554-ping-sscanf.diff | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/web/attachments/266554-ping-sscanf.diff b/web/attachments/266554-ping-sscanf.diff new file mode 100644 index 0000000..dd16d4b --- /dev/null +++ b/web/attachments/266554-ping-sscanf.diff | |||
@@ -0,0 +1,57 @@ | |||
1 | --- plugins/check_ping.c~ | ||
2 | +++ plugins/check_ping.c | ||
3 | @@ -424,6 +424,7 @@ | ||
4 | { | ||
5 | char buf[MAX_INPUT_BUFFER]; | ||
6 | int result = STATE_UNKNOWN; | ||
7 | + int match; | ||
8 | |||
9 | if ((child_process = spopen (cmd)) == NULL) | ||
10 | die (STATE_UNKNOWN, _("Could not open pipe: %s\n"), cmd); | ||
11 | @@ -440,28 +441,29 @@ | ||
12 | result = max_state (result, error_scan (buf, addr)); | ||
13 | |||
14 | /* get the percent loss statistics */ | ||
15 | - if(sscanf(buf,"%*d packets transmitted, %*d packets received, +%*d errors, %d%% packet loss",&pl)==1 || | ||
16 | - sscanf(buf,"%*d packets transmitted, %*d packets received, +%*d duplicates, %d%% packet loss", &pl) == 1 || | ||
17 | - sscanf(buf,"%*d packets transmitted, %*d received, +%*d duplicates, %d%% packet loss", &pl) == 1 || | ||
18 | - sscanf(buf,"%*d packets transmitted, %*d packets received, %d%% packet loss",&pl)==1 || | ||
19 | - sscanf(buf,"%*d packets transmitted, %*d packets received, %d%% loss, time",&pl)==1 || | ||
20 | - sscanf(buf,"%*d packets transmitted, %*d received, %d%% loss, time", &pl)==1 || | ||
21 | - sscanf(buf,"%*d packets transmitted, %*d received, %d%% packet loss, time", &pl)==1 || | ||
22 | - sscanf(buf,"%*d packets transmitted, %*d received, +%*d errors, %d%% packet loss", &pl) == 1 || | ||
23 | - sscanf(buf,"%*d packets transmitted %*d received, +%*d errors, %d%% packet loss", &pl) == 1 | ||
24 | + match = 0; | ||
25 | + if((sscanf(buf,"%*d packets transmitted, %*d packets received, +%*d errors, %d%% packet loss%n",&pl,&match) && match) || | ||
26 | + (sscanf(buf,"%*d packets transmitted, %*d packets received, +%*d duplicates, %d%% packet loss%n",&pl,&match) && match) || | ||
27 | + (sscanf(buf,"%*d packets transmitted, %*d received, +%*d duplicates, %d%% packet loss%n",&pl,&match) && match) || | ||
28 | + (sscanf(buf,"%*d packets transmitted, %*d packets received, %d%% packet loss%n",&pl,&match) && match) || | ||
29 | + (sscanf(buf,"%*d packets transmitted, %*d packets received, %d%% loss, time%n",&pl,&match) && match) || | ||
30 | + (sscanf(buf,"%*d packets transmitted, %*d received, %d%% loss, time%n",&pl,&match) && match) || | ||
31 | + (sscanf(buf,"%*d packets transmitted, %*d received, %d%% packet loss, time%n",&pl,&match) && match) || | ||
32 | + (sscanf(buf,"%*d packets transmitted, %*d received, +%*d errors, %d%% packet loss%n",&pl,&match) && match) || | ||
33 | + (sscanf(buf,"%*d packets transmitted %*d received, +%*d errors, %d%% packet loss%n",&pl,&match) && match) | ||
34 | ) | ||
35 | continue; | ||
36 | |||
37 | /* get the round trip average */ | ||
38 | else | ||
39 | - if(sscanf(buf,"round-trip min/avg/max = %*f/%f/%*f",&rta)==1 || | ||
40 | - sscanf(buf,"round-trip min/avg/max/mdev = %*f/%f/%*f/%*f",&rta)==1 || | ||
41 | - sscanf(buf,"round-trip min/avg/max/sdev = %*f/%f/%*f/%*f",&rta)==1 || | ||
42 | - sscanf(buf,"round-trip min/avg/max/stddev = %*f/%f/%*f/%*f",&rta)==1 || | ||
43 | - sscanf(buf,"round-trip min/avg/max/std-dev = %*f/%f/%*f/%*f",&rta)==1 || | ||
44 | - sscanf(buf,"round-trip (ms) min/avg/max = %*f/%f/%*f",&rta)==1 || | ||
45 | - sscanf(buf,"round-trip (ms) min/avg/max/stddev = %*f/%f/%*f/%*f",&rta)==1 || | ||
46 | - sscanf(buf,"rtt min/avg/max/mdev = %*f/%f/%*f/%*f ms",&rta)==1) | ||
47 | + if((sscanf(buf,"round-trip min/avg/max = %*f/%f/%*f%n",&rta,&match) && match) || | ||
48 | + (sscanf(buf,"round-trip min/avg/max/mdev = %*f/%f/%*f/%*f%n",&rta,&match) && match) || | ||
49 | + (sscanf(buf,"round-trip min/avg/max/sdev = %*f/%f/%*f/%*f%n",&rta,&match) && match) || | ||
50 | + (sscanf(buf,"round-trip min/avg/max/stddev = %*f/%f/%*f/%*f%n",&rta,&match) && match) || | ||
51 | + (sscanf(buf,"round-trip min/avg/max/std-dev = %*f/%f/%*f/%*f%n",&rta,&match) && match) || | ||
52 | + (sscanf(buf,"round-trip (ms) min/avg/max = %*f/%f/%*f%n",&rta,&match) && match) || | ||
53 | + (sscanf(buf,"round-trip (ms) min/avg/max/stddev = %*f/%f/%*f/%*f%n",&rta,&match) && match) || | ||
54 | + (sscanf(buf,"rtt min/avg/max/mdev = %*f/%f/%*f/%*f ms%n",&rta,&match) && match)) | ||
55 | continue; | ||
56 | } | ||
57 | |||