summaryrefslogtreecommitdiff
path: root/ping_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'ping_common.c')
-rw-r--r--ping_common.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/ping_common.c b/ping_common.c
index e91d15c..7a1a3bf 100644
--- a/ping_common.c
+++ b/ping_common.c
@@ -45,7 +45,7 @@ int rtt;
int rtt_addend;
uint16_t acked;
-unsigned char outpack[MAXPACKET];
+unsigned char *outpack;
struct rcvd_table rcvd_tbl;
/* counters */
@@ -84,7 +84,7 @@ double tsum; /* sum of all times, for doing average */
double tsum2;
int pipesize = -1;
-int datalen = DEFDATALEN;
+size_t datalen = DEFDATALEN;
char *hostname;
int uid;
@@ -249,7 +249,7 @@ void drop_capabilities(void)
/* Fills all the outpack, excluding ICMP header, but _including_
* timestamp area with supplied pattern.
*/
-void fill(char *patp, unsigned char *packet, unsigned packet_size)
+void fill(char *patp, unsigned char *packet, size_t packet_size)
{
int ii, jj;
unsigned int pat[16];
@@ -271,8 +271,10 @@ void fill(char *patp, unsigned char *packet, unsigned packet_size)
&pat[12], &pat[13], &pat[14], &pat[15]);
if (ii > 0) {
- unsigned kk;
- for (kk = 0; kk <= packet_size - (8 + ii); kk += ii)
+ size_t kk;
+ size_t max = packet_size < (size_t)(8 + ii) ? 0 : packet_size - (8 + ii);
+
+ for (kk = 0; kk <= max; kk += ii)
for (jj = 0; jj < ii; ++jj)
bp[jj + kk] = pat[jj];
}
@@ -567,7 +569,7 @@ void setup(socket_st *sock)
options |= F_FLOOD_POLL;
if (!(options & F_PINGFILLED)) {
- int i;
+ size_t i;
unsigned char *p = outpack + 8;
/* Do not forget about case of small datalen, fill timestamp area too! */
@@ -612,7 +614,7 @@ void setup(socket_st *sock)
*/
int contains_pattern_in_payload(uint8_t *ptr)
{
- int i;
+ size_t i;
uint8_t *cp, *dp;
/* check the data */
@@ -845,7 +847,7 @@ restamp:
else
write_stdout("\bC", 2);
} else {
- int i;
+ size_t i;
uint8_t *cp, *dp;
print_timestamp();
@@ -884,12 +886,12 @@ restamp:
dp = &outpack[8 + sizeof(struct timeval)];
for (i = sizeof(struct timeval); i < datalen; ++i, ++cp, ++dp) {
if (*cp != *dp) {
- printf(_("\nwrong data byte #%d should be 0x%x but was 0x%x"),
+ printf(_("\nwrong data byte #%zu should be 0x%x but was 0x%x"),
i, *dp, *cp);
cp = (unsigned char *)ptr + sizeof(struct timeval);
for (i = sizeof(struct timeval); i < datalen; ++i, ++cp) {
if ((i % 32) == sizeof(struct timeval))
- printf("\n#%d\t", i);
+ printf("\n#%zu\t", i);
printf("%x ", *cp);
}
break;