editcap: use ws_strtou/i functions.
Change-Id: Ib69241eb04088fe32f53ac4e87911499cf5e9e40 Reviewed-on: https://code.wireshark.org/review/17500 Petri-Dish: Dario Lombardo <lomato@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
parent
468acff2bd
commit
132632bcd9
51
editcap.c
51
editcap.c
@ -88,6 +88,7 @@
|
|||||||
#include <wsutil/str_util.h>
|
#include <wsutil/str_util.h>
|
||||||
#include <ws_version_info.h>
|
#include <ws_version_info.h>
|
||||||
#include <wsutil/pint.h>
|
#include <wsutil/pint.h>
|
||||||
|
#include <wsutil/strtoi.h>
|
||||||
#include <wiretap/wtap_opttypes.h>
|
#include <wiretap/wtap_opttypes.h>
|
||||||
#include <wiretap/pcapng.h>
|
#include <wiretap/pcapng.h>
|
||||||
|
|
||||||
@ -118,7 +119,7 @@ static fd_hash_t fd_hash[MAX_DUP_DEPTH];
|
|||||||
static int dup_window = DEFAULT_DUP_DEPTH;
|
static int dup_window = DEFAULT_DUP_DEPTH;
|
||||||
static int cur_dup_entry = 0;
|
static int cur_dup_entry = 0;
|
||||||
|
|
||||||
static int ignored_bytes = 0; /* Used with -I */
|
static guint32 ignored_bytes = 0; /* Used with -I */
|
||||||
|
|
||||||
#define ONE_BILLION 1000000000
|
#define ONE_BILLION 1000000000
|
||||||
|
|
||||||
@ -285,7 +286,10 @@ add_selection(char *sel, guint* max_selection)
|
|||||||
fprintf(stderr, "Not inclusive ...");
|
fprintf(stderr, "Not inclusive ...");
|
||||||
|
|
||||||
selectfrm[max_selected].inclusive = FALSE;
|
selectfrm[max_selected].inclusive = FALSE;
|
||||||
selectfrm[max_selected].first = (guint)strtoul(sel, NULL, 10);
|
if (!ws_strtou32(sel, NULL, &selectfrm[max_selected].first)) {
|
||||||
|
fprintf(stderr, "editcap: invalid integer conversion: %s\n", sel);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
if (selectfrm[max_selected].first > *max_selection)
|
if (selectfrm[max_selected].first > *max_selection)
|
||||||
*max_selection = selectfrm[max_selected].first;
|
*max_selection = selectfrm[max_selected].first;
|
||||||
|
|
||||||
@ -297,8 +301,14 @@ add_selection(char *sel, guint* max_selection)
|
|||||||
|
|
||||||
next = locn + 1;
|
next = locn + 1;
|
||||||
selectfrm[max_selected].inclusive = TRUE;
|
selectfrm[max_selected].inclusive = TRUE;
|
||||||
selectfrm[max_selected].first = (guint)strtoul(sel, NULL, 10);
|
if (!ws_strtou32(sel, NULL, &selectfrm[max_selected].first)) {
|
||||||
selectfrm[max_selected].second = (guint)strtoul(next, NULL, 10);
|
fprintf(stderr, "editcap: invalid integer conversion: %s\n", sel);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (!ws_strtou32(next, NULL, &selectfrm[max_selected].first)) {
|
||||||
|
fprintf(stderr, "editcap: invalid integer conversion: %s\n", sel);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (selectfrm[max_selected].second == 0)
|
if (selectfrm[max_selected].second == 0)
|
||||||
{
|
{
|
||||||
@ -963,11 +973,11 @@ main(int argc, char *argv[])
|
|||||||
int err_type;
|
int err_type;
|
||||||
guint8 *buf;
|
guint8 *buf;
|
||||||
guint32 read_count = 0;
|
guint32 read_count = 0;
|
||||||
int split_packet_count = 0;
|
guint32 split_packet_count = 0;
|
||||||
int written_count = 0;
|
int written_count = 0;
|
||||||
char *filename = NULL;
|
char *filename = NULL;
|
||||||
gboolean ts_okay;
|
gboolean ts_okay;
|
||||||
int secs_per_block = 0;
|
guint32 secs_per_block = 0;
|
||||||
int block_cnt = 0;
|
int block_cnt = 0;
|
||||||
nstime_t block_start;
|
nstime_t block_start;
|
||||||
gchar *fprefix = NULL;
|
gchar *fprefix = NULL;
|
||||||
@ -1103,17 +1113,11 @@ main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 'c':
|
case 'c':
|
||||||
split_packet_count = (int)strtol(optarg, &p, 10);
|
if (!ws_strtou32(optarg, NULL, &split_packet_count) || split_packet_count == 0) {
|
||||||
if (p == optarg || *p != '\0') {
|
|
||||||
fprintf(stderr, "editcap: \"%s\" isn't a valid packet count\n",
|
fprintf(stderr, "editcap: \"%s\" isn't a valid packet count\n",
|
||||||
optarg);
|
optarg);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (split_packet_count <= 0) {
|
|
||||||
fprintf(stderr, "editcap: \"%d\" packet count must be larger than zero\n",
|
|
||||||
split_packet_count);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'C':
|
case 'C':
|
||||||
@ -1161,13 +1165,7 @@ main(int argc, char *argv[])
|
|||||||
case 'D':
|
case 'D':
|
||||||
dup_detect = TRUE;
|
dup_detect = TRUE;
|
||||||
dup_detect_by_time = FALSE;
|
dup_detect_by_time = FALSE;
|
||||||
dup_window = (int)strtol(optarg, &p, 10);
|
if (!ws_strtou32(optarg, NULL, &dup_window) || dup_window > MAX_DUP_DEPTH) {
|
||||||
if (p == optarg || *p != '\0') {
|
|
||||||
fprintf(stderr, "editcap: \"%s\" isn't a valid duplicate window value\n",
|
|
||||||
optarg);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
if (dup_window < 0 || dup_window > MAX_DUP_DEPTH) {
|
|
||||||
fprintf(stderr, "editcap: \"%d\" duplicate window value must be between 0 and %d inclusive.\n",
|
fprintf(stderr, "editcap: \"%d\" duplicate window value must be between 0 and %d inclusive.\n",
|
||||||
dup_window, MAX_DUP_DEPTH);
|
dup_window, MAX_DUP_DEPTH);
|
||||||
exit(1);
|
exit(1);
|
||||||
@ -1216,7 +1214,10 @@ main(int argc, char *argv[])
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'o':
|
case 'o':
|
||||||
change_offset = (guint32)strtol(optarg, &p, 10);
|
if (!ws_strtou32(optarg, NULL, &change_offset) || change_offset == 0) {
|
||||||
|
fprintf(stderr, "editcap: invalid offset %s\n", optarg);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'r':
|
case 'r':
|
||||||
@ -1224,8 +1225,7 @@ main(int argc, char *argv[])
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
snaplen = (guint32)strtol(optarg, &p, 10);
|
if (!ws_strtou32(optarg, NULL, &snaplen)) {
|
||||||
if (p == optarg || *p != '\0') {
|
|
||||||
fprintf(stderr, "editcap: \"%s\" isn't a valid snapshot length\n",
|
fprintf(stderr, "editcap: \"%s\" isn't a valid snapshot length\n",
|
||||||
optarg);
|
optarg);
|
||||||
exit(1);
|
exit(1);
|
||||||
@ -1314,7 +1314,7 @@ main(int argc, char *argv[])
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (split_packet_count > 0 && secs_per_block > 0) {
|
if (split_packet_count != 0 && secs_per_block != 0) {
|
||||||
fprintf(stderr, "editcap: can't split on both packet count and time interval\n");
|
fprintf(stderr, "editcap: can't split on both packet count and time interval\n");
|
||||||
fprintf(stderr, "editcap: at the same time\n");
|
fprintf(stderr, "editcap: at the same time\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
@ -1376,7 +1376,7 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* Extra actions for the first packet */
|
/* Extra actions for the first packet */
|
||||||
if (read_count == 1) {
|
if (read_count == 1) {
|
||||||
if (split_packet_count > 0 || secs_per_block > 0) {
|
if (split_packet_count != 0 || secs_per_block != 0) {
|
||||||
if (!fileset_extract_prefix_suffix(argv[optind+1], &fprefix, &fsuffix))
|
if (!fileset_extract_prefix_suffix(argv[optind+1], &fprefix, &fsuffix))
|
||||||
goto error_on_exit;
|
goto error_on_exit;
|
||||||
|
|
||||||
@ -1413,7 +1413,6 @@ main(int argc, char *argv[])
|
|||||||
if (nstime_is_unset(&block_start)) {
|
if (nstime_is_unset(&block_start)) {
|
||||||
block_start = phdr->ts;
|
block_start = phdr->ts;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (secs_per_block > 0) {
|
if (secs_per_block > 0) {
|
||||||
while ((phdr->ts.secs - block_start.secs > secs_per_block)
|
while ((phdr->ts.secs - block_start.secs > secs_per_block)
|
||||||
|| (phdr->ts.secs - block_start.secs == secs_per_block
|
|| (phdr->ts.secs - block_start.secs == secs_per_block
|
||||||
|
Loading…
x
Reference in New Issue
Block a user